JS - холст перевести не перевел функцию съемки - PullRequest
0 голосов
/ 28 апреля 2020

Мой 2D-шутер должен стрелять пулями из игрока в направлении курсора. Но когда холст центрирует игрока по центру экрана, пули не стреляют по направлению к курсору, они ведут себя по-разному в зависимости от местоположения игрока. Как я могу исправить эту ошибку? Вот исходный код https://pastebin.com/Cxdx5Pw9, а также некоторый код, взятый из файла

    b.save();
    b.translate(-p1.x + canvas.width / 2, -p1.y + canvas.height / 2);
    b.clearRect(p1.x - (canvas.width/2), p1.y - (canvas.height/2), canvas.width, canvas.height);
    b.fillStyle = "#f03a47";
    b.fillRect(0, 0, canvas.width, canvas.height);

    p1.draw();
    p1.fire();


    b.restore();

После того, как я нарисовал плеер внутри перевода и за его пределами, я обнаружил, что мой Функция съемки выбирала направление в зависимости от игрока, если холст никогда не переводился для начала (это можно увидеть, сняв комментарий «p1.draw ();» в строке 318, а затем выполнив файл). Так есть ли способ сказать моей функции стрельбы выбрать направление, основываясь на центрированном игроке, а не на свободном игроке?

Я также пытался вызвать функцию съемки после canvas.restore (), но с такими же плохими результатами, давая мне правильное направление, но неверное начало.

1 Ответ

0 голосов
/ 29 апреля 2020

Оказалось, что моя проблема заключалась в том, что, хотя я рассчитывал направление пули, я забыл включить смещение холста. После этого проблема исчезла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...