在意外对象上调用 OnTriggerEnter
OnTriggerEnter being called on unexpected object
也许我对 OnTriggerEnter
应该如何工作有误解,但这是我的情况,它与我的预期有何不同。
我创建了一个非常简单的测试项目,只有一个场景。我的场景中有三个对象——玩家、敌人和攻击。敌人和玩家都有刚体和盒子碰撞体,两者都不是触发器。攻击对象有一个盒子碰撞器,它是一个触发器。对于脚本,播放器有一个脚本,除了一个将信息记录到控制台的 OnTriggerEnter
函数之外什么都没有。敌人有一个简单的脚本,它只是以循环模式启用和禁用攻击对象。启用攻击后,它会与玩家发生碰撞。
Github 可克隆 project/code:https://github.com/valevalorin/TriggerTest
我希望发生的事情:
攻击对象启用并与玩家发生碰撞。没有记录控制台输出。播放器对象上没有触发碰撞器,因此永远不应调用它 OnTriggerEnter
。
实际发生了什么:
当攻击对象与玩家发生碰撞时,玩家的 OnTriggerEnter
函数将被调用并将输出记录到控制台。
据我所知,OnTriggerEnter
只应在实际具有与之关联的触发器的对象上调用。这不是 OnTriggerEnter
的工作方式吗?
Description
OnTriggerEnter is called when the Collider other enters the trigger.
This message is sent to the trigger collider and the rigidbody (or the collider if there is no rigidbody) that touches the trigger.
强调我的。
也许我对 OnTriggerEnter
应该如何工作有误解,但这是我的情况,它与我的预期有何不同。
我创建了一个非常简单的测试项目,只有一个场景。我的场景中有三个对象——玩家、敌人和攻击。敌人和玩家都有刚体和盒子碰撞体,两者都不是触发器。攻击对象有一个盒子碰撞器,它是一个触发器。对于脚本,播放器有一个脚本,除了一个将信息记录到控制台的 OnTriggerEnter
函数之外什么都没有。敌人有一个简单的脚本,它只是以循环模式启用和禁用攻击对象。启用攻击后,它会与玩家发生碰撞。
Github 可克隆 project/code:https://github.com/valevalorin/TriggerTest
我希望发生的事情:
攻击对象启用并与玩家发生碰撞。没有记录控制台输出。播放器对象上没有触发碰撞器,因此永远不应调用它 OnTriggerEnter
。
实际发生了什么:
当攻击对象与玩家发生碰撞时,玩家的 OnTriggerEnter
函数将被调用并将输出记录到控制台。
据我所知,OnTriggerEnter
只应在实际具有与之关联的触发器的对象上调用。这不是 OnTriggerEnter
的工作方式吗?
Description
OnTriggerEnter is called when the Collider other enters the trigger.
This message is sent to the trigger collider and the rigidbody (or the collider if there is no rigidbody) that touches the trigger.
强调我的。