Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [Box2D] Начальный угол поворота тела (http://www.flasher.ru/forum/showthread.php?t=202487)

Fazer 18.07.2013 21:31

Начальный угол поворота тела
 
Здравствуйте. Мне нужно повернуть тело под углом в 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, время: 17:20.

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