嘿,我正在尝试在HTML5画布和Javascript中实现简单游戏。 我的问题是玩家在平台之间跳跃。每当玩家在平台上跳跃(我有阵列平台位置)时我会关闭引力,因此玩家不会落在地上。然后在我的更新方法(一直刷新的方法)中我调用另一个方法来检查循环是否玩家跳到平台位置。问题是它只适用于一个平台,因为当我添加更多平台时,方法循环通过平台位置和播放器倒下。有没有办法我可以不断检查所有平台位置,而不仅仅是一个? 我的代码检查玩家是否在平台上
for(i=0;i<platforms.length;i++) {
if ((player.y <= platforms[i].y) && (player.y >= platforms[i].y - 5) && (player.x >= platforms[i].x) && (player.x <= (platforms[i].x + platforms[i].width + 10)) && (player.jumping == true)) {
ground = true;
player.jumping=false;
}
else if((player.y >= platforms[i].y) && (player.y <= platforms[i].y - 5) && (player.x <= platforms[i].x) && (player.x >= (platforms[i].x + platforms[i].width + 10)) && (player.jumping == false)){
ground=false;
}
if ((player.x >= platforms[i].x - 10) && (player.x <= (platforms[i].x + platforms[i].width + 10)) && (player.y <= platforms[i].y + platforms[i].height + 10) && (player.y >= platforms[i].y-5)) {
player.velY = 0;
}
if ((player.y <= platforms[i].y) && (player.x >= platforms[i].x - 10) && (player.x <= (platforms[i].x + platforms[i].width + 10)) && (ground == true)) {
player.y = platforms[i].y;
player.jumping = false;
}
}
答案 0 :(得分:0)
在测试所有平台时使用标记。这是伪代码:
var isOnPlatform=false;
for(i=0;i<platforms.length;i++) {
if( testPlayerIsOnThisPlatform ){ isOnPlatform=true; }
}
if(isOnPlatform){ turn off gravity };
答案 1 :(得分:0)
您正在为当前平台设置各种变量(例如,您设置ground = true等),然后for循环进入下一个平台,并立即破坏您为之前平台设置的所有内容。当您找到播放器所在的平台时(例如,突破循环,设置标记或其他内容),您似乎无法保留设置。