二维地图中的简单碰撞或路径

问题描述 投票:0回答:1

我正在努力为学校制作的迷宫游戏中撞墙。我有一个想法,就是在绘制地图时实际上只是放置“允许路径”的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语句将不起作用,但是我无法全力以赴如何使这一想法起作用。我强烈认为这是进行此操作(而不是检测到墙壁碰撞)的最佳方法(理想方式)。

javascript html5-canvas
1个回答
0
投票

好,所以我终于解决了!

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

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

© www.soinside.com 2019 - 2024. All rights reserved.