2016-04-30 12 views
0

Ich versuche, ein Shooter-Spiel zu machen, und beim Versuch, die Feinde gegen den Spieler Gesicht, versuchte ich Trigonometrie zu verwenden, um die notwendige Drehung, aber den Code zu finden hat nicht funktioniert, und der Feind rotierte unregelmäßig. Dies ist der Code:SFML 2.1 wie man ein Sprite Gesicht ein anderes Sprite

void face(sf::Sprite& target, sf::Sprite& subject){ 
    int adjacent = subject.getPosition().x - target.getPosition().x; 
    int opposite = target.getPosition().y - subject.getPosition().y; 

    if (opposite == 0){ 
     opposite++; 
    } 
    if (adjacent == 0){ 
     adjacent++; 
    } 

    //if (adjacent < 0){ 
     //adjacent += 180; 
    //} 
    float result=atan(/*opposite/adjacent*/adjacent/opposite)*180/PI; 

    subject.setRotation(result); 
} 

Wir beraten Sie gerne!

+0

'angrenzende' und' entgegengesetzte' sollten floats sein, da die Position eines 'sf :: Sprite' floats ist. – DarkPhantom

Antwort

0

Sie müssen Float mit benachbarten und gegenüberliegenden verwenden. Und ändere das Ergebnis mit diesem:

float angle = atan(adjacent/opposite) * 180/PI; 

if (opposite > 0) 
    angle += 180;