PDA

Просмотр полной версии : [...] от MovieClip до Shape с физикой


GoodWin74
02.08.2012, 05:30
Хотелось бы посоветоваться, кто уже работал с многими физическими движками 2D для Flash.

Для обучения всех тонкостей в физ. движках, появилась идея написать мини игру.
Суть игры:
Персонаж бежит и перепрыгивает препятствия, в случае соприкосновения с препятствиями, персонаж ударяется падает, как настоящий труп человека.

Каким образом, лучше перейти от MovieClip к Shape и какой лучше движок для такой простой игры использовать?

gagaga
02.08.2012, 13:17
вопрос не ясен...

GoodWin74
03.08.2012, 08:28
Имеется ввиду то, что анимацию на Шейпах физ. движков не сделаешь нормальную, а так как все анимации в MovieClip, значит и персонаж изначально будет в MovieClip. Вот и хотелось бы узнать, как решить задачу с внедрением физ. движка на момент удара персонажа о препятствие. Т.е. как то отключить MovieClip и перейти к персонажу на шейпах с физ. свойствами, чтоб он уже получил удар и упал как реальный человек.

Alex Lexcuk
03.08.2012, 22:10
Ищите в демиартовских уроках, был урок box2d с платформером, где эти мелочи разжёваны.
http://demiart.ru/forum/index.php?act=SF&s=&f=49

gagaga
03.08.2012, 22:59
что не получается? вы не можете отловить событие из физ.мира, или не можете придумать как прикрутить анимацию... я бы написал какой-нибуть stateManager и хранил в нем состояния персонажа, например, в переменной state:uint... можно использовать побитовые операторы http://help.adobe.com/ru_RU/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7fd1.html#WS5b3ccc516d4fbf351e63e3d118a9b90204-7f63 для того чтобы изменять отдельный бит состояния и, в сеттере хэндлить изменение и подставлять нужную анимацию.... например
if(state & 1) анимация = бежит,
if(state & 2) анимация = прыгает
if(state & 4) анимация = бьет врага
if((state & 4+2) == 6) анимация = атакует в прыжке
и т.д...

Добавлено через 4 минуты
п.с. не если будете использовать побитовые операторы, не забудьте про приоритеты операций, у == приоритет больше чем у &.... т.е. (2 & 3 == 2) вернет false, а ((2 & 3) == 2) вернет true