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