Мой 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 (), но с такими же плохими результатами, давая мне правильное направление, но неверное начало.