Форум 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=172032)

provigator 30.11.2011 20:02

в общем получилась такая конструкция:
Код AS3:

var body1:b2Body;
var body2:b2Body;
body1 = m_world.CreateBody(bodyDef);
body2 = m_world.CreateBody(bodyDef);
 
var jointDef:b2RevoluteJointDef = new b2RevoluteJointDef();
jointDef.Initialize(body1, body2, body1.GetWorldCenter());
jointDef.enableLimit = true;
jointDef.enableMotor = false;

компилится без ошибок но соединение не создается
объекты движутся независимо
версия 2.0.2

goodguy 30.11.2011 21:01

надо вызывать world.CreateJoint(тут нужный шаринир);

provigator 30.11.2011 23:10

Код AS3:

var jointDef:b2RevoluteJointDef = new b2RevoluteJointDef();
jointDef.Initialize(body1, body2, body1.GetWorldCenter());
m_world.CreateJoint(jointDef);
jointDef.enableLimit = true;
jointDef.enableMotor = false;

соединение получилось
тела вращаются относительно друг друга вокруг точки их соединения
как отключить вращение?
надо получить жесткое соединение - в моем случае соединить два прямоугольника и получить один

goodguy 01.12.2011 07:36

ну очевидно же,
Joint#SetLimits(0, 0);
документация на что?

provigator 01.12.2011 12:13

Код AS3:

jointDef.SetLimits(0, 0);

ошибка:
1061: Call to a possibly undefined method SetLimits through a reference with static type Box2D.Dynamics.Joints:b2RevoluteJointDef.
версия 2.0.2

GBee 01.12.2011 14:02

Цитата:

ну очевидно же,
Joint#SetLimits(0, 0);
документация на что?
Цитата:

Код AS3:

jointDef.SetLimits(0, 0);

ошибка:
1061: Call to a possibly undefined method SetLimits through a reference with static type Box2D.Dynamics.Joints:b2RevoluteJointDef.
версия 2.0.2
Вы не внимательны, m_world.CreateJoint(jointDef) вернет вам b2RevoluteJoint, у которого надо вызывать setlimits

provigator 01.12.2011 14:34

Код AS3:

m_world.SetLimits(0, 0);

такой код тоже выполняется с ошибкой
как правильно вызвать метод SetLimits?

DaFive 01.12.2011 15:34

Цитата:

Вы не внимательны, m_world.CreateJoint(jointDef) вернет вам b2RevoluteJoint, у которого надо вызывать setlimits
:away:

provigator 01.12.2011 15:54

вопрос остается
как правильно вызвать метод SetLimits?

m_world.SetLimits(0, 0);
выполняется с ошибкой

GBee 01.12.2011 16:55

Цитата:

Вы не внимательны, m_world.CreateJoint(jointDef) вернет вам b2RevoluteJoint, у которого надо вызывать setlimits
facepalm :D


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

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