Cocos2d iphone 如何使用操纵杆以特定角度移动精灵

Cocos2d iphone 如何使用操纵杆以特定角度移动精灵,cocos2d-iphone,sprite,move,joystick,Cocos2d Iphone,Sprite,Move,Joystick,嗨,我终于在cocos2d中制作了一个工作操纵杆。我能够将精灵旋转到操纵杆拇指或盖子“指向”的准确角度。但是,我无法将精灵移向同一方向。有没有一个简单的方法来移动精灵的方式,我有旋转代码设置?如果拇指仍被按下,但不移动操纵杆,是否有办法使其保持移动?。PS此代码都在TouchsMoved方法中。PPS。盖是拇指,垫是操纵杆背景,精灵2是我想要移动的精灵。(95,95)是焊盘精灵的中心 if(capSprite.position.x>=padSprite.position.x){

嗨,我终于在cocos2d中制作了一个工作操纵杆。我能够将精灵旋转到操纵杆拇指或盖子“指向”的准确角度。但是,我无法将精灵移向同一方向。有没有一个简单的方法来移动精灵的方式,我有旋转代码设置?如果拇指仍被按下,但不移动操纵杆,是否有办法使其保持移动?。PS此代码都在TouchsMoved方法中。PPS。盖是拇指,垫是操纵杆背景,精灵2是我想要移动的精灵。(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;
if(capSprite.position.x>=padSprite.position.x){
id a3=[CCFlipX操作与FlipX:NO];
[sprite2运行操作:a3];
}

if(capSprite.position.x我不熟悉cocos2d,但我快速查看了文档,此示例可能对您有用:

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

我已经写了一个很长的解释来回答你的第二个问题,但我相信这个“self.target.acceleration”也能解决这个问题。你可以在网站上阅读更多内容。

我通常做的是获取角度,将其转换为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;