Почему обнаружение игровых коллизий отключено на 500 пикселей? - PullRequest
0 голосов
/ 01 апреля 2012

Я делаю что-то вроде r-типа;Я сделал космический корабль, ракеты, инопланетян, и все работает, кроме обнаружения столкновений.Кажется, он записал столкновение между игроком и врагом примерно за 500 пикселей до того, как пришёл настоящий инопланетянин и сказал, что я проиграл.

Board.java:

public void checkCollisions() {
    Rectangle r1 = al.getBounds();
    ArrayList missiles = Craft.getMissiles();
    for (int w = 0; w < missiles.size(); w++)
    {
         Missile m = (Missile) missiles.get(w);
         Rectangle m1 = m.getRect();
         if (r1.intersects (m1) && al.Alive()) {
             al.isAlive = false;
             m.visible = false;
         }

    }

    Rectangle c = p.getBounds();
    if (c.intersects(r1)) {
        lost = true;
    }

Craft.java:

public Rectangle getBounds() {
    return new Rectangle(x, y, width, height);
}

Enemy.java:

public Rectangle getBounds() {
    return new Rectangle(x, y, width, height);
}

Как я уже сказал, ракеты работают отлично, но обнаружение столкновений между кораблем и инопланетянином обнаруживается в x = 458, а в 1100 - 1200.

1 Ответ

3 голосов
/ 01 апреля 2012

Похоже, вы создаете объекты Rectangles с неверными координатами. Используйте System.out.println(String s), чтобы напечатать координаты, с которыми создан прямоугольник, и проверьте, верны ли они.

Я подозреваю, что у прямоугольника игрока неправильные координаты, потому что ракеты работают нормально, как вы сказали.

Можете ли вы выслать мне полный код вашей игры? Я хотел бы попробовать это ...

...