Pergunta

Eu tenho uma imagem do meu player (2D de cima para baixo).O jogador gira para ficar de frente para a câmera e segura uma arma.Quando os marcadores são criados, eles são criados nos pontos x e y do jogador.Isso funciona quando o jogador está voltado para o lado certo, mas quando o jogador gira e atira, as balas vão na direção certa, mas não vêm da arma.Como posso consertar isso?

public void fire() {
    angle = sprite.getRotation();
    System.out.println(angle);
    x = sprite.getX();
    y = sprite.getY();

    Bullet b = new Bullet(x, y, angle);
    Utils.world.addBullet(b);
}
Foi útil?

Solução

Você terá que determinar o deslocamento da arma (abrir a imagem no Paint ou tentativa e erro) e depois girar esse deslocamento para obter a posição inicial da bala.

Algo como o seguinte deve funcionar: Nota - eu não testei isso e pode haver erros de digitação

public void fire() {
    angle = sprite.getRotation();
    System.out.println(angle);
    x = sprite.getX();
    y = sprite.getY();

    double bulletX = x + (gunOffsetX * Math.cos(angle) - gunOffsetY * Math.sin(angle);
    double bulletY = y + (gunOffsetX * Math.sin(angle) + gunOffsetY * Math.cos(angle);

    Bullet b = new Bullet(bulletX , bulletY , angle);
    Utils.world.addBullet(b);
}

Fonte: http://en.wikipedia.org/wiki/Rotation_(matemática)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top