我正在研究基本的人工智能,希望我的人工智能能够通过特定的视野来检测玩家。它附加在AI和AI头上的脚本确实与它的动画师一起听到了。
我能够让AI在直接面对玩家的时候检测到玩家,但感觉不现实?
公共GameObject播放器;公共bool 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。但是不确定如何得到它?
发布于 2019-04-24 16:13:37
嗯,我真的不知道为什么我会问这个问题,如果我能用真正的逻辑自己解决这个问题。无论如何,如果它对任何人有帮助,这里有一个解决方案:
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;
}
https://stackoverflow.com/questions/55825197
复制相似问题