OnTriggerEnter() 不触发的问题:
两个游戏对象,Hero和Enemy
Hero的有一个子对象Shield具有Sphere Collider组件并且Is Trigger已经勾选。
Hero和子对象都设置在一个Hero的Layer中
Enemy及其子对象都设置在Enemy的Layer中,Physics也设定了两个层级可以发生碰撞
Hero脚本中代码:
void OnTriggerEnter(Collider other)
{
Transform rootT = other.gameObject.transform.root;
GameObject go = rootT.gameObject;
print("Triggered" + go.name);
}
为什么跑起来之后Hero和Enemy相遇总是不能够触发OnTriggerEnter呢?
你的hero和enemy两者符合:双方均有碰撞体至少一方有刚体吗?
OnTriggerEnter是Unity中的一个事件函数,通常用于当两个碰撞器相接触时触发。如果该函数没有被触发,可能是以下原因之一:
碰撞器没有被正确地设置为触发器。在Unity中,需要将一个碰撞器的Is Trigger属性设置为True,才能使其变为触发器,然后才能触发 OnTriggerEnter 事件。
碰撞器的位置或大小不正确。在碰撞器的位置或大小被设置不正确的情况下,可能会导致触发的问题。
碰撞器的刚体组件没有被正确设置。 如果将一个无刚体组件的游戏对象与带刚体组件的游戏对象相撞,则不会触发 OnTriggerEnter 事件。
碰撞器的层或标签没有被正确设置。需要检查碰撞器的层或标签是否与其他碰撞器匹配。
刚体没有足够的速度来创造接触,并且触发要求未满足。在Unity中,要求两个碰撞器必须至少具有一方具有刚体组件,并且至少其中一个刚体必须是动态刚体。
如果您已检查了以上原因但仍无法解决问题,建议检查代码中是否存在其他问题或错误。