1

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

transform.localRotation当我使用,transform.localEulerAngles或之类的东西时transform.Rotate,顶部对象将始终像左图一样旋转。

顶部空游戏对象的旋转

4

2 回答 2

1

这种旋转也意味着物体位置的变化。我看到两种方法来解决这个问题:

  1. 使用Transform.RotateAround并指定两者的交点,这里是蓝色 Z 轴有一些偏移。也许使用另一个空对象来获取坐标更容易。
  2. 铰链接头。这可以让您完美地塑造行为,但它仅适用于非运动对象。因此,您必须施加力,因为顶部对象将受物理引擎的控制。如果这是你想要的,取决于游戏的剩余部分。
  3. [更新]
    如果你把空GameObject的放置在正确的位置,即交叉点,并将立方体子对象移动其边长的一半,你可以在旋转立方体而不是父对象时获得所需的旋转。如果您需要一个父对象作为独立对象,您可能会引入另一个空对象,例如:
    • /RotatingAchorEmpty(放置在交叉路口)
    • /RotatingAchorEmpty/TopEmpty(位置 = 中心和相交线之间的距离)
    • /RotatingAchorEmpty/TopEmpty/TopCube(立方体本身)
于 2013-05-20T07:51:57.547 回答
0

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

于 2013-08-09T08:16:06.540 回答