Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 游戏平台_Java_2d_Platform_Game Maker - Fatal编程技术网

Java 游戏平台

Java 游戏平台,java,2d,platform,game-maker,Java,2d,Platform,Game Maker,我刚刚在unity和Game maker工作了两个月,所以我并不擅长这项工作。我有一个小问题。我有一个平台正在与主角发生冲突,现在可以工作了。但是如果我想添加两个或更多的平台,游戏就会失败。我现在在Game Maker Studio工作 //React to inputs move = key_left + key_right; hsp = move * movespeed; if (vsp < 10) vsp += grav; if (place_meeting(x,y+1,o

我刚刚在unity和Game maker工作了两个月,所以我并不擅长这项工作。我有一个小问题。我有一个平台正在与主角发生冲突,现在可以工作了。但是如果我想添加两个或更多的平台,游戏就会失败。我现在在Game Maker Studio工作

    //React to inputs
move = key_left + key_right;
hsp = move * movespeed;
if (vsp < 10) vsp += grav;

if (place_meeting(x,y+1,obj_platform) || place_meeting(x,y+1,obj_platform1)){
    vsp = key_jump * -jumpspeed;
}

//Horizontal collision
if (place_meeting(x+hsp,y,obj_platform) || place_meeting(x+hsp,y,obj_platform1)){
    while (!place_meeting(x+sign(hsp),y,obj_platform ) || place_meeting(x+sign(hsp),y,obj_platform1)){
        x += sign(hsp);
    }
    hsp = 0;
}
x += hsp;

//Vertical collision
if (place_meeting(x,y+vsp,obj_platform) || place_meeting(x,y+vsp,obj_platform1)){
    while (!place_meeting(x,y+sign(vsp),obj_platform ) || place_meeting(x,y+sign(vsp),obj_platform1)){
        y += sign(vsp);
    }
    vsp = 0;
}
y += vsp;

//Diagonal collision
if(place_meeting(x+hsp, y+vsp, obj_platform ) || place_meeting(x+hsp,y+vsp,obj_platform1)){
    while(!place_meeting(x+sign(hsp), y + sign(vsp),obj_platform ) || place_meeting(x+sign(hsp), y + sign(vsp),obj_platform1)){
        x+= sign(hsp);
        y+= sign(vsp);
    }
    hsp = 0;
    vsp = 0;
}
//对输入做出反应
移动=左键+右键;
hsp=移动*移动速度;
如果(vsp<10)vsp+=grav;
if(地点会议(x,y+1,obj_平台)|地点会议(x,y+1,obj_平台1)){
vsp=按键跳跃*-跳跃速度;
}
//水平碰撞
if(地点会议(x+hsp,y,obj_平台)|地点会议(x+hsp,y,obj_平台1)){
而(!地点会议(x+标志(hsp),y,obj_平台)地点会议(x+标志(hsp),y,obj_平台1)){
x+=符号(hsp);
}
热休克蛋白=0;
}
x+=hsp;
//垂直碰撞
if(地点会议(x,y+vsp,obj_平台)|地点会议(x,y+vsp,obj_平台1)){
而(!地点会议(x,y+标志(vsp),obj_平台)|地点会议(x,y+标志(vsp),obj_平台1)){
y+=符号(vsp);
}
vsp=0;
}
y+=vsp;
//对角碰撞
if(地点会议(x+hsp,y+vsp,obj_平台)|地点会议(x+hsp,y+vsp,obj_平台1)){
而(!地点会议(x+符号(hsp)、y+符号(vsp)、obj_平台)地点会议(x+符号(hsp)、y+符号(vsp)、obj_平台1)){
x+=符号(hsp);
y+=符号(vsp);
}
热休克蛋白=0;
vsp=0;
}
我看不出我犯了什么错误,平台正常工作,但如果你跳到平台1上,整个游戏就会失败


提前谢谢

它可能会阻塞while循环。函数返回1表示正数,返回1表示负数,返回0表示0

如果GameMaker具有日志记录功能,或某种控制台输出,请在while循环中写入一些内容。或者,如果它不尝试类似的方法:

counter = 0;
while(!place_meeting(x+sign(hsp), y + sign(vsp),obj_platform ) || place_meeting(x+sign(hsp), y + sign(vsp),obj_platform1)){
    counter+= 1;
    x+= sign(hsp);
    y+= sign(vsp);
    if (counter>100){
        //do something visible, for example teleport player.
    }
}

我知道这不是一种非常有效的方法,但正如GM所记得的,就调试而言,它一直是一个糟糕的IDE。

它可能会阻塞while循环。函数返回1表示正数,返回1表示负数,返回0表示0

如果GameMaker具有日志记录功能,或某种控制台输出,请在while循环中写入一些内容。或者,如果它不尝试类似的方法:

counter = 0;
while(!place_meeting(x+sign(hsp), y + sign(vsp),obj_platform ) || place_meeting(x+sign(hsp), y + sign(vsp),obj_platform1)){
    counter+= 1;
    x+= sign(hsp);
    y+= sign(vsp);
    if (counter>100){
        //do something visible, for example teleport player.
    }
}
我知道这不是一种非常有效的方法,但我记得在调试方面,GM一直是一个糟糕的IDE