关于物体移动的方法

public GameObject obj;
Rigidbody abc;
CharacterController Controller;
void Start()
{
abc = GetComponent();
Controller = GetComponent();
}

private void FixedUpdate()
{
    abc.AddForce(new Vector3(0.1f, 0, 0.1f), ForceMode.VelocityChange);//给刚体加上一个瞬时速度变化,忽略它的质量。
    abc.AddForce(new Vector3(0.1f, 0, 0.1f), ForceMode.Acceleration);//给刚体加上一个连续的加速度,忽略它的质量。
    abc.AddForce(new Vector3(0.1f, 0, 0.1f), ForceMode.Force);//利用刚体的质量给刚体增加一个连续的力。
    abc.AddForce(new Vector3(0.1f, 0, 0.1f), ForceMode.Impulse);//利用刚体的质量给刚体增加一个瞬间的力脉冲。
    abc.velocity -= new Vector3(0.1f, 0, 0.1f);//刚体的速度矢量
    Controller.Move(new Vector3(0.1f, 0, 0.1f));//每一帧移动速度快,并且没有模拟重力
    Controller.SimpleMove(new Vector3(0.1f, 0, 0.1f));//每秒运动,有模拟重力
}
void Update()
{
    transform.position += new Vector3(0.01f, 0, 0.01f);//匀速移动
    transform.Translate(new Vector3(0.01f, 0, 0.01f));//匀速移动
    transform.position = Vector3.MoveTowards(transform.position, obj.transform.position, 0.01f);//一个物体向另一个物体移动,直到两个物体位置一致(第一个参数为移动的物体,第二个参数为需要向哪个物体移动,第三个参数为移动速度)

    transform.position = Vector3.Lerp(transform.position, obj.transform.position, 0.01f);//(直线)差值移动(移动速度越来越慢)(适合用于摄像机跟随,使镜头更加舒适)
    transform.position = Vector3.Slerp(transform.position, obj.transform.position, 0.01f);//(球面)差值移动

}

你可能感兴趣的:(个人笔记,C#)