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;
}
上一篇:Unity物理系统踩坑(一)


下一篇:unity学习(四) —— 物理系统之Rigidbody