敌人路径问题

Enemies Path Issue

你好,我有几个小时都无法自己解决的问题,这让我有点尴尬。 我做了一个算法来逐点移动敌人,当路径从左到右时它工作正常。 然而,当路径从右到左时,敌人会立即跳到下一个点,但只有当该点在前一个点下方时,当下一个点在前一个点上方时,程序才能正常运行。

我不知道是什么导致了这个问题。 我希望有人能帮助我,我将不胜感激。

public void update (float dt) {
    if (play) {

        angle = (float)Math.atan2(path.get(waypoint).y - positon.y, path.get(waypoint).x - positon.x);          

        velocity.set((float)Math.cos(angle) * speed, (float)Math.sin(angle) * speed);

        positon.set(positon.x + velocity.x * dt, positon.y + velocity.y * dt);

        if(isWaypointReached(dt)) {
            positon.set(path.get(waypoint).x, path.get(waypoint).y);
            if(waypoint + 1 >= path.size) {
                positon.set(path.first().x, path.first().y);
                waypoint = 1;               
            }
            else 
                waypoint++;
        }
    }
}

我已经尝试过反转 X 轴,但没有成功。

path 是 Vector2 的数组,其中包含每个点的位置。

下一个航点。

private boolean isWaypointReached(float dt) {
    if (path.get(waypoint).x - positon.x <= speed / tolerance * dt && path.get(waypoint).y - positon.y <= speed / tolerance *dt) 
        return true;
}

公差是一个等于 3 的整数。

这里放一张图更清楚。 Show Issue

我看到你的问题了

path.get(waypoint).y - positon.y <= speed / tolerance *dt

在有问题的情况下 return 为真,请尝试使用绝对值

Math.abs(path.get(waypoint).y - positon.y) <= speed / tolerance *dt