我如何重新调整对象的坐标轴?

我昨天在Unity中度过了一段时间,试图从一个水平圆柱体上发射一个球体(就像一个大炮的球)。 我正在使用Vector3.forward,但球体不断从缸的顶部,而不是前面出来。 有人建议,而不是使用Vector3.up,果然,它的工作!

气缸默认是垂直的。 所以,当我旋转圆柱90度使其平坦时,局部轴保持不变。 圆柱体的相对前端保持在同一点,所以当我开启球体时,它会popup新的“顶部”,而不是像“前”那样在我看来。 如果我碰巧面对另一种方式,那么我将不得不在Vector3.down中进行reflection。

我如何重新调整/重置对象的坐标轴以符合我的期望? (如果我不能,我怎么能通过查找一个对象的方向来判断?)

单击场景中的对象,然后查看“检查器”中的“旋转”值。 这将告诉你哪种方式的对象是绝对的方向。

如果方向与预期的坐标轴不匹配(例如,90度closures,或者对于给定的方向使用不直观的坐标轴),则不能更改对象本身的坐标轴。 相反,您可以使用“父变换”,如下所示:

创建一个空的GameObject作为你的对象的父对象,并将其变换与你的模型的预期轴alignment。 现在使用父变换来引用和操作子对象。

尝试使用transform.uptransform.right而不是Vector3 。 Vector3采用世界坐标和transform.up考虑到变换的方向。

但是如果你的模型没有被建模到在建模器程序中使轴z位于前面,那么你不能把它排列在一起