位置移动:(fixedUpdate固定帧,Update根据机型,运动学一般使用fixedUpdate)
(刚体,柔体,铰链,碰撞器)
LateUpdate:所有东西运行完之后才运行
适用于单纯移动(不能应用于物理特性) 匀速运动
1.Position发生改变+ - 三维向量Vector3(x,y,z);
适用于单纯移动(不能应用于物理特性)这是个方法 匀速运动
2.tranform.Translate(new Vector3(x,y,z),世界空间(一般不涉及复杂子父级关系不会使用));
适用于有目标点的匀速运动
3.tranform.Position=Vector3.MoveTowards(起始点,目标点,一帧运行多少距离);
适用于移动平滑,可用于摄像机跟随,有目标点的减速运动
4.tranform.Postition=Vector.Lerp(起始位置,目标位置,差值)差值运动(线性差值);
适用于移动平滑,可用于摄像机跟随,有目标点的减速运动
5.tranform.Postition=Vector.Slerp(起始位置,目标位置,差值)差值运动(球形差值);
6.rig=GetComponent(); rig.AddForce给物体添加力 ;
7.rig=GetComponent(); rig.velocity给物体添加速度 += 可以给予一定的加速度;
8.Move 按帧移动(没有重力)
9.SimpleMove 按秒移动(模拟重力)角色控制器绿线碰到地上
代码如下:
public class Move : MonoBehaviour
{
public GameObject Cube;
public Rigidbody rig;
public CharacterController ccc;
private void Start()
{
Cube = GameObject.Find("Cube");
rig = Cube.gameObject.GetComponent();
ccc = Cube.gameObject.GetComponent();
}
void Update()
{
// Cube.transform.position -= new Vector3(1, 0, 0);//适用于匀速运动,不可用于物理特性
// Cube.transform.Translate(new Vector3(0.1f, 0, 0));//适用于匀速运动,作为方法,可以被调用,可以当做事件去添加,不可用于物理特性
// transform.position = Vector3.MoveTowards(transform.position, new Vector3(10, 0, 0), 0.1f);//三个参数:起始点,目标点,一帧位移的距离,目标点可以用目标物体的位置代替
// transform.position = Vector3.Lerp(transform.position, new Vector3(10, 0, 0), 0.1f);//三个变量:起始点,目标点,线性差值,画面平滑,可用于摄像机跟随
// transform.position = Vector3.Slerp(transform.position, new Vector3(10, 0, 20), 0.01f);//三个变量:起始点,目标点,圆形差值,画面平滑,可用于摄像机跟随
}
private void FixedUpdate()
{
// rig.AddForce(new Vector3(10, 0, 0), ForceMode.Force);//力学,给物体添加力
//rig.velocity=new Vector3(10,0,0);//给予一定速度,+= 可实现加速
// ccc.Move(new Vector3(10, 10,0));//每帧运行
ccc.SimpleMove(new Vector3(10, 10, 0));//每秒运行,虚拟重力
////LateUpdate最后运行******************
///运动学一般使用FixedUpdate;
}
}