Я не могу понять, как это сделать. Я переводил персонажа и фон одновременно, но если есть какой-то сбой, позиция персонажа выдвигается из видимой области холста, и мне нужно, чтобы перевод холста основывался на позиции игрока (hero.x , hero.y).
В настоящее время у меня есть
var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
canvas.width = 640;
canvas.height = 480;
//then in my update function
if (38 in keysDown && hero.y > 0){ //UP KEY PRESSED KEY
ctx.translate(0,12); //translate background position +12y
hero.y -= hero.speed * modifier; //move player up on the background image
else if (40 in keysDown && hero.y < 3750-64){ //DOWN KEY PRESSED
ctx.translate(0, -12);
hero.y += hero.speed * modifier;
}
}
Это перемещает игрока и холст, но не гарантируется вместе ... если он вообще зависает, игрок не в центре или даже вне экрана.
Доступная для просмотра область холста - 640x480, но фоновое изображение, по которому вы можете перемещаться, - 5000 x 3750.
В веб-браузере, когда он не зависает, он работает так, как я хочу, перемещая игрока и фон в том же темпе, что и персонаж.
Однако, та же самая скорость на телефоне заставляет игрока намного быстрее, чем переводит экран, что означает, что игрок уходит прямо из видимой области, даже если он все еще перемещает фон.
Если я выполняю ctx.translate (hero.x, hero.y) и использую координаты hero.x, hero.y игрока или какой-либо его вариант за вычетом смещения, он перемещает фон BY это измерение каждый раз, когда я нажимаю клавишу вместо ее перемещения TO этой позиции.
Как я могу сделать все, чтобы положение игрока зависело от положения игрока и фона, но вместе или автоматически настраивать следующее обновление () для центрирования игрока ... ?????