Problema ao deslocar o cenário em um jogo?

Olá, estou com um problema no meu jogo de naves que estou criando, acontece que quando inicio ele e movimento minha nave o cenário move mais quando a imagem de background acaba da uns defeitos na tela, tanto para a largura quanto para altura.

O código de pintura que estou utilizando é esse:
@Override
public void paint(Graphics g) {
Graphics2D graficos = (Graphics2D) g;

    System.out.printf("X: %d, Y: %d\n", player1.getX(), player1.getY());

    // Desenha o background na tela. É multiplicado por 1 negativo para o cenário girar inversamente a nave.
    graficos.drawImage(fundo, player1.getX() * -1, player1.getY() * -1, null);

    // Desenha o player1 na tela.
    graficos.drawImage(player1.getImagem(), player1.getX(), player1.getY(), this);
    g.dispose();
}

A imagem de background é grande tem 1920 x 1080 queria saber se tem como parar de mover o cenário antes da imagem acabar?

E se você passar as informações “player1.getX() * -1” e “player1.getY() * -1” para variaveis, e fazer um IF em torno do graficos.drawImage() do cenário verificando os limites máximos permitidos p/ deslocamento?

Talvez ajude em algo.

Por que você está movendo o fundo? Se é algo necessário, que tal, ao invés de parar de mover o fundo, você voltá-lo do começo, intercalando a exibição de duas versões iguais do seu background?

Veja esse exemplo aqui: http://blog.sklambert.com/html5-canvas-game-panning-a-background/ , para entender como essa ideia funciona.

Abraço.

1 curtida