将近一周以来,我一直在测试 Unity 是否可以制作游戏。问题如下:我有一个敌人和一个围绕玩家的圆圈,它们都有一个 IsTrigger 处于活动状态的对撞机。在代码中,有一个针对敌人的 OnTriggerEnter 和 OnTriggerExit 事件。如果敌人进入玩家的圈子,则布尔值变为真,并且应该发生其他事情。但只会发生这种情况:敌人直接进入玩家内部,然后 bool 才为真(我测试了很多次,就是这样)即使玩家本身没有碰撞器,只有它周围的圆圈(玩家当然有角色控制器,但这不可能是触发器,对吗?)
敌人有一个简单的 AI 并且总是朝着玩家的方向走,所以它可能只有在玩家在那里时才会触发。因为这似乎发生了什么。代码就在这里:
public GameObject thePlayer;
public GameObject theEnemy;
public float enemySpeed = 0.01f;
public bool attackTrigger = false;
public bool isAttacking = false;
void Update () {
transform.LookAt(thePlayer.transform);
if (attackTrigger == false)
{
enemySpeed = 0.01f;
theEnemy.GetComponent<Animation>().Play("walk");
transform.position = Vector3.MoveTowards(transform.position, thePlayer.transform.position, enemySpeed);
}
if (attackTrigger == true && isAttacking == false)
{
enemySpeed = 0;
theEnemy.GetComponent<Animation>().Play("attack");
StartCoroutine(InflictDamage());
}
}
void OnTriggerEnter()
{
attackTrigger = true;
}
void OnTriggerExit()
{
attackTrigger = false;
}
IEnumerator InflictDamage()
{
isAttacking = true;
yield return new WaitForSeconds(1.1f);
GlobalHealth.currentHealth -= 5;
yield return new WaitForSeconds(0.2f);
isAttacking = false;
}
该代码实际上属于 Jimmy Vegas。我正在从他的 YouTube 教程中学习,并且在他的视频中效果很好。这就是为什么我很困惑。
编辑:敌人无视我的玩家。即使我将碰撞器添加到播放器本身,它也不会触发。如果我关闭了敌人的 IsTrigger,他只会让我走开。我不知道这是什么。