#html #canvas #scroll #box2d #shift
#HTML #холст #прокрутка #box2d #смещение
Вопрос:
В настоящее время я работаю над игрой с html5 / js, используя box2dweb для коллизии, но я сталкиваюсь с проблемой, когда мне требуется прокручивать уровень с помощью проигрывателя. Box2d рендерится непосредственно в 2d-контексте, поэтому я думаю, что в его текущем состоянии нет способа сдвинуть часть рендеринга холста?
В as3 вы могли бы просто поместить все в видеоролик и соответствующим образом изменить его положение.
Итак, возможно ли в любом случае иметь контроль над какой-либо камерой или частью рендеринга объекта canvas для изменения его «положения», чтобы проигрыватель всегда был в центре?
Заранее спасибо,
M0rph3v5
Комментарии:
1. Вот пример смещения холста: codingowl.com/readblog.php?blogid=128
Ответ №1:
Box2D сам по себе ничего не рисует, он просто вычисляет позиции / столкновения.
Он предлагает так называемый «отладочный чертеж», но его назначение таково… отладка. В любом случае вы могли бы начать оттуда, чтобы добавить все необходимые функции.
Ответ №2:
Да, я понял, оказывается, мне также пришлось использовать context.translate прямо перед отладкой, чтобы «сдвинуть» все. Теперь все работает нормально.
Редактировать:
Код, который я сейчас использую
context.save();
context.translate(-1*xpos (canvas.width/2),-1*ypos (canvas.height/2));
context.rotate(cars[carid].angle);
context.drawImage(carSprite, -carspritewidth/2, -carspriteheight/2);
context.restore();
где xpos и ypo — это позиции x и y автомобиля, после этого я просто рисую фактический автомобильный спрайт с точностью 0,0 (с размером автомобиля, разделенным по центру).
Комментарии:
1. Не могли бы вы, пожалуйста, загрузить исходный код. Я пытаюсь сделать то же самое, что вы пытаетесь делать долгое время. И я все еще не могу точно понять, как перемещать камеру.