Ios 如何冒险玩精灵鬼鬼祟祟的游戏杆(Dpad)

Ios 如何冒险玩精灵鬼鬼祟祟的游戏杆(Dpad),ios,cocos2d-iphone,Ios,Cocos2d Iphone,当我移动我的精灵时,我试着去碰精灵,ik在左上下工作,但不是右上。这是我的密码: if (dpad.degrees > 0 && dpad.degrees < 59) { [player setTexture:[[CCTextureCache sharedTextureCache] addImage:@"playerrigt.png"]]; NSLog(@"going rigt"); } else if (dpad.degrees > 331 &

当我移动我的精灵时,我试着去碰精灵,ik在左上下工作,但不是右上。这是我的密码:

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");
}
if(dpad.degrees>0&&dpad.degrees<59){
[player setTexture:[[CCTextureCache sharedTextureCache]添加图像:@“playerrigt.png”];
NSLog(“正常运行”);
}
否则如果(dpad.degrees>331&&dpad.degrees<360){
[player setTexture:[[CCTextureCache sharedTextureCache]添加图像:@“playerrigt.png”];
NSLog(“正常运行”);
}
否则如果(dpad.degrees>151&&dpad.degrees<240){
[播放器设置结构:[[CCTextureCache sharedTextureCache]添加图像:@“playerleft.png”];
NSLog(“向左走”);
}
如果(dpad.degrees>60&&dpad.degrees<150){
[播放器设置结构:[[CCTextureCache sharedTextureCache]添加图像:@“playerup.png”];
NSLog(@“上升”);
}
否则如果(dpad.degrees>241&&dpad.degrees<330){
[player setTexture:[[CCTextureCache sharedTextureCache]添加图像:@“playerdown.png”];
NSLog(@“下降”);
}
是的,我知道我说错了


谢谢你的时间。

如果你用不同的方法来解决这个问题。 首先,我添加了一个新的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");
}
if(oldPosition.xnewPosition.x){
[播放器设置结构:[[CCTextureCache sharedTextureCache]添加图像:@“playerleft.png”];
NSLog(“向左走”);
}
if(oldPosition.ynewPosition.y){
[player setTexture:[[CCTextureCache sharedTextureCache]添加图像:@“playerdown.png”];
NSLog(@“下降”);
}

希望它能帮助有同样问题的人首先,将操纵杆设置为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;
    }
CGPoint-velocity=ccpMult(操纵杆速度,100);
如果(速度.x!=0 | |速度.y!=0)
如果(abs(velocity.x)>50和&abs(velocity.y)>50)
{
返回;
}
否则如果(速度x<-50)
{
//这里左转的代码
返回;
}
否则,如果(速度x>50)
{
//在这里开始的代码
返回;
}
否则,如果(速度y>50)
{
//上面的代码
返回;
}否则如果(速度y<-50)
{
//下面的代码
返回;
}

不知道,但确实存在“缺失”范围。。(即,如果dpad.degrees==0,或>=59&&some如果我将其设置为==0,它将运行代码,而我不触摸dpad。我已尝试了所有范围。)