Как переместить спрайт под определенным углом с помощью джойстика - PullRequest
1 голос
/ 15 июля 2011

Привет, я наконец-то сделал рабочий джойстик в 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;

Ответы [ 2 ]

0 голосов
/ 16 июля 2011

Обычно я получаю угол, конвертирую его в CGPoint с помощью ccpForAngle (float) и затем умножаю 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;
0 голосов
/ 15 июля 2011

Я не знаком с cocos2d, но я быстро просмотрел документацию, и этот пример может быть вам полезен:

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

Я написал длинное объяснение, отвечая на ваш второй вопрос, но я считаю, что это "self.target.acceleration" и это решает. Вы можете прочитать больше в документации cocos2d API .

...