[英]How to make my monster face the right direction?
我在让怪物面向正确的方向时遇到了问题。 这是我的代码:
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);
}
我遇到的问题是,有时怪物向后走,它面向错误的方向,有人可以帮我解释一下我做错了什么?
你必须检查的符号deltaX
和deltaY
值,以确定如何处理的结果做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;
......或正面和负面价值的其他组合。 您应该能够测试出什么能为您的坐标系提供正确的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.