Java can';我的嵌套循环无法在游戏中工作
我正在做一个游戏,我需要和我的球员关上一扇门。当他接近时,他有一个接近的动画。在我当前的循环中,检查每个房间的每个门。只有当有一扇门且该门位于环路中的第一个房间时,该代码才起作用。如果不是,则“关闭”动画仅为一帧触发,然后返回到空闲状态,因此在关闭时,它在两帧之间闪烁Java can';我的嵌套循环无法在游戏中工作,java,loops,Java,Loops,我正在做一个游戏,我需要和我的球员关上一扇门。当他接近时,他有一个接近的动画。在我当前的循环中,检查每个房间的每个门。只有当有一扇门且该门位于环路中的第一个房间时,该代码才起作用。如果不是,则“关闭”动画仅为一帧触发,然后返回到空闲状态,因此在关闭时,它在两帧之间闪烁 for (Room r : rooms) { for (Door d : Doors) { if (r.closed(d)) { close(); d.closing=fal
for (Room r : rooms) {
for (Door d : Doors) {
if (r.closed(d)) {
close();
d.closing=false;
break;
} else {
d.closing=true;
r.closed=false;
r.locked=false;
}
}
}
代码中的这两行最有可能导致问题:
player.isPushingRight=false;
player.isPushingLeft=false;
当有物体开始下落时,执行这些操作。通常情况下,这个秋天是由玩家发起的,所以在这里可能会有一些意义,尽管可能会有一个更适合这些台词的地方
真正的问题是如何确定物体是否开始下落:你检查每个平台,一旦你找到一个没有物体停留的平台,你就让物体开始下落。如果以后找到对象所在的平台,则取消坠落,但播放器动画已停止
void objGround(ArrayList<Platform> platforms, ArrayList<Pushable> pushObj) {// to see if the object is standing on a platform.
for (Pushable pu : pushObj) {
pu.render();
let isOnGround = false;
for (Platform plt : platforms) {
if (pu.objectOnGround(plt)) {
pu.moveY=0;
pu.falling=false;
if (pu.y>pu.startingY+20) {
pu.smashed=true;
}
isOnGround = true;
break;
}
}
if (!isOnGround && !pu.falling) {
pu.falling=true;
pu.moveY=2;
pu.startingY=pu.y; // Guess you need that too
player.isPushingRight=false; // only valid if the player is the only cause of a falling object!
player.isPushingLeft=false; // only valid if the player is the only cause of a falling object!
}
}
} // end of objground procedure
void objGround(ArrayList platforms,ArrayList pushObj){//查看对象是否站在平台上。
用于(可推式pu:pushObj){
pu.render();
让isOnGround=false;
用于(平台plt:平台){
if(pu.objectOnGround(plt)){
pu.moveY=0;
pu.下降=错误;
如果(pu.y>pu.startingY+20){
pu.splasted=true;
}
isOnGround=true;
打破
}
}
如果(!isOnGround&&!pu.falling){
pu.下降=正确;
pu.moveY=2;
pu.startingY=pu.y;//我想你也需要这个
player.isPushingRight=false;//仅当该播放器是坠落物体的唯一原因时才有效!
player.isPushingLeft=false;//仅当该播放器是坠落物体的唯一原因时才有效!
}
}
}//objground过程结束