我正在尝试为我正在制作的 iPhone 游戏制作虚拟操纵杆控制,为此我得到了玩家触摸和操纵杆中心之间的角度,但是当我得到角度时,它只会上升到1.57 弧度,然后变为负数,只有下降到 -1.57 再增加回 1.57。一旦角度从正变为负,这会导致我的操纵杆跳到另一侧。
这是我计算角度的方法:
-(double) angleOnCircle: (CGPoint) point1: (CGPoint) centerOfCircle
{
int point1X = point1.x;
int point1Y = point1.y;
int centerX = centerOfCircle.x;
int centerY = centerOfCircle.y;
double triangleHeight = point1Y - centerY;
double triangleBase = point1X - centerX;
double angle = atan(triangleHeight/triangleBase);
return angle;
}
这是我更新棒的位置的地方:
moveStickAngle = [self angleOnCircle: touchPos : moveStickStartPoint];
if([self distanceBetweenTwoPoints:touchPos :moveStickStartPoint] < MOVE_STICK_RESTRICTION_RADIUS)
{
moveStickCenter = touchPos;
}
else
{
double newX = MOVE_STICK_START_X + (cos(moveStickAngle) * MOVE_STICK_RESTRICTION_RADIUS);
double newY = MOVE_STICK_START_Y + (sin(moveStickAngle) * MOVE_STICK_RESTRICTION_RADIUS);
moveStickCenter = ccp(newX, newY);
}
谢谢您的帮助!