gpt4 book ai didi

c# - 在不在 Unity 中创建新对象的情况下打碎对象

转载 作者:太空宇宙 更新时间:2023-11-03 23:14:17 24 4
gpt4 key购买 nike

我正在制作移动统一游戏,其中玩家将用绳子钩住飞岛。我希望这些岛屿有时会在被绳索拉得过紧时遭到破坏。

我知道打碎物体的正常方法是破坏前一个物体并在同一个地方生成它的部件,但在我的情况下它不起作用,因为我希望绳子在打碎物体后保持钩在一 block 上(它之前 Hook 的对象的同一部分)。

我想到的唯一解决方案是让这些对象始终由单独的部分创建,但与关节或​​脚本连接。然后它们可以在某些条件下分解成单独的部分。我不确定这个解决方案是否好,或者是否有更好的解决方案,如果有人可以帮助我,那就太好了。

最佳答案

"I know that normal way of shattering objects is to destroy previous object and spawn its parts at the same place,"

没有任何其他可能性。这就是您的做法。

即使您动态地创建新对象,您仍然完全按照您在这句话中说的去做。

"but it won't work in my case, because I want the rope to remain hooked to one piece after shattering the object (same part of the object that it was hooked to before)."

没有任何问题。

您只需将新部件卡在绳子上即可。就这么简单。

在 .. 一大块“A”之前并在某个点连接到绳子上

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

大功告成。

The only solution that came to my mind is to have these objects always created from separate parts, but connected with joints or script.

是的,你完全可以做到这一点。

请注意,当您说“与关节或脚本连接”时。那要容易得多!

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

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

只需将 7 个对象“置于”holder 下 - 即 holder 是父对象。

就这么简单 - 没什么。加油!

将“holder”视为一个对象。因此,如果您想移动它或其他任何东西,只需移动“holder”即可。

如果你愿意......假设小块“3”是附着在绳子上的“一个”。

简单地说,让所有其余的 (1,2,4,5,6,7) 成为“3”的 child 。这一切都会像一件事一样简单地移动。这对您来说可能更容易。

再一次,你完成了!


关于如何“使父对象的一个​​子对象不再是子对象并成为单独的对象”这个好问题

简单,

 smallObject.transform.parent = null;

但更有可能的是,您会有一些“整体”对象,对吧?或者,大 object 可能系在绳子上。

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

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 ..

关于c# - 在不在 Unity 中创建新对象的情况下打碎对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37794789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com