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

 

posted @ 2025-11-27 11:03  大背头  阅读(8)  评论(0)    收藏  举报