Box2dweb, смещение холста?

#html #canvas #scroll #box2d #shift

#HTML #холст #прокрутка #box2d #смещение

Вопрос:

В настоящее время я работаю над игрой с html5 / js, используя box2dweb для коллизии, но я сталкиваюсь с проблемой, когда мне требуется прокручивать уровень с помощью проигрывателя. Box2d рендерится непосредственно в 2d-контексте, поэтому я думаю, что в его текущем состоянии нет способа сдвинуть часть рендеринга холста?

В as3 вы могли бы просто поместить все в видеоролик и соответствующим образом изменить его положение.

Итак, возможно ли в любом случае иметь контроль над какой-либо камерой или частью рендеринга объекта canvas для изменения его «положения», чтобы проигрыватель всегда был в центре?

Заранее спасибо,

M0rph3v5

Комментарии:

1. Вот пример смещения холста: codingowl.com/readblog.php?blogid=128

Ответ №1:

Box2D сам по себе ничего не рисует, он просто вычисляет позиции / столкновения.

Он предлагает так называемый «отладочный чертеж», но его назначение таково… отладка. В любом случае вы могли бы начать оттуда, чтобы добавить все необходимые функции.

http://code.google.com/p/box2d/wiki/FAQ

Ответ №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. Не могли бы вы, пожалуйста, загрузить исходный код. Я пытаюсь сделать то же самое, что вы пытаетесь делать долгое время. И я все еще не могу точно понять, как перемещать камеру.