Pregunta

Tengo una imagen de mi jugador (abajo 2D).El jugador gira para mirar la cámara, y sostiene un arma.Cuando se crean balas, se crean en X e Y.Esto funciona cuando el jugador está orientado a la manera correcta, pero cuando el jugador gira y dispara, las balas van a la dirección correcta, pero no vienen de la pistola.¿Cómo puedo arreglar esto?

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);
}

¿Fue útil?

Solución

Tendrá que determinar el desplazamiento para la pistola (abra la imagen en pintura o prueba y error), y luego gire ese desplazamiento para obtener la posición inicial para la bala.

Algo como lo siguiente debería funcionar: Nota: no probé esto y puede tener tipográficos

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);
}


Fuente: http://en.wikipedia.org/wiki/rotation_(Mathematics)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top