Question

J'ai une image de mon joueur (2D de haut en bas).Le joueur tourne pour faire face à la caméra et maintient une arme à feu.Lorsque des balles sont créées, elles sont créées aux X et Y du joueur.Cela fonctionne lorsque le joueur fait face à la bonne direction, mais lorsque le joueur tourne et tire, les balles vont dans la bonne direction, mais ne viennent pas du pistolet.Comment puis-je résoudre ce problème?

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

Était-ce utile?

La solution

Vous devrez déterminer le décalage du pistolet (ouvrez l'image dans la peinture ou l'essai et l'erreur), puis faites pivoter ce décalage pour obtenir la position initiale pour la balle.

Quelque chose comme ce qui suit devrait fonctionner: note - je n'ai pas testé cela et il peut avoir des fautes de frappe

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


Source: http://fr.wikipedia.org/wiki/rotation_(Mathematics)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top