![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2009
Сообщений: 78
|
Подскажите, как можно перемещать предмет в Box2d? Стоит задача двигать главгероя игры. SetLinearVelocity не подходит тк произходит некое "скольжение" при остановке объекта. Какие способы еще могут быть?
|
|
|||||
|
ApplyForce юзай.
Скольжение по идее и должно быть, тела как правило мгновенно не останавливаются. Можешь попробовать LinearDamping подкрутить.
__________________
while(1) {} |
|
|||||
|
Регистрация: Apr 2009
Сообщений: 78
|
Цитата:
![]() Добавлено через 12 минут чтото объект начинает перемещаться вперед, при этом делая безумные сальто вперед )) Точку приложения беру середину объектаделаю так: GameObject(_playerObject).objectBody.ApplyForce(new b2Vec2(100 / Physics.RATIO, 0), new b2Vec2((GameObject(_playerObject).objectSprite.width / 2) / Physics.RATIO, (GameObject(_playerObject).objectSprite.height / 2) / Physics.RATIO)); Physics.RATIO = 30, указываю ее для удобства переовода пикселей в метры. GameObject - общий для всех игровых объектов класс, от него наследую подклассы для более конкретных объектов. В нем храню b2body и спрайт каждого объекта Последний раз редактировалось imdogma; 08.01.2010 в 23:37. |
|
|||||
|
Изврат полнейший.
Во-первых если не хочешь чтобы тело вращалось вообще, используй fixedRotation. Во-вторых если хочешь приложить силу к центру тела, юзай GetPosition(), а не то что ты написал. Ты прикладываешь силу к координатам половины высоты и ширины объекта, следовало бы прибавить координаты по x и y. Далее, ты зачем-то преобразовываешь из координат экранных в физические - полный изврат, все расчёты должны проводиться в координатах физики и переводиться в экранные только для отрисовки и позиционирования спрайтов.
__________________
while(1) {} |
|
|||||
|
Регистрация: Apr 2009
Сообщений: 78
|
Перевожу только потому, что мне так понятнее и нагляднее. Насколько я знаю, в box2d 1 метр = 30 пикселей, поэтому в итоге я и передаю нормальные для движка значения и он с ними работает нормально как с метрами. Насчет fixedRotation - спасибо попробую. Еще почитал, с массой вроде можно поэксперементировать
|
|
|||||
|
Цитата:
Цитата:
__________________
while(1) {} |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:24. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|