我希望AI避免攻击,但不确定如何获取数据。我制作了警告系统,当warning_box和字符冲突时会注意到AI。您可能只需要看下面的图片就可以理解
警告是在攻击开始之前进行的。这是警告类的相关代码
private void OnTriggerEnter(Collider other)
{
CharacterInteractor enemy = other.GetComponent<CharacterInteractor>();
CharacterInteractor atker = attacker.GetComponent<CharacterInteractor>();
if (enemy != null)
// attacker and warned characters are different team
if (attacker == null || enemy.team != atker.team)
enemy.Warn(this);
}
private void OnTriggerExit(Collider other)
{
CharacterInteractor enemy = other.GetComponent<CharacterInteractor>();
CharacterInteractor atker = attacker.GetComponent<CharacterInteractor>();
if (enemy != null)
if (attacker == null || enemy.team != atker.team) // 상대가 적일 때
enemy.WarnOff(this);
}
但是仅仅知道现在有什么危险是不够的。为了找出最佳避免方向,AI也需要其他警告的数据。所以我在考虑两种样式,但是两种样式都有问题。
瓷砖系统在角色周围使用多个对撞机,以查找接触到的警告。在瓷砖之间放置安全位置时,效果不好。
雷达系统将SphereCast()用于多个半径。我只能得到警告有多近,警告的中心在哪里,无法获得避免的方向。 (也许我不知道正确的Unity API)
我不知道如何解决这些问题。有什么好的方法或例子可以解决问题?
答案 0 :(得分:1)
我与朋友们讨论了这个问题,并得到了比我问的更好的主意。
变得更好
降低成本