我在同一GameObject上使用了几个盒子碰撞器,问题是,是否可能使用
gameObject.getComponent().enabled = false;
分别指定每个碰撞器?请记住,我有几个碰撞器,我希望其中一些保持启用状态,而其他碰撞器则被禁用。
我在同一GameObject上使用了几个盒子碰撞器,问题是,是否可能使用
gameObject.getComponent().enabled = false;
分别指定每个碰撞器?请记住,我有几个碰撞器,我希望其中一些保持启用状态,而其他碰撞器则被禁用。
GetComponentsinChildren<Collider>
来查找所有碰撞器,并检查游戏对象的标签(对应于碰撞器)是否符合我的要求。如果符合,我将执行所需的任务,否则跳过。OnTriggerEnter
或OnCollisionEnter
。我使用委托策略将来自子游戏对象的碰撞传递到我的父游戏对象。你可以通过脚本生成所有的碰撞器
var collider1 = gameObject.AddComponent<BoxCollider>();
var collider2 = ...
...
然后您可以为每个碰撞体设置所有属性
https://docs.unity3d.com/ScriptReference/Collider.html
因此,您可以根据需要使用每个碰撞体的变量
虽然有点老,但或许可以帮到你: 你可以在一个gameObject中获取多个组件:
Collider[] colls = GetComponents<Collider>();
foreach(var col in colls){
col.isTrigger = false;
}
GetComponents
(或GetComponentsInChildren
)找到它们,但是你如何区分它们呢?在这种情况下,我经常会附加一个额外的脚本,通过我在检查器中设置的列表/数组来跟踪其他组件。 - rutter