2

宇宙に浮かぶ回転する形を作ろうとしています。環境にはまだ重力がありますが、静的であるため、これらのプラットフォームオブジェクトに影響を与えることはありません(右?)。どうすれば一定の角速度を適用できますか?値を割り当てても適用されないようです。おそらく静的であるためです。

最も単純な例は、回転するギア、自動化されたシーソー(外力の影響を受けない)です。私が作成しようとしているのは、ユーザーが制御するボールに干渉する可能性のある回転する長方形だけです。

ジョイントを使用して固定する必要がありますか?動的オブジェクトの影響を受けない詳細を指定するにはどうすればよいですか?

これに対する答えを持っている人に感謝します!

4

1 に答える 1

0

実際、いくつかの一般的なものの例を示す素晴らしいリソース サイトを見つけました: http://blog.thestem.ca/archives/102

注意すべき重要なことは、ジョイントはそれ自体ではほとんど役に立たないことです (または、それに接続された b2Body が 1 つだけであっても)。

.body1 および .body2 プロパティに関連付けるには、常に2 つのボディが必要です。したがって、オブジェクトをワールド/背景に「ピン留め」するには、2 つのボディ候補の 1 つとして「ダミー」ボディを作成する必要があります。もう 1 つは目的の移動オブジェクトになります。angularVelocity を制御したり、更新メソッドで本体の角度を直接操作したりするのではなく、モーターの速度とトルクが「回転」させるための鍵となります

var pivotDef:b2BodyDef =    new b2BodyDef();
pivotDef.position.SetV( _b2body.GetWorldCenter() );
_b2bodyPivot =  b2WorldInst.CreateBody( pivotDef );

var jointDef:b2RevoluteJointDef =   new b2RevoluteJointDef();
jointDef.Initialize( _b2bodyPivot, _b2body, _b2bodyPivot.GetPosition() );
jointDef.motorSpeed =       1;
jointDef.maxMotorTorque =   10000000;
jointDef.enableMotor =      true;
jointDef.enableLimit =      false;

var joint:b2RevoluteJoint = b2WorldInst.CreateJoint( jointDef )  as b2RevoluteJoint;

--

うまくいけば、他のフラッシュ物理学者がこれを理解する時間を節約できます:)

于 2011-02-24T17:51:29.487 に答える