【问题标题】:Unity multiple collider on same object在同一对象上统一多个对撞机
【发布时间】:2015-07-19 21:40:24
【问题描述】:

我在同一个游戏对象上使用了多个盒子碰撞器,问题是,是否可以使用
分别引用这些碰撞器中的每一个 gameObject.getComponent().enabled = false;
请记住,我的碰撞器很少,我希望它们中的一些保持启用状态,而其他的将被禁用。

【问题讨论】:

  • 你可以用GetComponents(或GetComponentsInChildren)找到它们,但是你怎么区分它们呢?在这种情况下,我经常会附加一个额外的脚本,通过我在检查器中设置的列表/数组来跟踪其他组件。
  • 是的,这正是我希望在统一 5 中他们已经对碰撞器进行编号或命名的问题......真的令人沮丧:/
  • 您可以将每个对撞机保存在一个数组中,然后逐个访问它们。您是否必须知道哪个是哪个,或者您只是将它们放在数组中,以便您可以使用索引访问它们?
  • 特别是问题得到了解决,因为我只需要 3 个对撞机,这使得有一个 poly + box + circle 成为可能,然后很容易单独引用每一个,但我假设超过 3 个对撞机,一个对撞机数组是必须的

标签: unity3d unityscript unity3d-2dtools


【解决方案1】:

我所做的是创建空的子游戏对象 [每个对撞机一个游戏对象] 并为它们分配对撞机,然后我会为这些孩子分配标签 [在您的情况下,它们可以是“AlwaysActive”和“SwitchingActive”或其他更好的你可以想出的名字]。

然后在父级中,我将使用GetComponentsinChildren<Collider> 查找所有对撞机,并检查(相应对撞机的)游戏对象的标签是否符合我的要求。如果是,我将完成我需要的任务,否则跳过它。

注意: 子 GameObjects 上的碰撞器不会在父脚本中调用 OnTriggerEnterOnCollisionEnter。我使用委托策略将碰撞从子游戏对象获取到我的父游戏对象。

【讨论】:

  • “注意:子游戏对象上的碰撞器不会在父脚本中调用 OnTriggerEnter 或 OnCollisionEnter。” --- 这就是我要找的信息,谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
  • 2020-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 2021-10-15
相关资源
最近更新 更多