Unity中物体抛物线的实现
来源:互联网 发布:爱普生l351清零软件 编辑:程序博客网 时间:2024/05/17 01:39
定点抛物线的实现
让我们回忆一下初中学得最基本的物理知识
1: S=Vt 距离等于速度x时间(用于抛物线中水平运动)
2: V=at 速度等于加速度x时间(用于抛物线垂直运动)
好啦,就这个2个公式就能搞定啦!
水平运动上的代码:
transform.Translate(transform.forward* horizontalSpeed * Time.fixedDeltaTime, Space.World);
垂直上的运动代码:
transform.Translate(Vector3.up * verticalSpeed * Time.fixedDeltaTime, Space.World);
horizontalSpeed水平上的速度是自己定义的,那么 verticalSpeed 按照物理上的法则,应该是上升速度减小,下降速度增大,由于是定点的抛物线(意思就是已经选好了物体抛物线后的落点),那么根据公式来计算:
t=S/V;也就是物体与落点间的距离除以水平速度,得到物体抛物线经历的时间,由于是匀加速运动,那么上升和下降的时间相同,表示上升的时间为t2= t/2;
那么根据公式:
v=at;时间知道了,加速度是重力加速度(可以自己调整)也就可以求得垂直上的初速度了.
public class Parabolic : MonoBehaviour { public float horizontalSpeed = 30f;//水平上的速度,自己定义 public Transform target; //目标点 public float verticalSpeed; //垂直上的初速度 public float g = 9.81; //重力加速度 public Vector3 need_direction; //当前物体指向目标物体的方向 void Start () { dis = Vector3.Distance(transform.position,target.position);//计算2个物体间距离 need_direction = (target.position - transform.position).normalized;//获得当前物体指向目标物体的方向 float need_time = dis / speed/2f;//公式 verticalSpeed = g * need_time;//计算出垂直上的初速度 } void FixedUpdate () { verticalSpeed = verticalSpeed - g * Time.fixedDeltaTime;//垂直上的初速度随时间的改变 transform.Translate(need_direction* speed * Time.fixedDeltaTime, Space.World);//水平上的运动 transform.Translate(Vector3.up * verticalSpeed * Time.fixedDeltaTime, Space.World);//垂直上的运动 }}
脚本挂在想实现抛物线的物体上.
简单实用.
欢迎更正.
0 0
- Unity中物体抛物线的实现方式
- Unity中物体抛物线的实现
- Unity中物体抛物线的实现方式
- Unity抛物线的脚本
- unity抛物线的运动
- Unity-->实现物体的移动
- Unity中炮弹抛物线运动
- Unity中实现3D物体跳跃
- Unity入门系列||Unity中如何用脚本实现物体的循环移动和旋转
- Unity物体跟随鼠标的实现
- unity 学习 双击一个物体的实现
- Java通过数学函数(抛物线、正弦曲线、椭圆等)控制游戏中物体的运动
- cocos2d 抛物线的实现
- unity中查找物体的方法
- Unity中物体的分图层显示
- unity中物体尺寸的研究
- Unity 实现点击物体
- 如何在Unity中画抛物线
- mysql基础---数据库的管理(一)
- DATATABLE 第二页没有数据
- 归纳笔记014:沙盒
- Codeforces Round #382 (Div. 1) C. Ostap and Tree(树形DP)
- 2016NOMS全国运营峰会——运营行业大咖烧脑盛会
- Unity中物体抛物线的实现
- 杂货铺(RecyclerView,SpannableString,ViewAnimationUtils.createCircularReveal()动画)
- RxAndroid学习指南
- 成交量选股原则
- SQL--sql server无法打开用户默认数据库 登录失败错误4064的解决方法
- 如何关闭mac的SIP
- 离散实验(图的随机生成及欧拉路的确定)
- 指针
- Gitblit的安装及使用