指导行为:抵达行为问题

时间:2015-01-15 02:55:50

标签: java android game-ai

我正在努力在我的OpenGL Android项目中实现转向行为,但是我很难理解为什么我的Arrive行为代码表现得不像它应该的那样。

在更新循环期间,我的程序计算转向力,用于更新移动代理的位置。目前,它的行为与“Seek”行为完全相同,因为它移动到Targetpos中定义的位置,但是当它接近它应该的点时,它不会减速和停止,而是一直向前移动并反复超越目标再次。

对此的任何帮助将不胜感激,下面是代码应该为代理返回适当的转向力。

减速只是1-3编码不同速率的枚举,代理应该减速。

private Vector2 Arrive(Vector2 Targetpos, Deceleration deceleration) {
        Vector2 ToTarget = sub(Targetpos, agentPos);

        //calculate the distance to the target
        float dist = ToTarget.len();

        if (dist > 0.2f) {

            final float DecelerationTweaker = 0.3f;

            //calculate the speed required to reach the target given the desired
            //deceleration
            float speed = dist / ((float) deceleration.value() * DecelerationTweaker);

            //make sure the velocity does not exceed the max
            speed = Math.min(speed, agentMaxSpeed);

            Vector2 DesiredVelocity = mul(ToTarget, speed / dist);

            return sub(DesiredVelocity, agentVelocity);
        }

        return new Vector2(0, 0);
    }

0 个答案:

没有答案