私はcocos2dを使用してiOSゲームに取り組んでいます。私のシーンでは、雲はさまざまな速度で右から左に移動しています。1)ユーザーがクラウドをタップすると、左から右への移動が速くなります。2)雲が見えなくなると、再び左側から現れ、通常の速度で左に移動し始めます。
1479 次
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 に答える