1. 程式人生 > >關於unity中物體移動

關於unity中物體移動


using UnityEngine;

public class Delete : MonoBehaviour {

    CharacterController charaController;
    Vector3 TargetPosition;
    Transform thisTransform;
    Rigidbody rigid;
    public  GameObject TargetObject;
    public float MajorSpeed;
    public Vector3 currentV;

    void Start () {
        thisTransform = GetComponent<Transform>();
        //rigid = GetComponent<Rigidbody>();
        //charaController = GetComponent<CharacterController>();
       
    }
    
    // Update is called once per frame
    void Update () {
        TargetPosition = TargetObject.GetComponent<Transform>().position;

        //是一個加速再減速的過程,距離近時會有卡頓(速度突然降下來)的感覺
        //transform.position = Vector3.Lerp(thisTransform.position, TargetPosition, MajorSpeed);

        //Perfect,速度可以改成一個函式,但這種每幀呼叫的語句,當場景中有大量物體時會很卡
        //transform.position = Vector3.MoveTowards(thisTransform.position, TargetPosition, MajorSpeed);

        //效果還不錯,但是目標點位置不確定的情況下,時間引數怎麼算
        //transform.position = Vector3.SmoothDamp(thisTransform.position,TargetPosition,ref currentV,5f,1f);

        //無法有Y軸方向的移動
        //thisTransform.LookAt(TargetPosition);
        //charaController.SimpleMove(thisTransform.forward * MajorSpeed);

        //精確度不高
        //if(TargetPosition != thisTransform.position){
        //    rigid.AddForce(TargetPosition);
        //}
    }
}