0

ここに画像の説明を入力してください私はcocos2dを使用してiOSゲームに取り組んでいます。私のシーンでは、雲はさまざまな速度で右から左に移動しています。1)ユーザーがクラウドをタップすると、左から右への移動が速くなります。2)雲が見えなくなると、再び左側から現れ、通常の速度で左に移動し始めます。

4

2 に答える 2

0

雲を左から右にどのように動かしていますか?CCMoveToまたはApplyLinearVelocityを使用しますか?

CCMoveToを使用している場合は、ユーザーがタップしたときにアクションを停止し、別の速度でCCMoveToを再度実行します。

于 2012-09-14T19:25:04.333 に答える
0

1.)ユーザーが触れた雲を検出し、体の速度を上げます。すぐに速度を上げるには、クラウドに関連付けられたb2bodyの線形速度を設定します。徐々に速度を上げるには、力/衝撃を加えます。例えば:

ccTouchesBeganで

UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
for(Cloud *cloud in clouds) {

   if (CGRectContainsPoint( cloud.boudingBox, location )) {

      b2Body *b = cloud.b2Body;
      b2Vec2 *currentVelocity = b->GetLinearVelocity();
      b2Vec2 *newVelocity = b2Vec2(currentVelocity.x + addToSpeed, currentVelocity.y);
      b->SetLinearVelocity( newVelocity );

   }

}

2.)updateメソッドで、クラウドb2bodyの位置がビューの外に移動したことを検出します。次に、スプ​​ライトを使用してクラウドボディを破棄し、目的の位置に新しいクラウドボディを作成するか、b2Body-> SetTransform()を使用して、SetLinearVelocity(startingSpeed)を使用してボディを新しい場所に移動します。

于 2012-09-14T19:31:02.880 に答える