Domanda

Ho un'immagine del mio giocatore (top-down 2d).Il giocatore ruota per affrontare la fotocamera e tiene una pistola.Quando vengono creati i proiettili, vengono creati su X e Y del giocatore.Funziona quando il giocatore è rivolto verso il modo giusto, ma quando il giocatore ruota e spara, i proiettili vanno la giusta direzione, ma non venire dalla pistola.Come posso risolvere questo?

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

È stato utile?

Soluzione

Dovrai determinare l'offset per la pistola (aprire l'immagine in vernice o studio ed errore), quindi ruotare che l'offset per ottenere la posizione iniziale per il proiettile.

Qualcosa come il seguente dovrebbe funzionare: Nota - non ho testato questo e potrebbe avere TypoS

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_(mathematics)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top