多种移动模式C#

位置移动:(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;
        
    }
}

你可能感兴趣的:(多种移动模式C#)