2016-04-30 179 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; 
相关问题