游戏制作过程中控制物体移动是很常见的功能 但是有时候在用的时候总不能很快的用到合适的方法,现在总结下所有的移动方法(这里的运动都是指平滑运动不包含瞬间移动)
移动物体分为两种方式:1.非物理移动(没有力速度等因素)只需要改变物体的位置Position即可 3.物理运动,这个时候就需要使用Unity中的物理系统
运动方式:1.朝一个方向运动2.向着目标点移动(一般是鼠标点击点)3.由A点到B点(运动方式2的特殊化)
朝一个方向上运动
非物理运动:
1.在Update中对Transform.position中的x,y.z值自加 例如Transform.position.x+=0.1f 0.1f被称为步长
物理运动:
1.Rigidbody组件中的方法: a.Rigidbody.AddForce()方法在某一个方向上施加 力的效果 b.Rigidbody.velocity给物体一个移动速度 c.CharacterController中的方法,由于CharacterController中继承部分的Rigidbody属性,也可以控制物体移动,主要用于制作第一,三人称射击运动
向目标点移动
非物理运动
1.Transform.Translate 例子:Transform.Translate(Vector3.zero*Time.deltaTime)以一米每秒的速度向(0,0,0)点运动
2.Vector3.lerp Vector.Slerp,Vector3.MoveTowards插值
Vector3.lerp(transform.position,targetposition,Time.deltaTime) Slerp主要用于角度弧度的插值运算 MoveTowards在Lerp基础上增加了限制最大速度
3. Vector3.SmoothDamp
该方法是可以平滑的从A逐渐移动到B点,并且可以控制速度,最常见的用法是相机跟随目标。
物理运动:
Righdbody中的Rigidbody.MovePosition方法用于实现向目标点移动