Просмотр полной версии : [Box2D] Перемещение объекта
Подскажите, как можно перемещать предмет в Box2d? Стоит задача двигать главгероя игры. SetLinearVelocity не подходит тк произходит некое "скольжение" при остановке объекта. Какие способы еще могут быть?
Division
08.01.2010, 22:58
ApplyForce юзай.
Скольжение по идее и должно быть, тела как правило мгновенно не останавливаются. Можешь попробовать LinearDamping подкрутить.
ApplyForce юзай.
Скольжение по идее и должно быть, тела как правило мгновенно не останавливаются. Можешь попробовать LinearDamping подкрутить.
Спасибо, сейчас попробую :drinks:
Добавлено через 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 и спрайт каждого объекта
Division
09.01.2010, 00:18
Изврат полнейший.
Во-первых если не хочешь чтобы тело вращалось вообще, используй fixedRotation.
Во-вторых если хочешь приложить силу к центру тела, юзай GetPosition(), а не то что ты написал. Ты прикладываешь силу к координатам половины высоты и ширины объекта, следовало бы прибавить координаты по x и y.
Далее, ты зачем-то преобразовываешь из координат экранных в физические - полный изврат, все расчёты должны проводиться в координатах физики и переводиться в экранные только для отрисовки и позиционирования спрайтов.
Далее, ты зачем-то преобразовываешь из координат экранных в физические
Перевожу только потому, что мне так понятнее и нагляднее. Насколько я знаю, в box2d 1 метр = 30 пикселей, поэтому в итоге я и передаю нормальные для движка значения и он с ними работает нормально как с метрами. Насчет fixedRotation - спасибо попробую. Еще почитал, с массой вроде можно поэксперементировать
Division
09.01.2010, 11:33
Перевожу только потому, что мне так понятнее и нагляднее
Понятнее это когда у тебя вся работа проходит в координатах физики, я серьёзно.
в box2d 1 метр = 30 пикселей
Не правда, 1 метр к пикселям никак не привязан, ты сам выбираешь подходящий коэфициент.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.