Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.01.2010, 22:01
imdogma вне форума Посмотреть профиль Отправить личное сообщение для imdogma Найти все сообщения от imdogma
  № 1  
Ответить с цитированием
imdogma
 
Аватар для imdogma

Регистрация: Apr 2009
Сообщений: 78
По умолчанию Перемещение объекта

Подскажите, как можно перемещать предмет в Box2d? Стоит задача двигать главгероя игры. SetLinearVelocity не подходит тк произходит некое "скольжение" при остановке объекта. Какие способы еще могут быть?

Старый 08.01.2010, 22:58
Division вне форума Посмотреть профиль Отправить личное сообщение для Division Найти все сообщения от Division
  № 2  
Ответить с цитированием
Division
 
Аватар для Division

Регистрация: Jul 2008
Адрес: Украина, Херсон
Сообщений: 635
Отправить сообщение для Division с помощью ICQ
ApplyForce юзай.
Скольжение по идее и должно быть, тела как правило мгновенно не останавливаются. Можешь попробовать LinearDamping подкрутить.
__________________
while(1) {}

Старый 08.01.2010, 23:22
imdogma вне форума Посмотреть профиль Отправить личное сообщение для imdogma Найти все сообщения от imdogma
  № 3  
Ответить с цитированием
imdogma
 
Аватар для imdogma

Регистрация: Apr 2009
Сообщений: 78
Цитата:
Сообщение от Division Посмотреть сообщение
ApplyForce юзай.
Скольжение по идее и должно быть, тела как правило мгновенно не останавливаются. Можешь попробовать LinearDamping подкрутить.
Спасибо, сейчас попробую

Добавлено через 12 минут
чтото объект начинает перемещаться вперед, при этом делая безумные сальто вперед )) Точку приложения беру середину объекта
делаю так:
Код AS3:
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.
Старый 09.01.2010, 00:18
Division вне форума Посмотреть профиль Отправить личное сообщение для Division Найти все сообщения от Division
  № 4  
Ответить с цитированием
Division
 
Аватар для Division

Регистрация: Jul 2008
Адрес: Украина, Херсон
Сообщений: 635
Отправить сообщение для Division с помощью ICQ
Изврат полнейший.
Во-первых если не хочешь чтобы тело вращалось вообще, используй fixedRotation.
Во-вторых если хочешь приложить силу к центру тела, юзай GetPosition(), а не то что ты написал. Ты прикладываешь силу к координатам половины высоты и ширины объекта, следовало бы прибавить координаты по x и y.
Далее, ты зачем-то преобразовываешь из координат экранных в физические - полный изврат, все расчёты должны проводиться в координатах физики и переводиться в экранные только для отрисовки и позиционирования спрайтов.
__________________
while(1) {}

Старый 09.01.2010, 01:19
imdogma вне форума Посмотреть профиль Отправить личное сообщение для imdogma Найти все сообщения от imdogma
  № 5  
Ответить с цитированием
imdogma
 
Аватар для imdogma

Регистрация: Apr 2009
Сообщений: 78
Цитата:
Сообщение от Division Посмотреть сообщение
Далее, ты зачем-то преобразовываешь из координат экранных в физические
Перевожу только потому, что мне так понятнее и нагляднее. Насколько я знаю, в box2d 1 метр = 30 пикселей, поэтому в итоге я и передаю нормальные для движка значения и он с ними работает нормально как с метрами. Насчет fixedRotation - спасибо попробую. Еще почитал, с массой вроде можно поэксперементировать

Старый 09.01.2010, 11:33
Division вне форума Посмотреть профиль Отправить личное сообщение для Division Найти все сообщения от Division
  № 6  
Ответить с цитированием
Division
 
Аватар для Division

Регистрация: Jul 2008
Адрес: Украина, Херсон
Сообщений: 635
Отправить сообщение для Division с помощью ICQ
Цитата:
Перевожу только потому, что мне так понятнее и нагляднее
Понятнее это когда у тебя вся работа проходит в координатах физики, я серьёзно.
Цитата:
в box2d 1 метр = 30 пикселей
Не правда, 1 метр к пикселям никак не привязан, ты сам выбираешь подходящий коэфициент.
__________________
while(1) {}

Создать новую тему Ответ Часовой пояс GMT +4, время: 06:35.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 06:35.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.