Unity 曲线和弹力算法
Unity 曲线和弹力算法
主要用来记录一下,也算是笔记,以后回头可以再熟悉下。
所以就直接上代码了。
//二阶曲线算法
public static Vector3 Bezier(Vector3 start, Vector3 end, Vector3 tanPoint, float t){Vector3 p0p1 = (1 - t) * start + t * tanPoint;Vector3 p1p2 = (1 - t) * tanPoint + t * end;Vector3 result = (1 - t) * p0p1 + t * p1p2;return result;}
//三阶曲线算法public static Vector3 Interpolate(Vector3 start, Vector3 end, Vector3 tanPoint1, Vector3 tanPoint2, float t){Vector3 position = (2.0f * t * t * t - 3.0f * t * t + 1.0f) * start+ (t * t * t - 2.0f * t * t + t) * tanPoint1+ (-2.0f * t * t * t + 3.0f * t * t) * end+ (t * t * t - t * t) * tanPoint2;return position;}
Spring 弹力算法
F=kx 弹力公式
public class Spring
{// Spring simulation constants//质量private float mMass = 1f;//弹力系数 kprivate float mSpringConstant = 0.2f;//阻尼系数private float mDampingConstant = 0.92f;//静止位置private Vector2 mRestPos;// Spring simulation variables//速度private Vector2 mVelocity;//加速private float mAcceleration;//力private float mForce;//-------------------------------变量//临时位置public Vector2 mTempPos;//自身位置public Vector2 mSelfPos;/// <summary>/// /// </summary>/// <param name="x">x 坐标</param>/// <param name="y">y 坐标</param>/// <param name="k">弹力系数</param>/// <param name="d">阻尼系数</param>/// <param name="m">质量</param>public Spring(float x, float y, float k, float d, float m){mSelfPos = mTempPos = mRestPos = new Vector2(x, y);mSpringConstant = k;mDampingConstant = d;mMass = m;}public void OnUpdate(){mForce = -mSpringConstant * (mTempPos.x - mRestPos.x); // f=-ky 弹力mAcceleration = mForce / mMass; // Set the acceleration, f=ma == a=f/m 加速度mVelocity.x = mDampingConstant * (mVelocity.x + mAcceleration); // Set the velocity 速度mTempPos.x = mTempPos.x + mVelocity.x; // Updated position mForce = -mSpringConstant * (mTempPos.y - mRestPos.y); // f=-ky 弹力mAcceleration = mForce / mMass; // Set the acceleration, f=ma == a=f/m 加速度mVelocity.y = mDampingConstant * (mVelocity.y + mAcceleration); // Set the velocity 速度mTempPos.y = mTempPos.y + mVelocity.y; // Updated position }//根据鼠标移动偏移量 赋值一个x、y方向的弹力public void SetRestPos(float x, float y){mRestPos = new Vector2(x, y);}//鼠标离开区域public void OnReleased(){if (mRestPos == mSelfPos) return;mRestPos = mSelfPos;//rest_posy = ypos;}}
//根据曲线公式 循环得到一个精度为100个点的曲线
float pointStep = 1.0f / 100;
float t;
for (int i = 0; i < 100; i++)
{t = i * pointStep;mLineRenderer.SetPosition(i, BezierTool.Bezier(mStartPos, mEndPos, mControlPos, t));
}
Unity 曲线和弹力算法相关推荐
- Unity3D 绘制互动琴弦 曲线和弹力算法
前言 这个是在很早大佬X-mj(https://blog.csdn.net/qq_23879197)的帮助下完成的简单互动琴弦Demo. https://blog.csdn.net/qq_238791 ...
- 机器人曲线插值拟合算法研究现状简述
混沌无形 混沌系统是世界本质,无形之中存在规律.机器人智能化发展从线性过渡到混沌,本号将分享机器人全栈技术(感知.规划.控制:软件.机械.硬件等). 38篇原创内容 公众号 [文末提供原文PDF免费下 ...
- 基于STM32F103的步进电机S型曲线加减速算法与实现
步进电机是将电脉冲信号转变为角位移或线位移的开环控制电机,是现代数字程序控制系统中的主要执行元件,应用极为广泛.在非超载的情况下,电机的转速.停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的 ...
- S曲线加减速算法 VS 梯形加减速算法
设计运动控制系统很多年,突然有人问我S曲线加减速算法跟梯形加减速算法的区别,我竟然拼凑了很多语言都没能讲清楚.作为一个技术男怎能善罢甘休,但介于个人能力有限只能借用网上大牛的讲解搞清楚.苦苦搜索了三天 ...
- Unity中的AI算法和实现1-Waypoint
本文分享Unity中的AI算法和实现1-Waypoint 在Unity中, 我们有一些有趣且常见的AI算法可以研究和使用, 其中最常见的就是怪物的简单AI, 比如在RPG游戏里, 怪物在某些点定点巡逻 ...
- unity 卡牌聚拢算法
unity 卡牌聚拢算法 前言 代码 前言 笔者在做项目时遇到了一个要聚拢手牌,像三国杀里的手牌聚拢的效果 大概效果图: 代码 public Dictionary<int, int> le ...
- 本文分享Unity中的AI算法和实现3-有限状态机FSM(下)
本文分享Unity中的AI算法和实现3-有限状态机FSM(下) 回家生孩子, 暂停了一个多月的更新, 今天重新续上, ^_^. 在上一篇文章中, 我们分享了状态机的基本理论, 然后结合Unity的An ...
- 步进电机S型曲线加减速算法与实现
转载于http://blog.csdn.net/pengzhihui2012/article/details/52228822?locationNum=6 一年前做过的S型曲线加减速算法,再次做的时候 ...
- Unity中的AI算法和实现2-有限状态机FSM(上)
本文分享Unity中的AI算法和实现2-有限状态机FSM(上) 在上一篇文章中, 我们基于Waypoint构建了一个最简单的AI怪物, 这个怪物可以在几个点之间巡逻. 本篇文章会在此基础之上, 添加怪 ...
最新文章
- 本地导入Android-PullToRefresh库问题解决
- 初探 NS_STRING_ENUM
- 理解工作流系统参考模型
- python 代理服务器_Python实现HTTP代理服务器
- php html5 api,HTML5 File API解读
- 构造java_Java构造方法
- Adobe Flash Player 10 插件无法注册
- oracle登录页面错误,php和oracle的页面登录问题
- Git基础之(十五)——分支管理——分支管理策略
- iOS应用开发应遵循的10条设计原则
- 11 绑定方法与非绑定方法
- 2019b-MATLAB-中文界面设置
- 【思维导图】演绎推理和归纳推理基础概念
- Windows server 下关闭135/139/445端口
- DTOI 10.24 测试(被爆屠) orz IcePrincess_1968
- 我做过的最好的$ 4.90
- Bootstrap3 下拉菜单(Dropdown)
- 社群运营,做好社群长期活跃可以从哪些方面入手?
- 2022年上海市安全员C证考试试题模拟考试平台操作
- Buck电路设计之芯片选择---TI电源器件在电赛中的应用