如何让敌人在失去仇恨后回到原来的位置[问题]

本文关键字:回到原来 位置 问题 仇恨 敌人 失去 | 更新日期: 2023-09-27 18:12:36

所以基本上我有一个敌人,一旦你足够接近,就会追逐你并试图攻击你。一旦你走得足够远,它就会跑回原来的位置。

我遇到的问题是,一旦它运行回到起点,但没有完全击中点,并不断摔倒,并试图到达那个确切的点…

这是我为这部分编写的代码:

if (inAggroRange()) {
        //In aggro range
            if (!inAttackRange()) {
                chase();
            } else {
                animation.CrossFade(animationAttack.name);
                attack();
                if (animation[animationAttack.name].time > 0.9 * animation[animationAttack.name].length) {
                    impacted = false;
                }
            }
        } else if (!inAggroRange()){
            //Go back to home position
            if (!(transform.position == enemyHomePosition)) {
                animation.CrossFade(animationRun.name);
                transform.LookAt(enemyHomePosition);
                controller.SimpleMove(transform.forward * speed);
            } else {
            //Enemy is at home position
                animation.CrossFade(animationIdle.name);
            }
        }

如何让敌人在失去仇恨后回到原来的位置[问题]

就用

private readonly float maxDistanceToHomePosition = 0.3f; // change this value as you like
...
if((transform.position - enemyHomePosition).magnitude > maxDistanceToHomePosition)
{
    ...
} 
...

你的做法是,敌人试图到达一个特定的点,但如果没有巨大的运气,它总是会结束一点,然后转身再试一次。就像一个高尔夫球手想要打全球,但总是打得太用力。

编辑:也可以考虑使用!=来表示'not equal',在我看来这更容易阅读