0

画面をタップすると少し上に回転し、その後、上に回転したのと同じ角度だけ下に回転します。次のコードを使用してこれを達成しました。

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

//Plane move up on touch
UITouch *touch = [touches anyObject];
[plane stopAllActions];


[plane runAction:[CCSequence actions:[CCRotateBy actionWithDuration:0.15 angle:-20],
                 [CCMoveBy actionWithDuration:1 position:ccp(0,location.y)],
                 [CCRotateBy actionWithDuration:0.15 angle:20],
                  [CCCallBlock actionWithBlock:
                   ^{
                       [self startDownMovement];

                   }],nil]];}

その後

-(void)startDownMovement { [plane runAction:[CCSequence actions:[CCMoveBy actionWithDuration:2 position:ccp(0,-plane.position.y)],nil]]; }

問題は、たとえば 2 回タップすると、平面が 20 度上に 2 回移動しますが、20 度下に回転するのは 1 回だけです。平面を 20 度上に回転させたいだけです。画面を何度タップしても、20 度上にとどまり、その後 0 度に戻る必要があります。

助けてください。

ありがとうございます。

4

2 に答える 2

0

タップごとに平面の現在の回転をチェックすることで機能します。!= 0 の場合は、それ以上回転せず、上昇し続けます。そして、 でstartDownMovement、回転を 0 に設定します。これで動作するようになりました。

于 2013-08-14T11:44:29.733 に答える
0

平面の現在の回転属性を読み取ります。

//float currentRotation = plane.rotation;
//Calculate new Rotation Value :
// float newRotation = currentRotation - offset;  (offset in your case  = 20)
//Use CCRotateTo  in place of CCRotateBy
[plane runAction:[CCSequence actions:[CCRotateTo actionWithDuration:0.15 angle:-20],
                 [CCMoveBy actionWithDuration:1 position:ccp(0,location.y)],
                 [CCRotateTo actionWithDuration:0.15 angle:20],
                  [CCCallBlock actionWithBlock:
                   ^{
                       [self startDownMovement];

                   }],nil]];}
于 2013-07-29T05:24:49.770 に答える