|
|
|||||
Регистрация: Aug 2012
Сообщений: 38
|
Скроллинг в физ. мире
Добрый вечер! Пытаюсь сделать скроллинг в мире box2d 2.1а. Есть физ. герой (машинка), вид с боку, необходим скроллинг. Мир пока без графики. Прилагаю сам проект. Почитал разные темы. В них советовалось оптимальным вариантом - создать камеру. Пробовал её сделать, не получилось. Как мне реализовать камеру? Подскажите поподробнее, с кодом, пожалуйста.
TestGame.rar |
|
|||||
Физ мир не должен двигаться. Двигается только графика, отображающая этот физ мир.
Камера, вообщем-то в итоге имеет dx, dy - коэфиценты смещения для всей графики на экране. Может иметь разные методы для удобства: привязка к объекту, тряска, ограничение области видимости. То-есть, на основе переданных ей данных, она находит dx dy - смещение для всей графики на экране.
__________________
Дети не должны знать о своих родителях |
|
|||||
Регистрация: Aug 2012
Сообщений: 38
|
Tails, привязка к объекту интерисует.
Можно кодом, поподробнее? Пытаюсь, всё не выходит. Понимаю без графики пробовать смысла не имеет, т.к. смещать её и надо, поэтому добавил в проект. Пытаюсь так, реакции ноль: private function Camera(event:Event):void { //вместо героя смещаем задний фон var _testlevel:Sprite = new TestLevel(); _testlevel.x = -GFX.Hero.x + stage.stageWidth/2; _testlevel.y = -GFX.Hero.y + stage.stageHeight/2; } private function updateWorld(e:Event):void { //управление машиной addEventListener(Event.ENTER_FRAME,Camera); Так же нашёл пример: public function Camera(event:Event):void { var pos_x:Number; var pos_y:Number; pos_x = ГЕРОЙ.GetWorldCenter().x * MainGame.physScale; pos_y = ГЕРОЙ.GetWorldCenter().y * MainGame.physScale; следим за героем держа его всегда в низу сцены в 100 пикселях от края pos_y = stage.stageHeight - 100 - pos_y; ограничиваем выход героя за пределы карты if (pos_y < -500000) { pos_y = -500000; } if (pos_y > 500000) { pos_y = 500000; } this.y = pos_y; } Прикладываю проект со всеми моими этими попытками и графикой, чтобы нагляденее было (а то мало ли глупую ошибку допустил или совсем не туда что-то написал). TestGame.rar |
|
|||||
Не-знаю что там за значение храниться в physScale. Я вам опишу простейшую реализацию камеры:
У вас есть герой - машинка, которая своими x,y всегда привязывается к физ объекту, представляющего её в физ мире. Все остальные нарисованные объекты в игре, так-же привязываются к своим физ моделям. Тут все понятно. Далее, вы все игровые спрайты представляющие уровень (коробки, машинка, платформы) помещаете в один общий спрайт - контейнер. Теперь вы просто можете изменять координаты этого контейнера x,y, и двигать всю графику на экране, не изменяя физ модель. Всё, у вас - простейшая камера. Для удобства, вы можете написать отдельный класс Camera, для управления смещением главного контейнера со всей графикой, добавлением таких возможностей как ограничение области отображения, привязка и м.д.
__________________
Дети не должны знать о своих родителях |
Часовой пояс GMT +4, время: 15:51. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|