Обнаружение столкновений игр Java 2d
У меня проблема с моей Java-игрой. Я делаю что-то вроде r-type, и это моя первая попытка создать игру на Java. Я сделал космический корабль, ракеты, инопланетян и все работает, но обнаружение столкновений. Кажется, он записал столкновение между игроком и врагом примерно за 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 ответ
Похоже, вы создаете объекты Rectangles с плохими координатами. использование System.out.println(String s)
чтобы напечатать координаты, с помощью которых создается прямоугольник, и проверьте, верны ли они.
Я подозреваю, что у прямоугольника игрока плохие координаты, потому что ракеты работают нормально, как вы сказали.
Можете ли вы выслать мне полный код вашей игры? Я хотел бы попробовать это...