我有一个关于修改旋转变换位置的问题。例如,
我已经围绕x轴旋转了图片中显示的对象。然后我想沿着它的y轴(黄色箭头)移动它。为了实现这一点,我使用像
这样的代码 transform.localPosition = new Vector3(transform.position.x, newY, transform.position.z);
其中newY表示我想要给对象变换的新y值。
但结果却是如此
显然,物体绕世界y轴上升。 那么我怎么能用它自己的y轴(黄色箭头)?
答案 0 :(得分:1)
将transform.up * distance_to_move
添加到对象的位置,以沿着自己的旋转Y轴移动它。
答案 1 :(得分:0)
原因是图片中显示的对象没有父对象。在这种情况下,transform.localPosition与transform.position。相同。
您可以在世界轴上计算自己的y轴方向,然后移动它。例如,您可以使用Transform.TransformDirection将方向从本地空间转换为世界空间。
Vector3 RelativeDirection = gameObject.transform.TransformDirection(0, 1, 0);
RelativeDirection可能是您想要的方向。