【问题标题】:Camera movement using WASD on x/z plane only仅在 x/z 平面上使用 WASD 移动相机
【发布时间】:2013-02-02 04:41:37
【问题描述】:

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

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

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

相对于相机向前移动相机。这会导致你快速落地。向后移动显然会适得其反。想要的效果是在世界上滑动而不会离它更近/更远,无论相机处于什么角度。

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

谢谢, 克里斯

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    (来自 Tetrad,http://Gamedev.stackecxchange.com

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-25
      • 2021-12-19
      • 2013-04-17
      • 2022-08-18
      • 2023-01-21
      相关资源
      最近更新 更多