在意外对象上调用OnTriggerEnter

时间:2018-03-12 19:46:30

标签: c# unity3d collision-detection

也许我对OnTriggerEnter应该如何运作有误解,但这是我的情况以及它与我的期望有何不同。

我用一个场景创建了一个非常简单的测试项目。我的场景中有三个物体 - 一个玩家,一个敌人和一个攻击。敌人和玩家都有僵硬的身体和箱子碰撞器,这两者都不是触发器。攻击对象有一个盒子对撞机,它是一个触发器。对于脚本,播放器除了将OnTriggerEnter函数记录到控制台之外,其中没有任何内容。敌人有一个简单的脚本,只能以循环模式启用和禁用攻击对象。当攻击被启用时,它会与玩家发生碰撞。

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

我期望发生什么:

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

实际发生的事情:

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

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

1 个答案:

答案 0 :(得分:1)

来自the documentation

  

描述

     

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

     

此消息将发送到触发器对撞机和触摸触发器的刚体(或碰撞器,如果没有刚体)。

强调我的。