[英]2D Collision detection with canvas + javascript
嘿,我正在嘗試在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;
}
}
在測試所有平台時使用標志。 這是偽代碼:
var isOnPlatform=false;
for(i=0;i<platforms.length;i++) {
if( testPlayerIsOnThisPlatform ){ isOnPlatform=true; }
}
if(isOnPlatform){ turn off gravity };
您正在為當前平台設置各種變量(例如,您設置ground = true等),然后for循環進入下一個平台並立即破壞您為之前平台設置的所有內容。 當您找到播放器所在的平台時(例如,突破循環,設置標記或其他內容),您似乎沒有做任何事情來保留設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.