0

スプライトを移動するときにスプライトをチャンスにしようとしているのですが、左右が上下に動いていましたが、正しくありませんでした。ここに私のコードがあります:

if (dpad.degrees > 0 && dpad.degrees < 59) {
    [player setTexture:[[CCTextureCache sharedTextureCache] addImage:@"playerrigt.png"]];
    NSLog(@"going rigt");
}
else if (dpad.degrees > 331 && dpad.degrees < 360) {
    [player setTexture:[[CCTextureCache sharedTextureCache] addImage:@"playerrigt.png"]];
    NSLog(@"going rigt");
}
else if (dpad.degrees > 151 && dpad.degrees < 240) {
    [player setTexture:[[CCTextureCache sharedTextureCache] addImage:@"playerleft.png"]];
    NSLog(@"going left");
}
if (dpad.degrees > 60 && dpad.degrees < 150) {
    [player setTexture:[[CCTextureCache sharedTextureCache] addImage:@"playerup.png"]];
    NSLog(@"going up");
}
else if (dpad.degrees > 241 && dpad.degrees < 330) {
    [player setTexture:[[CCTextureCache sharedTextureCache] addImage:@"playerdown.png"]];
    NSLog(@"going down");
}

はい、私は正しい間違った XD を綴っていることを知っています。

あなたの時間のためにthx。

4

2 に答える 2

0

まず、ジョイスティックをDPadタイプにして4方向にセット

    joystick.isDPad=YES;
    joystick.numberOfDirections=4;

アップデートで:

    CGPoint velocity = ccpMult(joystick.velocity, 100);
    if(velocity.x!=0||velocity.y!=0)
    if(abs(velocity.x)>50&&abs(velocity.y)>50)
    {
        return;
    }
   else if(velocity.x < -50)
    {
        //code for go left here
        return;
    }
    else if(velocity.x > 50)
{
     //code for go right here
    return;
}

    else if(velocity.y > 50)
    {
        //code for go up here
        return;
    }else if(velocity.y < -50)
    {
         //code for go down here
        return;
    }
于 2013-12-04T03:45:52.167 に答える
0

別の方法で解決する場合。最初に新しい CGPoint を追加しました

CGPoint oldPosition = ccp(player.position.x, player.position.y);

次に、古い位置と新しい位置の違いを使用しました

  if (oldPosition.x < newPosition.x) {
    [player setTexture:[[CCTextureCache sharedTextureCache] addImage:@"playerrigt.png"]];
    NSLog(@"going rigt");
}
else if (oldPosition.x > newPosition.x) {
    [player setTexture:[[CCTextureCache sharedTextureCache] addImage:@"playerleft.png"]];
    NSLog(@"going left");
}
if (oldPosition.y < newPosition.y) {
    [player setTexture:[[CCTextureCache sharedTextureCache] addImage:@"playerup.png"]];
    NSLog(@"going up");
}
else if (oldPosition.y > newPosition.y) {
    [player setTexture:[[CCTextureCache sharedTextureCache] addImage:@"playerdown.png"]];
    NSLog(@"going down");
}

同じ問題を抱えている人に役立つことを願っています

于 2013-07-16T11:30:29.187 に答える