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

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

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

Регистрация: Jun 2010
Сообщений: 22
По умолчанию Отключение гравитации для конкретного объекта.

Здравствуйте.

Вопрос: как сделать так, чтобы гравитация не действовала на некоторые
избранные тела, но действовала на все остальные?

Первое, что приходит на ум, это компенсировать силу гравитации равной ей по модулю,но
противоположенно направленной силой с помощью функции ApplyForce.

Инициализация:
Код AS3:
			var env:b2AABB = new b2AABB ();
			env.lowerBound.Set (-100.0, -100.0);
			env.upperBound.Set (100.0, 100.0);
			var gravity:b2Vec2 = new b2Vec2 (0.0, 10.0);
			m_b2dWorld = new b2World (env, gravity, true);
			...
В каждом фрейме:
Код AS3:
			m_b2dWorld.Step(1/24, 30);
			var body = m_b2dWorld.GetBodyList();
			while (body)
			{
				body.ApplyForce (new b2Vec2 (0, -10), body.GetPosition ());
				//body.SetLinearVelocity (new b2Vec2 (0, 0));
				body = body.GetNext ();
			}
Получается странно: некоторые тела улетают вверх подобно ракетам,
в тоже время другие - падают вниз как обычно.

Второй попыткой было обнуление y-составляющей линейной скорости.
В этом случае тела медленно, словно перышки, но опускаются на землю.

Подскажите, пожалуйста, как решить данную проблему.

Старый 01.12.2010, 12:47
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 2  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Гравитация - это ускорение свободного падения, а не сила.
Код AS3:
body.ApplyForce (new b2Vec2 (0, -10*body.GetMass()), body.GetPosition ());
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 02.12.2010, 16:42
SmartFox вне форума Посмотреть профиль Отправить личное сообщение для SmartFox Найти все сообщения от SmartFox
  № 3  
Ответить с цитированием
SmartFox

Регистрация: Jun 2010
Сообщений: 22
Вооот я тупанул!
Огромное спасибо, -De-!
А то я уже внутрь Box2D полез отключать.

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

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

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


 


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


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