在 WorldSpace 中沿 2 个轴移动相机
Move camera along 2 axes in WorldSpace
我有一个相机,我想沿 2 个轴(x 和 z)移动。在本地 space 我们有:
并且由于相机对象是旋转的,在世界 space 中我们有:
我想要实现的是:通过用户输入沿 2 个轴移动相机 - 相机从上方观察平面,通过按下键盘按钮,用户可以在 4 个平面方向上沿平面滑动。这通过操纵 transform.position.x 和 transform.position.y 属性在 local space 中完美地工作.
虽然我有以下问题:用户也可以旋转相机对象。通过这样做,我不能再操纵局部 space 变换,因为在某些旋转 "up" 开始意味着 "down" 等
我曾尝试在世界space中做以下事情:
transform.Translate(transform.right * user_input, Space.World);
但这并没有达到我想要的效果,因为 transform.right 抓住了世界 space 中的红色矢量。
我想做的是:在局部 space 中沿红色和蓝色矢量移动相机,但仍保留世界中的坐标 space。
如果有人对此提供一些意见,我将不胜感激。非常感谢!
你说的不是很清楚
但是一个很常见的事情是:
只要有一个持有人对象。如果您愿意,也许可以将其视为 "camera car"。始终保留那个 "square",并四处移动它。然后,将相机作为该对象的子对象。
然后您可以旋转(或您正在做的任何事情)子对象。当你想要 "pure" 运动时,你可以移动 "holder" 对象。
在 Unity 中这样做非常普遍,几乎不可避免。
同样,我不知道你在问什么 :) 但希望这能解决问题。
还有一件事:您的意思可能是您希望用户四处移动对象,但是对象始终停留在地面上。如果这就是您的意思,一种方法是:在每一帧的末尾强制世界 z 位置为零(也就是说,通过在您的更新中添加一行代码)。这样做很常见,它会让你前进。或者,如果您使用的是 Rigidbody,您会很高兴地知道 Inspector 中确实有一个复选框选择器用于限制各个轴上的移动。
我有一个相机,我想沿 2 个轴(x 和 z)移动。在本地 space 我们有:
并且由于相机对象是旋转的,在世界 space 中我们有:
我想要实现的是:通过用户输入沿 2 个轴移动相机 - 相机从上方观察平面,通过按下键盘按钮,用户可以在 4 个平面方向上沿平面滑动。这通过操纵 transform.position.x 和 transform.position.y 属性在 local space 中完美地工作.
虽然我有以下问题:用户也可以旋转相机对象。通过这样做,我不能再操纵局部 space 变换,因为在某些旋转 "up" 开始意味着 "down" 等
我曾尝试在世界space中做以下事情:
transform.Translate(transform.right * user_input, Space.World);
但这并没有达到我想要的效果,因为 transform.right 抓住了世界 space 中的红色矢量。
我想做的是:在局部 space 中沿红色和蓝色矢量移动相机,但仍保留世界中的坐标 space。
如果有人对此提供一些意见,我将不胜感激。非常感谢!
你说的不是很清楚
但是一个很常见的事情是:
只要有一个持有人对象。如果您愿意,也许可以将其视为 "camera car"。始终保留那个 "square",并四处移动它。然后,将相机作为该对象的子对象。
然后您可以旋转(或您正在做的任何事情)子对象。当你想要 "pure" 运动时,你可以移动 "holder" 对象。
在 Unity 中这样做非常普遍,几乎不可避免。
同样,我不知道你在问什么 :) 但希望这能解决问题。
还有一件事:您的意思可能是您希望用户四处移动对象,但是对象始终停留在地面上。如果这就是您的意思,一种方法是:在每一帧的末尾强制世界 z 位置为零(也就是说,通过在您的更新中添加一行代码)。这样做很常见,它会让你前进。或者,如果您使用的是 Rigidbody,您会很高兴地知道 Inspector 中确实有一个复选框选择器用于限制各个轴上的移动。