仅在x / z平面上使用WASD的相机移动

时间:2013-02-01 18:42:20

标签: unity3d

我在谷歌搜索中一直戴着我的输入键 - 我有一个基于MouseOrbit.js资产的相机脚本。这一切都很好,但除了基本的轨道和我添加的变焦之外,我还想使用WASD键将相机移动到世界各地。

W键会直接向前移动相机,但会忽略y轴。例如,使用

transform.Translate(Vector3.Forward*Time.Delta*20);

相机向前移动相机。这会让你快速撞到地面。明显地向前移动则恰恰相反。无论相机处于何种角度,所需的效果都会在世界各地滑动而不会越来越近。

我能得到的最接近的是使用Translate()的Space.World参数,但这并没有考虑到我的相机的旋转。我想如果我能考虑到这一点,这将得到解决,但我不清楚如何做到这一点。

谢谢, 克里斯

1 个答案:

答案 0 :(得分:1)

(来自http://Gamedev.stackecxchange.com上的Tetrad)

您不需要使用transform.Translate。只计算相机应该向前移动一定数量的帧(如果按住W键,请执行deltaPos = transform.forward * Time.deltaTime * 20),将该Vector3的Y值设置为零,然后添加delta矢量通过将其添加到当前位置transform.position + = deltaPos;

到原始位置