我正试图制作一个射击游戏,同时试图编码敌人 为了面对玩家,我尝试使用三角法来找到必要的旋转,但是代码没有工作,并且敌人不规则地旋转。这是代码:
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 :(得分:0)
你必须使用相邻和相反的浮动。并用此更改结果:
float angle = atan(adjacent / opposite) * 180 / PI;
if (opposite > 0)
angle += 180;