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.deltaTime);
	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;
}

猜你喜欢

转载自www.cnblogs.com/tamentaoyanwo/p/12785968.html