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 曲线和弹力算法相关推荐

  1. Unity3D 绘制互动琴弦 曲线和弹力算法

    前言 这个是在很早大佬X-mj(https://blog.csdn.net/qq_23879197)的帮助下完成的简单互动琴弦Demo. https://blog.csdn.net/qq_238791 ...

  2. 机器人曲线插值拟合算法研究现状简述

    混沌无形 混沌系统是世界本质,无形之中存在规律.机器人智能化发展从线性过渡到混沌,本号将分享机器人全栈技术(感知.规划.控制:软件.机械.硬件等). 38篇原创内容 公众号 [文末提供原文PDF免费下 ...

  3. 基于STM32F103的步进电机S型曲线加减速算法与实现

    步进电机是将电脉冲信号转变为角位移或线位移的开环控制电机,是现代数字程序控制系统中的主要执行元件,应用极为广泛.在非超载的情况下,电机的转速.停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的 ...

  4. S曲线加减速算法 VS 梯形加减速算法

    设计运动控制系统很多年,突然有人问我S曲线加减速算法跟梯形加减速算法的区别,我竟然拼凑了很多语言都没能讲清楚.作为一个技术男怎能善罢甘休,但介于个人能力有限只能借用网上大牛的讲解搞清楚.苦苦搜索了三天 ...

  5. Unity中的AI算法和实现1-Waypoint

    本文分享Unity中的AI算法和实现1-Waypoint 在Unity中, 我们有一些有趣且常见的AI算法可以研究和使用, 其中最常见的就是怪物的简单AI, 比如在RPG游戏里, 怪物在某些点定点巡逻 ...

  6. unity 卡牌聚拢算法

    unity 卡牌聚拢算法 前言 代码 前言 笔者在做项目时遇到了一个要聚拢手牌,像三国杀里的手牌聚拢的效果 大概效果图: 代码 public Dictionary<int, int> le ...

  7. 本文分享Unity中的AI算法和实现3-有限状态机FSM(下)

    本文分享Unity中的AI算法和实现3-有限状态机FSM(下) 回家生孩子, 暂停了一个多月的更新, 今天重新续上, ^_^. 在上一篇文章中, 我们分享了状态机的基本理论, 然后结合Unity的An ...

  8. 步进电机S型曲线加减速算法与实现

    转载于http://blog.csdn.net/pengzhihui2012/article/details/52228822?locationNum=6 一年前做过的S型曲线加减速算法,再次做的时候 ...

  9. Unity中的AI算法和实现2-有限状态机FSM(上)

    本文分享Unity中的AI算法和实现2-有限状态机FSM(上) 在上一篇文章中, 我们基于Waypoint构建了一个最简单的AI怪物, 这个怪物可以在几个点之间巡逻. 本篇文章会在此基础之上, 添加怪 ...

最新文章

  1. 本地导入Android-PullToRefresh库问题解决
  2. 初探 NS_STRING_ENUM
  3. 理解工作流系统参考模型
  4. python 代理服务器_Python实现HTTP代理服务器
  5. php html5 api,HTML5 File API解读
  6. 构造java_Java构造方法
  7. Adobe Flash Player 10 插件无法注册
  8. oracle登录页面错误,php和oracle的页面登录问题
  9. Git基础之(十五)——分支管理——分支管理策略
  10. iOS应用开发应遵循的10条设计原则
  11. 11 绑定方法与非绑定方法
  12. 2019b-MATLAB-中文界面设置
  13. 【思维导图】演绎推理和归纳推理基础概念
  14. Windows server 下关闭135/139/445端口
  15. DTOI 10.24 测试(被爆屠) orz IcePrincess_1968
  16. 我做过的最好的$ 4.90
  17. Bootstrap3 下拉菜单(Dropdown)
  18. 社群运营,做好社群长期活跃可以从哪些方面入手?
  19. 2022年上海市安全员C证考试试题模拟考试平台操作
  20. Buck电路设计之芯片选择---TI电源器件在电赛中的应用

热门文章

  1. Mac Git 如何设置ssh key
  2. 计算机基础word目录操作题,Word综合操作题 计算机基础
  3. 【愚公系列】2022年04月 现代密码学-MD5
  4. 思科网络学院-网络互联-第七章
  5. Java ibatis批量insert,ibatis批量insert是什么写法?要怎么编写?
  6. 【经验分享】网络剪贴板-PasteMe
  7. Flink-时间和窗口(水位线、窗口、迟到数据的处理等)
  8. 读书笔记之基于龙芯的linux内核探索解析
  9. Java入门学习笔记(一)
  10. Win10安装Microsoft Store应用程序