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

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

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

Регистрация: Aug 2011
Сообщений: 53
По умолчанию b2RevoluteJointDef.enableMotor

Код AS3:
           var _frontWheelJoint:b2RevoluteJoint = _mapBase.world.CreateJoint(_jointDef) as b2RevoluteJoint;
 
             var revoluteJointDef:b2RevoluteJointDef = new b2RevoluteJointDef();
             revoluteJointDef.Initialize(bodyBit1_, _mapBase.world.GetGroundBody(), bodyBit1_.GetWorldCenter());
             revoluteJointDef.maxMotorTorque = 1;
             revoluteJointDef.enableMotor = true;
 
             _mapBase.world.CreateJoint(revoluteJointDef);
почему этот код вешает флешку?(как будто бесконечный цикл обрабатывает)
если закомментировать
Код AS3:
 revoluteJointDef.enableMotor = true;
, то флешка виснеть перестает, но без этой строки весь остальной код теряет смысл

Старый 26.11.2011, 15:06
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 2  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Проблема в чем-то другом

Старый 26.11.2011, 15:43
Silencе вне форума Посмотреть профиль Отправить личное сообщение для Silencе Найти все сообщения от Silencе
  № 3  
Ответить с цитированием
Silencе

Регистрация: Aug 2011
Сообщений: 53
Код AS1/AS2:
            var bodyBit1_:b2Body;
            var bodyDef_:b2BodyDef;
            var polygonShape_:b2PolygonShape;
            var fixtureDef_:b2FixtureDef;
 
            var hStage_:int = _mapBase.stage.stageHeight;
            var wStage_:int = _mapBase.stage.stageWidth;
            var wallThickness_:Number = 5; //толщина стены в пикселях
 
            bodyDef_ = new b2BodyDef();
            bodyDef_.position.Set((wallThickness_ + 60) / METERS, (hStage - wallThickness_ - 48 * 2) / METERS); // позиция
            bodyDef_.type = b2Body.b2_dynamicBody;
            polygonShape_ = new b2PolygonShape();
            polygonShape_.SetAsArray([b2Vec2.Make(-10 / METERS, -10 / METERS), b2Vec2.Make(70 / METERS, 0 / METERS), b2Vec2.Make(-10 / METERS, 10 / METERS)]); // фигура треугольника
            bodyBit1_ = _mapBase.world.CreateBody(bodyDef_);
            fixtureDef_ = new b2FixtureDef();
            fixtureDef_.shape = polygonShape_;
            bodyBit1_.SetUserData("bit 1");
            bodyBit1_.CreateFixture(fixtureDef_);
 
 
             // Дальше идет код, который я уже постил выше. Джоинт:
            var _frontWheelJoint:b2RevoluteJoint = _mapBase.world.CreateJoint(_jointDef) as b2RevoluteJoint;
 
             var revoluteJointDef:b2RevoluteJointDef = new b2RevoluteJointDef();
             revoluteJointDef.Initialize(bodyBit1_, _mapBase.world.GetGroundBody(), bodyBit1_.GetWorldCenter());
             revoluteJointDef.maxMotorTorque = 1;
             revoluteJointDef.enableMotor = true;
 
             _mapBase.world.CreateJoint(revoluteJointDef);
все переменные локальны

Старый 26.11.2011, 16:22
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 4  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Как выглядит код обновляющий мир?

Старый 26.11.2011, 16:36
Silencе вне форума Посмотреть профиль Отправить личное сообщение для Silencе Найти все сообщения от Silencе
  № 5  
Ответить с цитированием
Silencе

Регистрация: Aug 2011
Сообщений: 53
Код AS3:
 private function update(event:Event):void {
            world.Step(1 / METERS, 10, 10);
            world.ClearForces();
            world.DrawDebugData();
        } //End function
METERS = 30

Добавлено через 1 час 19 минут
у кого нибудь есть код с работающим джоинтом и enableMotor? желательно чтобы с кодом тела (которое крепится)

Добавлено через 1 час 43 минуты
вот так заработало:

Код AS3:
//////////////////////////
            //bit 1
            //var bodyBit1_:b2Body;
            var bodyBit1_1_:b2Body;
            var bodyBit1_:b2Body;
 
            bodyDef_ = new b2BodyDef();
            // bodyDef_.position.Set((wallThickness_ + 60) / METERS, (_mapBase.stage.stageHeight - wallThickness_ - 30) / METERS);
            bodyDef_.position.Set((wallThickness_ + 90) / METERS, (_mapBase.stage.stageHeight - wallThickness_ - 70) / METERS);
            bodyDef_.type = b2Body.b2_staticBody;
            polygonShape_ = new b2PolygonShape();
            polygonShape_.SetAsBox(4 / METERS, 30 / METERS);
            bodyBit1_1_ = _mapBase.world.CreateBody(bodyDef_);
            fixtureDef_ = new b2FixtureDef();
            fixtureDef_.shape = polygonShape_;
            bodyBit1_1_.SetUserData("bit 1-");
            bodyBit1_1_.CreateFixture(fixtureDef_);
 
 
            bodyDef_ = new b2BodyDef();
            bodyDef_.position.Set((wallThickness_ + 60) / METERS, (_mapBase.stage.stageHeight - wallThickness_ - 48 * 2) / METERS);
            bodyDef_.type = b2Body.b2_dynamicBody;
            bodyDef_.allowSleep = false;
            polygonShape_ = new b2PolygonShape();
            polygonShape_.SetAsArray([b2Vec2.Make(-10 / METERS, -10 / METERS), b2Vec2.Make(70 / METERS, 0 / METERS), b2Vec2.Make(-10 / METERS, 10 / METERS)]);
            bodyBit1_ = _mapBase.world.CreateBody(bodyDef_);
            fixtureDef_ = new b2FixtureDef();
            fixtureDef_.density = 0.5
            fixtureDef_.friction = 0.5;
            fixtureDef_.restitution = 0.5
            fixtureDef_.shape = polygonShape_;
            bodyBit1_.SetUserData("bit 1");
            bodyBit1_.CreateFixture(fixtureDef_);
 
            // bodyBit1_.SetAngle(Math.PI / 6);
            //bodyBit1_.SetAngle(Math.PI / 6);
            trace(bodyBit1_.GetAngle());
 
            var _jointDef:b2RevoluteJointDef = new b2RevoluteJointDef();
            _jointDef.bodyA = bodyBit1_;
            _jointDef.bodyB = bodyBit1_1_;
 
            _jointDef.localAnchorA = new b2Vec2(bodyBit1_.GetLocalCenter().x / METERS, bodyBit1_.GetLocalCenter().y / METERS);
            _jointDef.localAnchorB = new b2Vec2(0 / METERS, -25 / METERS);
            /*       _jointDef.lowerAngle = b2Settings.b2_pi / 6; // -90 degrees
             _jointDef.upperAngle = 0.25 * b2Settings.b2_pi // 45 degrees
             _jointDef.enableLimit = true;*/
 
            // _jointDef.motorSpeed = 20;
            _jointDef.maxMotorTorque = 20;
            _jointDef.motorSpeed = 20;
            _jointDef.enableMotor = true;
            var _frontWheelJoint:b2RevoluteJoint = _mapBase.world.CreateJoint(_jointDef) as b2RevoluteJoint;
первоначальный код не работал потому что не было строки _jointDef.motorSpeed = 20 , но я же ее(строку) по нескольку раз сувал в разные места - все равно не работало. вообщем хз.


Последний раз редактировалось Silencе; 26.11.2011 в 16:58.
Создать новую тему Ответ Часовой пояс GMT +4, время: 20:37.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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