Unity 物體基礎移動方式


基於Transform移動

Transform SetPosition

直接改變物體的位置,適合非物理碰撞的物體移動。

private void Update(){
    transform.position += transform.forward * Time.deltaTime;
}

Transform Translate

與第一種類似,適合非物理碰撞的物體移動。

private void Update(){
    transform.Translate(Vector3.forward * Time.deltaTime);
}

基於Rigidbody移動

Rigidbody MovePosition

private Rigidbody rb;
private void Awake(){
    rb = GetComponent<Rigidbody>();
}
private void Update(){
    Vector3 newPosition = transform.position + (transform.forward * Time.fixedDeltaTime);
    rb.MovePosition(newPosition);
}

Rigidboyd AddForce

給物體施加力的作用力,適合物理類移動。(如果物體存在重力,會相互作用)

public float force = 10;
private Rigidbody rb;
private void Awake(){
    rb = GetComponent<Rigidbody>();
}
private void Update(){
    rb.AddForce(transform.forward * force);
}

Rigidbody SetVelocity

直接給物體設定速度,適合物理類移動

private float velocity = 10;
private Rigidbody rb;
private void Awake(){
    rb = GetComponent<Rigidbody>();
}
private void Update(){
    rb.velocity = transform.forward * velocity;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM