我正在努力为学校制作的迷宫游戏中撞墙。我有一个想法,就是在绘制地图时实际上只是放置“允许路径”的X和Y坐标,以获取玩家可以在其中移动的坐标。但是我真的无法使其正常工作,任何指针和帮助将不胜感激!
我在代码片段下方粘贴了播放器的运动以及我想出的路径的开始。
function gameLoop() {
ctxPc.clearRect(0, 0, pcCanvas.width, pcCanvas.height);
if (playerUp == true) {
for (let i = 0; i < allowedPathY.length; i++) {
if (positionY == allowedPathY[i]) {
positionY -= moveSpeed;
}
}
//positionY -= moveSpeed;
}
else if (playerDown == true) {
positionY += moveSpeed;
}
if (playerLeft == true) {
positionX -= moveSpeed;
}
else if (playerRight == true) {
positionX += moveSpeed;
}
drawPlayer(positionX, positionY);
window.requestAnimationFrame(gameLoop);
console.log(positionX, positionY);
}
gameLoop();
四处移动都很好,只是必须完成该路径!
编辑:是的,我知道上面的if语句将不起作用,但是我无法全力以赴如何使这一想法起作用。我强烈认为这是进行此操作(而不是检测到墙壁碰撞)的最佳方法(理想方式)。
好,所以我终于解决了!
我不会粘贴所有进入其中的代码,因为这将是一堵代码墙。
但是我最后要做的是,我总是检查playerCharacter所在的“单元”,并检查所有四个方向以寻找可能的方式。然后,如果有一条路径,我会为“垂直”运动制作一个新的矩形形状,为“水平”运动制作一个新的矩形形状,然后在该形状=运动正确的范围内进行矩形碰撞检查。如果有人感兴趣,我可以发布代码。但是请考虑解决此问题。