C#:如何转换父对象,但仅父对象而不是子对象

时间:2018-07-14 20:27:33

标签: c# unity3d 2d parent-child

(我的问题也可以这样表述:如何忽略子级的继承转换,而仍然是子级。)

我知道这听起来有点违反直觉,但是也许有一个很好的方法来做到这一点。

让我解释一下我的情况,这样更有意义。 看下面的图片,您会看到我的角色,他被划分为几个游戏对象(因为我一直是从单位“ Animation”(动画)选项卡创建动画的。)它们在动画和运动方面都相互依赖。当玩家需要翻转时,它们也会翻转。当玩家转弯时,我希望所有的身体部位都移动,但是当翻转部件时,我明确地只希望除了“ Head”对象之外的所有物体都翻转。但是该对象位于“主体”对象中,我正在“命令”该对象进行翻转。所以也许您会说只是选择性地翻转“主体”中的对象?我想我可以做到,但是我也想独立地翻转身体,但是“ Body”(头部)中没有其他项。

我知道一些快速的解决方案,例如断开与父母和孩子的身体和头部的联系,但如果可能的话,我还是希望它还是个孩子。我也知道您可以跟踪身体的位置+头部的偏移量而无需任何子链接。但这不是我想要的。

所以我有办法让头部成为身体的一部分,但仍然忽略了重新缩放身体对头部的继承。

如果您想知道翻转发生的位置,也可以在层次结构中播放器对象的播放器脚本中找到它。另外,如果我忘记了一些信息或代码,您只需要询问即可。

Hierarchy in Unity

1 个答案:

答案 0 :(得分:0)

您可以有另一个名为“ BodyWithoutHead”的组件,将其添加到正文中,并使其成为除头部以外的所有内容的父级。然后只需翻转BodyWithoutHead而不是翻转身体即可。

因此您的层次结构将如下所示:

- Body
    - BodyWithoutHead
        - (everything other than the head)
    - Head