次のように設定されたゲームにホイールコントロールがあります。
- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
if (CGRectContainsPoint(wheel.boundingBox, location))
{
CGPoint firstLocation = [touch previousLocationInView:[touch view]];
CGPoint location = [touch locationInView:[touch view]];
CGPoint touchingPoint = [[CCDirector sharedDirector] convertToGL:location];
CGPoint firstTouchingPoint = [[CCDirector sharedDirector] convertToGL:firstLocation];
CGPoint firstVector = ccpSub(firstTouchingPoint, wheel.position);
CGFloat firstRotateAngle = -ccpToAngle(firstVector);
CGFloat previousTouch = CC_RADIANS_TO_DEGREES(firstRotateAngle);
CGPoint vector = ccpSub(touchingPoint, wheel.position);
CGFloat rotateAngle = -ccpToAngle(vector);
CGFloat currentTouch = CC_RADIANS_TO_DEGREES(rotateAngle);
wheelRotation += (currentTouch - previousTouch) * 0.6; //limit speed 0.6
}
}
次のようにして、更新メソッドでホイールの回転を更新します。
wheel.rotation = wheelRotation;
ユーザーがホイールを離したら、ユーザーが行ったスワイプの速度を考慮せずに、以前の場所に回転させたいと思います。これは、私が本当に理解できないビットです。したがって、スワイプが多くの速度を生成する場合、ホイールを開始位置に引き戻す全体的な力が作動するまで、ホイールはその方向にわずかに移動し続けます.
アイデア/コードスニペットはありますか?