В настоящее время у меня есть объект, летящий через пространство, я хочу, чтобы объект повернулся к определенной координате.
По какой-то причине объект вращается по кругу, а не подстраивается.
Моя тригганометрия почти не существует, и до сих пор я использую догадку, поэтому базовое объяснение, пожалуйста: - /
public void TurnTowardsDestination(double DestinationX, double DestinationY)
{
//Current Co-Ordinate of the object.
double positionX = x;
double positionY = y;
//My failed attempt at understanding atan2.
float spriteToDestAngle = (float) Math.toDegrees(Math.atan2((positionX - DestinationX),(positionY - DestinationY)));
//The Rotate, true is clockwise false anti-clockwise.
if(spriteToDestAngle > 0.0){
RotateItem(true);
}else{
RotateItem(false);
}
Log.w("direction", Integer.toString((int) spriteToDestAngle));
}
Может ли кто-нибудь указать мне правильный учебник по этому илихотя бы объясните, как заставить объект двигаться в правильном направлении.
Я использовал исправление, которое работает: (Для всех, кто застрял на этом) От: http://sinepost.wordpress.com/2012/02/16/theyve-got-atan-you-want-atan2/
int distX = (int) (DestinationX - x);
int distY = (int) (DestinationY - y);
double angleRadians = Math.atan2(distY, distX);
int angleDegrees = (int)Math.toDegrees(angleRadians);
//setRotation(angleDegrees);