【问题标题】:OnTriggerEnter being called on unexpected objectOnTriggerEnter 在意外对象上被调用
【发布时间】:2018-03-13 06:47:53
【问题描述】:

也许我对 OnTriggerEnter 应该如何工作存在误解,但这是我的情况,它与我的预期有何不同。

我创建了一个非常简单的测试项目,只有一个场景。我的场景中有三个对象——玩家、敌人和攻击。敌人和玩家都有刚体和盒子碰撞器,它们都不是触发器。攻击对象有一个盒子对撞机,它是一个触发器。对于脚本,播放器有一个脚本,其中除了将信息记录到控制台的OnTriggerEnter 函数之外什么都没有。敌人有一个简单的脚本,它只是以循环模式启用和禁用攻击对象。启用攻击后,它会与玩家发生碰撞。

带有可克隆项目/代码的 Github:https://github.com/valevalorin/TriggerTest

我预计会发生什么:

攻击对象已启用并与玩家发生碰撞。没有记录控制台输出。玩家对象上没有触发碰撞器,因此永远不应调用它的 OnTriggerEnter

实际发生的情况:

当攻击对象与玩家发生碰撞时,玩家的OnTriggerEnter 函数被调用并将输出记录到控制台。

据我所知,OnTriggerEnter 应该只在实际具有关联触发器的对象上调用。这不是OnTriggerEnter 的工作原理吗?

【问题讨论】:

    标签: c# unity3d collision-detection


    【解决方案1】:

    来自the documentation

    说明

    当 Collider other 进入触发器时调用 OnTriggerEnter。

    此消息被发送到触发器碰撞器和接触触发器的刚体(或碰撞器,如果没有刚体)。

    强调我的。

    【讨论】:

    • 谢谢!我觉得自己像个白痴,没有为此检查文档-感觉很奇怪,以至于我认为我的设置可能在某种程度上是错误的/奇怪的/不可靠的。
    • @Valevalorin 没问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 2022-10-15
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    相关资源
    最近更新 更多