【问题标题】:OnTriggerExit event missing when object become disable对象禁用时缺少 OnTriggerExit 事件
【发布时间】:2018-03-06 17:24:00
【问题描述】:

我正在停止电车动画,因为它使用 OnTriggerEnter 与汽车碰撞器相撞,并在 TriggerExit 上再次启动电车动画。它工作正常,但问题是当我的汽车对象禁用时,OnTriggerExit 事件丢失/跳过。喜欢

  • 有轨电车撞车并停下(OnTriggerEnter 已执行)
  • 汽车对象被禁用(OnTriggerExit 错过)

现在,你会问为什么汽车对象会禁用?答案是汽车对象在相机周围生成,如果我将相机移动到某个位置,它将在该位置生成汽车对象,并将从以前的位置删除汽车(请记住汽车生成系统是第三方系统,我无法更改它,它是dll)。

【问题讨论】:

  • OnTriggerExit 无论如何都不起作用,因为该对象已被禁用。所以,你应该找到一个替代方案。当汽车被禁用时,电车不应该能够移动吗?您可以在汽车被禁用时设置一个小延迟,然后启动电车。
  • 是的,您是对的,感谢您的确认。我已经发布了这个问题,以便有人为我提供替代方案。
  • 实际上汽车禁用产卵和禁用机制不在我手中,正如我在问题中所说的那样。
  • 在这种情况下,您可以在汽车预制件中添加自定义脚本,并在其 OnDisable 函数中向您的 trum 发送消息。
  • 是的,这可以是一个解决方案,让我试试。如果它会工作,我会告诉你。那么你应该回答它。

标签: c# unity3d


【解决方案1】:

如果汽车被禁用,您将不会收到 OnTriggerExit 事件

你可以做的是:

  • 如果您对汽车对象有足够的控制权(即使很难使用 dll):将汽车放入子对象中。汽车父级有碰撞器并且没有被禁用。只有具有汽车视觉效果的子对象才会被禁用。然后你就可以得到事件了

  • 如果第一个解决方案不适合您,您还可以向汽车添加一个脚本,在调用 OnDisable 时触发事件。如果您可以在不希望触发事件的其他情况下禁用汽车,这可能会更复杂

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 1970-01-01
    • 2013-09-05
    • 2021-04-11
    • 1970-01-01
    相关资源
    最近更新 更多