2011-07-15 15 views
1

こんにちは私は最終的にcocos2dでジョイスティックを作っています。私は、ジョイスティックの親指またはキャップが指し示す正確な角度にスプライトを回転させることができます。しかし、私は同じ方向にスプライトを移動することはできません。回転コードを設定する方法でスプライトを移動する簡単な方法はありますか?あなたの親指がまだ押されていても、ジョイスティックを動かしていないと、動きを保つ方法がありますか? PSこのコードはすべてTouchesMovedメソッド内にあります。 PPS。キャップは親指、パッドはジョイスティックの背景、Sprite2は移動したいスプライトです。 (95,95)はパッドスプライトの中心です。ジョイスティックで特定の角度でスプライトを移動する方法

if(capSprite.position.x>=padSprite.position.x){ 
      id a3 = [CCFlipX actionWithFlipX:NO]; 
      [sprite2 runAction:a3]; 
     } 
     if(capSprite.position.x<=padSprite.position.x){ 
      id a4 = [CCFlipX actionWithFlipX:YES]; 
      [sprite2 runAction:a4]; 
     } 


     CGPoint pos1 = ccp(95, 95); 
     CGPoint pos2 = ccp(capSprite.position.x, capSprite.position.y); 
     int offX = pos2.x-pos1.x; 
     int offY = pos2.y-pos1.y; 


     float angleRadians = atanf((float)offY/(float)offX); 
     float angleDegrees = CC_RADIANS_TO_DEGREES(angleRadians); 
     float theAngle = -1 * angleDegrees; 
     sprite2.rotation = theAngle; 

答えて

0

私はcocos2dに慣れていないんだけど、私はドキュメントを簡単に見ていたし、このサンプルはあなたに使用であるかもしれない:

if keys[key.UP]: 
     self.target.acceleration = (200 * rotation_x, 200 * rotation_y) 

私はあなたの2番目の質問に答えるの長い説明が書かれていました私はこの "self.target.acceleration"もそれを解決すると信じています。 cocos2d API documentationで詳細を読むことができます。

0

私は一般的に行うことは、角度を得るccpForAngleとするCGPoint(フロート)に変換し、その値によってするCGPointを掛けです:

float angle = whatever; 
CGPoint anglePoint = ccpForAngle(angle); 
// You will need to play with the mult value 
angle = ccpMult(angle, 2.5); 
// This also works with box2D or probably Chipmunk. 
sprite.position = angle; 
関連する問題