破坏对象而不在Unity中创建新对象

时间:2016-06-13 16:27:05

标签: c# unity3d

我正在制作移动统一游戏,其中玩家将用绳索挂住飞岛。我希望这些岛屿有时会被绳子拉到强大的地方时毁坏。

我知道粉碎物体的正常方法是摧毁前一个物体并在同一个地方生成它的部件,但它在我的情况下不会起作用,因为我希望绳子在破碎后保持钩住一块对象(之前被钩住的对象的相同部分)。

我想到的唯一解决方案是让这些对象始终从不同的部分创建,但与关节或​​脚本连接。然后他们可以在某些条件下分成几块。我不确定这个解决方案是好还是有更好的解决方案,如果有人可以帮我解决这个问题会很棒。

1 个答案:

答案 0 :(得分:3)

  

“我知道粉碎物体的正常方法是破坏前一个物体,并在同一个地方生成它们的部分,”

没有任何其他可能性。你就是这样做的。

即使您动态创建新对象,您仍然可以完全按照您在该句子中所说的内容进行操作。

  

“但它在我的情况下不起作用,因为我希望绳子在破碎物体后保持钩住一块(之前被钩住的物体的相同部分)。”

没有任何问题。

你只需将新件挂在绳子上即可。就这么简单。

之前..一个大片“A”并在某个时刻连接到绳子上

之后..七件“B”到“H”。其中一个(说“F”)连接到绳子上。

你已经完成了。

  

我想到的唯一解决方案是让这些对象始终从不同的部分创建,但是用关节或脚本连接。

是的,你绝对可以完全这样做。

请注意,当您说“连接关节或脚本”时。这个更容易

假设你有七件,名为“1”到“7”

有一个名为“Holder”的空游戏对象

只需将7个对象置于“持有者”之下 - 即持有人是父母。

就这么简单 - 没什么可说的。去吧!

将“持有人”视为一个对象。因此,如果您想移动它或其他什么,只需移动“持有者”。

如果您愿意......让我们说小件“3”是附在绳子上的“一个”。

简单地说, 使所有其余的(1,2,4,5,6,7)成为“3”的孩子 。这一切都只是一举一动。这对你来说可能更容易。

再一次,你已经完成了!

关于如何“让父对象的一个​​孩子不再是孩子而成为独立的对象”的好问题

简单,

 smallObject.transform.parent = null;

但更有可能的是,你会有一些“整体”对象,对吗?或者,大物体也可能附着在绳子上。

很简单,将小对象的父级更改为大对象的父级

Transform currentParentOfBigObject;
currentParentOfBigObject = bigObject.transform.parent;
.. create or separate the small objects ..
smallObject.transform.parent = currentParentOfBigObject;
.. perhaps get rid of the big object if relevant ..