我正在研究基本的AI,希望我的AI通过特定的视野检测玩家。它附加在AI和AI头上的脚本的确会通过其动画师改变其听到的声音。
当我直接面对玩家时,我能够使AI检测到玩家,但感觉不现实吗?
公共GameObject Player; 公共布尔isFacingPlayer;
void Update(){
// check if AI is facing player
Vector3 dir = Player.transform.position - transform.position;
if (Vector3.Dot(dir, transform.forward) > 0.0f) {
isFacingPlayer = true;
} else {
isFacingPlayer = false;
}
}
我希望有一个特定的视野,例如310。但是不确定如何获得?
答案 0 :(得分:0)
呃,我真的不知道为什么我能问这个问题,如果我能够凭自己的真实逻辑自己解决这个问题。无论如何,如果有问题的话,这里有一个解决方法:
Vector3 targetDir = Player.transform.position - transform.position;
float angleToPlayer = (Vector3.Angle (targetDir, transform.forward));
if (angleToPlayer >= -90 && angleToPlayer <= 90) { // 180 FOV
isFacingPlayer = true;
} else {
isFacingPlayer = false;
}