Unity 中的对象不会触发,尽管碰撞器和代码是正确的

问题描述

近一周以来,我一直在测试 Unity 制作游戏。问题如下: 我有一个敌人和一个围绕玩家的圆圈,它们都有一个 IsTrigger 活动的碰撞器。在代码中,有一个针对敌人的 OnTriggerEnter 和 OnTriggerExit 事件。如果敌人进入玩家的圈子,则 bool 为真,其他事情应该发生。但只有这种情况发生: 即使玩家本身没有碰撞器,只有围绕它的圆圈(玩家当然有一个角色),敌人才会进入玩家内部,然后布尔值才变为真(我测试了很多次,就是这样)控制器,但这不能成为触发器,对吗?)

敌人有一个简单的人工智能并且总是朝着玩家的方向走,所以它可能只在他在那里时触发。因为这似乎发生了什么。代码在这里

ftExtra

代码实际上属于吉米维加斯。我正在从他的 YouTube 教程和他的视频中学习它运行良好。这就是为什么我如此困惑。

编辑:敌人无视我的玩家。即使我将碰撞器添加到播放器本身,它也不会触发。如果我关闭了来自敌人的 IsTrigger,他只会让我离开。我不知道这是什么。

解决方法

在编辑器中不要对两个对象都使用 isTrigger。只对一个对象使用它。

,

https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnTriggerStay.html

" 仅当其中一个碰撞体也附加了刚体时才会发送触发事件 "

两个游戏对象都必须包含一个碰撞器组件。必须启用 Collider.isTrigger,并包含 Rigidbody。

,

尝试使用 void OnTriggerEnter(Collider collider){ ... } 函数。