基於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;
}