我正在使用HTML / JavaScript制作简单的2D side-scroller game,并使用ES6管理我的游戏对象。
我为每个关卡平台有2个数组要跟踪:
shortPlatform
longPlatform
对于每个平台,在 player 对象与相应的 platform 之间有一个单独的循环以检查碰撞
但是,循环仅允许与最后一个平台 发生冲突。
这是我的两个循环的代码:
for (let i = 0; i < shortPlatform.length; i++)
{
shortPlatform[i].renderObject();
// check if collide with players
var dir = colCheck(player, shortPlatform[i]);
}
for (let x = 0; x < longPlatform.length; x++)
{
longPlatform[x].renderObject();
// check if collide with players
var dir2 = colCheck(player, longPlatform[x]);
};
我在这里已经阅读了许多其他有关闭包的答案,而且似乎无法使任何解决方案正常工作。
答案 0 :(得分:0)
变量dir
和dir2
在for
循环中是本地的。结果,每次循环迭代时都会被覆盖。尝试使用数组存储冲突的发生。