Witam. Tworzę mini gre 2D w Javie. Mam już dosyć sporo rzeczy ale od dłuższego czasu próbuje zrobić z animacjami gracza(ruch w lewo inny obrazek, w prawo inny itd.)
Mój projekt składa się z:
Game(zawiera ogólne instrukcje dot. gry(rysowanie mapy gracza obiektow obsluga zdarzen))
EntityPlayer(zawiera metodę move, opis blokad gracza na danych kafelkach )
Map(jak sama nazwa mówi)
Wpadłem na pomysł aby zrobić warunek, jeśli gracz idzie w lewo jest rysowany w miejscu gracza dany obrazek(EntityPlayer)
if (player.left) {
g.drawImage(pretorian, (int) (xp - 32), (int) (yp - 32), null);
}
Jeśli w prawo to inny obrazek itd.
Jedyny problem jest w sprawdzeniu czy gracz idzie w danym kierunku.Jeśli uruchamiam grę z powyższym fragmentem, to jest biały ekran i wyjątek:
Exception in thread "main" java.lang.NullPointerException
at src.Skatty.EntityPlayer.paint(EntityPlayer.java:244)
at src.Skatty.Game.gameLoop(Game.java:233)
at src.Skatty.Game.<init>(Game.java:177)
at src.Skatty.Game.main(Game.java:503)
Dodam że EntityPlayer jest kompilowany prawidłowo.Poniżej zamieszcze fragmenty metody move itp.
Opis metody move w EntityPlayer:
public boolean move(float dx, float dy) {
float nx = x + dx;
float ny = y + dy;
if (validLocation(nx, ny)) {
x = nx;
y = ny;
ang = (float) (Math.atan2(dy, dx) - (Math.PI / 2));
return true;
}
return false;
}
Ruch(Game):
if ((dx != 0) || (dy != 0)) {
player.move(dx * delta * 0.003f,
dy * delta * 0.003f);
Obsługa klawiszy(Game):
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_A) {
left = true;
System.out.print("left");
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_A) {
left = false;
}
}
Obsluga kierunku(Game):
public void logic(long delta) {
float dx = 0;
float dy = 0;
if (left) {
dx -= 1;
}
if (right) {
dx += 1;
}
if (up) {
dy -= 1;
}
if (down) {
dy += 1;
Jeśli ktoś ma pomysł jak uwzględnić w EntityPlayer ruch gracza w danym kierunku proszę o pomoc.