Box2dweb, сдвигая холст?

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

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

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

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

M0rph3v5


person M0rph3v5    schedule 07.05.2011    source источник
comment
Вот пример смещающегося холста: codingowl.com/readblog.php?blogid=128   -  person    schedule 12.11.2012


Ответы (2)


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

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

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

person Omiod    schedule 07.05.2011

Да, я понял, оказывается, мне пришлось использовать 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 и ypos — это координаты автомобиля по осям x и y, после чего я просто рисую фактический спрайт автомобиля в точке 0,0 (с делением размера автомобиля по центру).

person M0rph3v5    schedule 08.05.2011
comment
Не могли бы вы загрузить исходный код. Я пытаюсь сделать то же самое, что и вы, уже давно. И я до сих пор не могу понять, как именно двигать камеру. - person Shekhar; 14.06.2012