要在Unity中将摄像机在全局XZ平面上移动,可以使用以下代码示例:
public float speed = 5f; // 摄像机移动速度
void Update()
{
float horizontalInput = Input.GetAxis("Horizontal");
float verticalInput = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(horizontalInput, 0f, verticalInput).normalized * speed * Time.deltaTime;
transform.Translate(movement, Space.World);
}
在上述代码中,我们首先定义了一个名为"speed"的变量,用于控制摄像机的移动速度。
然后,在每一帧的Update函数中,我们使用Input.GetAxis函数来获取玩家的水平和垂直输入。这些输入会在X轴和Z轴上产生一个值,表示玩家的移动方向。
接下来,我们将水平和垂直输入作为一个向量(Vector3)的X和Z分量,然后使用normalized函数将向量的长度归一化为1。这样做是为了保持移动速度的一致性,无论玩家的输入是斜向的还是直线的。
最后,我们将归一化后的向量乘以移动速度和时间增量(Time.deltaTime),然后使用Transform.Translate函数将摄像机在全局XZ平面上移动。我们使用Space.World参数来确保移动是相对于世界坐标系。
使用上述代码,你可以在Unity中实现摄像机在全局XZ平面上的移动。你可以通过调整speed变量来控制移动速度。