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。

谢谢你的时间。

4

2 回答 2

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 回答
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 回答