2015-06-12 4 views
1

Это мой первый вопрос, поэтому извините меня, если я нарушу какие-либо правила или что-то в этом роде.Разработка Java-игр - спрайты сталкиваются?

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

public void checkCollisions() { 
    Rectangle mr = mario.getBounds(); 
    Rectangle gr = goomba.getBounds(); 
    if(mr.intersects(gr)) { 
     System.out.println("Collision detected"); 
    } 
} 

@Override 
public void actionPerformed(ActionEvent e) { 
    updateMario(); 
    checkCollisions(); 
    repaint(); 
} 

Однако это спам метода столкновения даже когда Марио половины экрана от другого спрайта!

Итак, общий вопрос: как я могу заставить систему не спамить сообщение, когда спрайты находятся далеко друг от друга?

Классы: http://pastebin.com/PHWTzSvQ

Я использовал игру ресурса Zetcode кстати.

+2

Что вы хотите сказать? Кроме того, не отправляйте код в другие ссылки. Если это имеет отношение к вашему вопросу, опубликуйте его в вопросе. –

+0

мой вопрос в том, как заставить систему не спамить метод столкновений, когда спрайты находятся далеко друг от друга, как это не должно быть. –

+0

Ну, вы не можете, каждый цикл, вам нужно проверить, что ваш персонаж может «столкнуться» с – MadProgrammer

ответ

1

Я решил.

Вместо метода пересекаются я использовал метод, который превратил расположение спрайтов в строку:

public String getLocationAsString() { 
    return x+" "+y; 
} 

И тогда я использовал это

public void checkCollisions() { 
    if(mario.getLocationAsString().equalsIgnoreCase(goomba.getLocationAsString())) { 
     System.out.println("Collision"); 
    } 
} 

Спасибо за помощь! (Также yay для первого вопроса)

Смежные вопросы