2016-04-30 125 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

'adjacent'和'opposite'應該是浮動的,因爲'sf :: Sprite'的位置是浮動的。 – DarkPhantom

回答

0

必須使用浮動相鄰和相對的。並用此更改結果:

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

if (opposite > 0) 
    angle += 180; 
相關問題