如何让敌人在失去仇恨后回到原来的位置[问题]
本文关键字:回到原来 位置 问题 仇恨 敌人 失去 | 更新日期: 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',在我看来这更容易阅读