私が作っている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);
}
助けてくれてありがとう!