【问题标题】:Detect player by specific field of view通过特定视野检测玩家
【发布时间】:2019-09-13 11:08:33
【问题描述】:

我正在研究基本 AI,并希望我的 AI 能够通过特定视野检测玩家。它附加在 AI 和 AI 头上的脚本确实让动画师听到了。

我可以让AI在直接面对玩家时检测到玩家,但是感觉不真实?

公共游戏对象播放器; public bool isFacingPlayer;

无效更新(){

    // 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。但不确定如何获得?

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    呃,我真的不知道我为什么要问这个问题,如果我能够用真正的逻辑自己弄清楚的话。无论如何,如果它可以帮助任何人,这里有一个修复:

    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;
            }
    

    【讨论】:

    猜你喜欢
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 2019-06-26
    • 2021-09-07
    相关资源
    最近更新 更多