2016-04-30 3 views
0

Я пытаюсь сделать игру стрелка, и, пытаясь закодировать врагов , чтобы посмотреть в сторону игрока, я попытался использовать тригонометрию, чтобы найти нужный поворот, но код не работал, и враг вращается беспорядочно. Это код:SFML 2.1 Как сделать один спрайт лицом другого спрайта

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

Любой совет будет оценен!

+0

«смежные» и «противные» должны быть поплавками, потому что позиция 'sf :: Sprite' - это поплавки. – DarkPhantom

ответ

0

Вы должны использовать поплавок с соседним и противоположным. И измените результат следующим образом:

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

if (opposite > 0) 
    angle += 180; 
Смежные вопросы