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;
}
posted @ 2020-04-27 12:53  他们讨厌我  阅读(1693)  评论(0)    收藏  举报