Comment aligner les balles avec une arme à feu?
-
13-12-2019 - |
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);
}
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);
}