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;
4

2 に答える 2

0

私はcocos2dに精通していませんが、ドキュメントをざっと見てみました。このサンプルはあなたに役立つかもしれません。

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

2番目の質問に答える長い説明を書きましたが、この「self.target.acceleration」もそれを解決すると思います。詳細については、cocos2dAPIのドキュメントをご覧ください。

于 2011-07-15T19:31:35.697 に答える
0

私が通常行うことは、角度を取得し、それを ccpForAngle(float) で 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;
于 2011-07-16T16:45:09.210 に答える