SFML 2.1如何让一个精灵面对另一个精灵

时间:2016-04-30 09:52:55

标签: c++ rotation sprite sfml trigonometry

我正试图制作一个射击游戏,同时试图编码敌人 为了面对玩家,我尝试使用三角法来找到必要的旋转,但是代码没有工作,并且敌人不规则地旋转。这是代码:

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

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:0)

你必须使用相邻和相反的浮动。并用此更改结果:

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

if (opposite > 0)
    angle += 180;