Unity 3D中的旋转问题

时间:2013-05-20 01:07:32

标签: rotation unity3d

我有两个方形的空游戏对象。两者都有一个立方体对象作为子项附加。顶部空GameObject也作为子项附加到较低的一个。如何旋转顶部空GameObject,以便内部立方体对象仍在另一个立方体对象上(右图)?

当我使用transform.localRotationtransform.localEulerAnglestransform.Rotate之类的内容时,顶部对象将始终像左侧图片一样旋转。

Rotation of top empty GameObject

2 个答案:

答案 0 :(得分:1)

这种旋转也意味着物体位置的变化。我认为有两种方法可以解决这个问题:

  1. 使用Transform.RotateAround并指定两者的交集,此处为蓝色Z轴和一些偏移量。也许更容易使用另一个空对象来获取坐标。
  2. A hinge joint。这使您可以完美地配置行为,但它仅适用于非运动对象。因此,您必须应用力,因为顶级对象将受物理引擎的控制。如果这是你想要的,那么取决于游戏的剩余部分。
  3. [更新]
    如果将空GameObject放置在正确的位置(即交点),并将立方体子对象移动其边长的一半,则可以在旋转立方体而不是父对象时获得所需的旋转。如果您需要父项作为独立对象,您可能会引入另一个空,例如:
    • / RotatingAchorEmpty(位于十字路口)
    • / RotatingAchorEmpty / TopEmpty(位置=中心与交叉线之间的距离)
    • / RotatingAchorEmpty / TopEmpty / TopCube(立方体本身)

答案 1 :(得分:0)

在像3ds max或blender这样的3d程序中对立方体进行建模,并将枢轴更改为要旋转的立方体的底部,这比在旋转时更改位置的脚本更容易。