Почему мой SmartEnemy не следует за игроком в моей игре Java и вместо этого идет в верхнюю часть экрана? - PullRequest
0 голосов
/ 22 апреля 2020

Я слежу за серией уроков "Java Программирование: давайте создадим игру" от RealTutsGML на YouTube. Я создал этот класс под названием SmartEnemy, объект которого должен следовать за игроком. Однако когда я запускаю игру и включается SmartEnemy, большую часть времени он перемещается в верхнюю часть экрана и просто остается там. Я пытался найти ответ в Google и использовать предложения в комментариях к видео, но ничего не помогло. У кого-нибудь есть идея, что я могу делать неправильно? Вот код в SmartEnemy, который заставляет его следовать за игроком.

public void tick() {
        x += velX;
        y += velY;

        float diffX = x - player.getX() - 16; 
        float diffY = x - player.getY() - 16;

        float distance = (float) Math.hypot((double)(x - player.getX()), (double)(y - player.getY()));

        velX = (float) ((-1.0/distance) * diffX); 
        velY = (float) ((-1.0/distance) * diffY);

        if(y <= 0 || y >= Game.HEIGHT - 32) velY *= -1; 
        if(x <= 0 || x >= Game.WIDTH - 16) velX *= -1;

        handler.addObject(new Trail(x, y, ID.Trail, Color.green, 16, 16, 0.02F, handler));
    }

1 Ответ

0 голосов
/ 22 апреля 2020

Должно ли это быть y, а не x?

        float diffY = y - player.getY() - 16;
...