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

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

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

Регистрация: Aug 2012
Сообщений: 38
По умолчанию Начальный угол поворота тела

Здравствуйте. Мне нужно повернуть тело под углом в Box2D при его создании, затем оно должно упасть подчиняясь силе гравитации. Например, это тело - дощечка (изначально как-будто на что-то опирается, или чем-то держится) она должна упать (как только воображаемая опора исчезнет), чтобы персонаж мог по ней перейти, например, как мостик. Нашёл только методы bodyDef.angle = число; и body.SetAngle(число); Но они поворачивают на угол намертво, тело так и остаётся по углом и не падает. Подскажите как решить эту проблему. Сейчас код выглядит так:

Код AS3:
private function testBox ():void {
   var body:b2Body; //тело
   var bodyDef:b2BodyDef; //геометрические параметры тела
   var bodyShapePoligon:b2PolygonShape //шейп
   var bodyFixtureDef:b2FixtureDef;//физические параметры тела
 
   bodyDef = new b2BodyDef();//создаем геометрические параметры тела
   bodyDef.type = b2Body.b2_dynamicBody;//тела у нас динамического типа
   bodyDef.position.Set(120 / Box2DHelpers.meters, 100 / Box2DHelpers.meters);//определяем начальные позиции тела
 
   body = world.CreateBody(bodyDef);//создаем и добавляем тело в мир
 
   bodyShapePoligon = b2PolygonShape.AsBox(50 / Box2DHelpers.meters / 2, 50 / Box2DHelpers.meters / 2);//создаем шейп в форме квадрата
 
   bodyFixtureDef = new b2FixtureDef();//создаем объект
   bodyFixtureDef.density = 3;//плотность у обоих тел одинакова, равна 3
   bodyFixtureDef.shape = bodyShapePoligon;//записываем ссылку на шейп. ОБЯЗАТЕЛЬНО
   bodyFixtureDef.friction = 2.5;//у этого тела трение равно 2.5
 
   body.CreateFixture(bodyFixtureDef);//крепим к телу.
 
   body.SetAwake(false);//усыпляем тело
 
   bodyDef.position.Set(310 / Box2DHelpers.meters, 335 / Box2DHelpers.meters);//определяем начальные позиции след.тела
   //bodyDef.angle = (130 * (Math.PI / 180));
   body = world.CreateBody(bodyDef);//создаем и добавляем тело в мир
   bodyShapePoligon = b2PolygonShape.AsOrientedBox(190 / Box2DHelpers.meters / 2, 10 / Box2DHelpers.meters / 2, b2Vec2.Make(0, 0), 130 * (Math.PI / 180)); //создаем дощечку
 
 
   //body.SetAngle(130 * (Math.PI / 180));
 
   body.CreateFixture2(bodyShapePoligon);//крепим к телу. 
  }
Добавлено через 2 часа 50 минут
Разобрался, ссылку на шейп забыл, и плотность не указал.

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

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

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


 


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


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