Unity中空间数值变化的几种主要方式(position、rotation、scale等)
以物体的位移为例
1、直接赋值position
// 在Update中每一帧移动 void Update() { // 向前移动(基于物体自身坐标系) transform.position += transform.forward * Time.deltaTime * speed; // 向右移动(基于世界坐标系) transform.position += Vector3.right * Time.deltaTime * speed; }
public Transform target; // 目标位置 public float smoothSpeed = 0.125f; // 0~1 百分比 void Update() { Vector3 desiredPosition = target.position;
// 每帧移动剩余距离的12.5%,越靠近目标越慢 Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed); transform.position = smoothedPosition; }
public Transform target; public float speed = 5f; void Update() { float step = speed * Time.deltaTime;
// 每帧移动step距离,直到到达目标 transform.position = Vector3.MoveTowards(transform.position, target.position, step); }
2、使用Translate()方法,相对位移
void Update() { // 相对自身坐标系移动 transform.Translate(Vector3.forward * Time.deltaTime * speed); // 相对世界坐标系移动(第二个参数设为Space.World) transform.Translate(Vector3.right * Time.deltaTime * speed, Space.World); }

浙公网安备 33010602011771号