2D地图中的简单碰撞或路径

在我为学校制作的迷宫游戏中,我正在努力撞墙。 我有一个想法,就是在绘制地图时实际上只是放置“允许路径”的X和Y坐标,以获取玩家可以在其中移动的坐标。 但是我真的无法使其正常工作,任何指针和帮助将不胜感激!

我要在代码片段下方粘贴播放器的运动以及我想出的路径的开始。

function gameLoop() {
                    ctxPc.clearRect(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语句将不起作用,但是我无法全力以赴如何使这一想法起作用。我坚信这是进行此操作(而不是使墙壁发生碰撞检测)的最佳方法(理想方式)。

mss0800 回答:2D地图中的简单碰撞或路径

好的,所以我终于解决了!

我不会粘贴所有进入其中的代码,因为这将是一堵代码墙。

但是我最后要做的是,我总是检查playerCharacter所在的“单元格”,并检查所有四个方向的可能方式。然后,如果有一条路径,我为垂直移动创建了一个新的矩形形状,为水平移动创建了一个新的矩形形状,然后在该形状=移动正确的范围内进行了矩形碰撞检查。 如果有人感兴趣,我可以发布代码。但是请考虑解决此问题。

本文链接:https://www.f2er.com/3132370.html

大家都在问