Простое столкновение или путь на 2-й карте - PullRequest
0 голосов
/ 09 ноября 2019

Я изо всех сил пытаюсь сделать свое столкновение для стен в игре-лабиринте, которую я делаю для школы. У меня появилась идея на самом деле просто поместить координаты 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();

Движение работает нормально, просто действительно нужно сделать этот путь!

Редактировать: да, я знаю выше, если утверждение не будет работать, но я могуЯ не могу понять, как двигаться дальше, чтобы эта идея сработала. Я твердо считаю, что это лучший способ (по идее) пойти на это, вместо того, чтобы обнаруживать столкновение стен.

1 Ответ

0 голосов
/ 12 ноября 2019

Хорошо, так что я решил это, наконец!

Я не собираюсь вставлять весь код, который вошел в него, потому что это будет стена кода.

Но то, что я наконец-то сделалбыло то, что я всегда проверял, в какой «ячейке» находился playerCharacter, и проверял все четыре направления на возможные пути. Затем, если был путь, я сделал новую прямоугольную форму для вертикального движения и одну для горизонтального движения и просто сделал проверку прямоугольного столкновения внутри этой формы = истинное движение. Я могу опубликовать код, хотя, если кто-то заинтересован. Но посчитайте этот вопрос решенным.

...