unity3d 同一物体上的Unity多重碰撞器

yb3bgrhw  于 2023-04-21  发布在  其他
关注(0)|答案(3)|浏览(309)

我在同一个游戏对象上使用了几个方块碰撞器,问题是,是否可以分别使用
getComponent().enabled = false;
请记住,我有几个碰撞器,我希望他们中的一些保持启用,而其他人将被禁用。

cfh9epnr

cfh9epnr1#

我所做的是创建空的子游戏对象[每个碰撞器一个游戏对象]并为它们分配碰撞器,然后我会为这些子对象分配标签[在您的情况下,它们可以是'AlwaysActive'和'SwitchingActive'或您可以想出的任何更好的名称]。
然后在父对象中,我将使用GetComponentsinChildren<Collider>查找所有碰撞器,并检查(相应碰撞器的)GameObject的标记是否符合我的要求。如果符合,我将执行所需的任务,否则跳过它。
注意:子游戏对象上的碰撞器不会调用父脚本中的OnTriggerEnterOnCollisionEnter。我使用委托策略从子游戏对象到我的父游戏对象获得碰撞。

fkaflof6

fkaflof62#

您可以通过脚本生成所有碰撞器

var collider1 = gameObject.AddComponent<BoxCollider>();  
var collider2 = ...  
...

然后你可以设置每个碰撞器的所有属性
https://docs.unity3d.com/ScriptReference/Collider.html
所以你可以按你想要的那样通过it变量来使用每一个碰撞器

v09wglhw

v09wglhw3#

老了,但可能有帮助:你可以在一个gameObject中得到多个组件:

Collider[] colls = GetComponents<Collider>();
             foreach(var col in colls){
                 col.isTrigger = false;
             }

相关问题