【发布时间】:2016-04-18 15:38:06
【问题描述】:
我有一个相机,我想沿着 2 个轴(x 和 z)移动。在本地空间中,我们有:
并且由于相机对象是旋转的,在世界空间中我们有:
我想要实现的是:通过用户输入沿 2 个轴移动相机 - 相机从上方看平面,通过按下键盘按钮,用户可以在 4 个平面方向上沿平面滑动。这可以通过在 local space 中操作 transform.position.x 和 transform.position.y 属性完美地工作。
我有以下问题:用户也可以旋转相机对象。通过这样做,我不能再操纵局部空间变换,因为在某些旋转时“向上”开始意味着“向下”等等。
我尝试在世界空间中执行以下操作:
transform.Translate(transform.right * user_input, Space.World);
但这并没有达到我想要的效果,因为 transform.right 抓取了世界空间中的红色向量。
我想做的是:在局部空间沿红色和蓝色向量移动相机,但仍保留世界空间中的坐标。
如果有人对此提供一些意见,我将不胜感激。非常感谢!
【问题讨论】:
标签: c# unity3d translate coordinate-transformation