如何让我的怪物面向正确的方向?

时间:2013-06-22 20:18:13

标签: c# xna

我遇到了让我的怪物面向正确方向的问题。 这是我的代码:

void RotateMonster(Monster monster)
{
     float deltaX = monster.Target.X - monster.coordinate.X;
     float deltaY = monster.Target.Y - monster.coordinate.Y;
     float tangentable = deltaX / deltaY;
     monster.Rotation = (float)Math.Atan(tangentable);
}

我遇到的问题是,有时怪物向后走,它面向错误的方向,有人可以帮我解释一下我做错了什么?

1 个答案:

答案 0 :(得分:2)

您必须检查deltaXdeltaY值的符号,以确定如何处理Atan方法的结果。

Atan方法不知道您是使用正值还是负值来计算切线,例如它无法区分100/50-100/-50之间的区别。对于某些组合,您必须将半个旋转添加到角度。

我没有准确掌握什么价值,但基本上是这样的:

float angle = (float)Math.Atan(tangentable);
if ((deltaX < 0 && deltaY >= 0) || (deltaX >= 0 && deltaY < 0)) {
  angle = angle + Math.PI;
}
monster.Rotation = angle;

......或其他一些积极和消极价值的组合。您应该能够测试出什么能为您的坐标系提供正确的结果。