我在谷歌搜索中一直戴着我的输入键 - 我有一个基于MouseOrbit.js资产的相机脚本。这一切都很好,但除了基本的轨道和我添加的变焦之外,我还想使用WASD键将相机移动到世界各地。
W键会直接向前移动相机,但会忽略y轴。例如,使用
transform.Translate(Vector3.Forward*Time.Delta*20);
相机向前移动相机。这会让你快速撞到地面。明显地向前移动则恰恰相反。无论相机处于何种角度,所需的效果都会在世界各地滑动而不会越来越近。
我能得到的最接近的是使用Translate()的Space.World参数,但这并没有考虑到我的相机的旋转。我想如果我能考虑到这一点,这将得到解决,但我不清楚如何做到这一点。
谢谢, 克里斯
答案 0 :(得分:1)
(来自http://Gamedev.stackecxchange.com上的Tetrad)
您不需要使用transform.Translate。只计算相机应该向前移动一定数量的帧(如果按住W键,请执行deltaPos = transform.forward * Time.deltaTime * 20),将该Vector3的Y值设置为零,然后添加delta矢量通过将其添加到当前位置transform.position + = deltaPos;
到原始位置