0

図を参照してください:

スイング図

box2D では、ピボット アームを青いボックスに取り付けて、ピボット アームを伸縮させる方法を考えています。

青いボックスは、プリズマティック ジョイントを使用して左右に移動し、トラック/レールとして機能するように設定されています。青いボックスが左右に動くと、その勢いでスイングアームがスイングします。私はこれでうまくいきました。

私の問題は、一番下の緑色のボックスをスイング アームの上下に移動する方法を確実に思いつかないことです。プレーヤーが押し上げた場合、下の緑色のボックスがスイング アームを上に移動するようにします。プレーヤーが押し上げるのをやめると、下部の緑色のボックスが停止し、スイング アームに沿っていた場所に残ります。やりたいけどスイングアームの勢いをキープ。

青いボックスと下の緑のボックスの間の線だけをレンダリングするので、伸びたり縮んだりしているように見えます。

プリズマティック ジョイントとディスタンス ジョイントを試しましたが、ジョイントに新しい制限または距離を設定すると、滑らかな動きになりません。関節の剛性が十分ではありません。たとえば、プリズマティック ジョイントを短くするとき、新しいジョイントの長さの最後に下の緑色のボックスを再配置する方法がわかりませんが、以前の運動量と回転を維持したままです。

何か案は?

4

1 に答える 1

-1

あなたがすでに行ったことを見ずにコードを提供するのは難しいでしょう。しかし、あなたの問題の解決策は、使用することです... 数学。

振り子が揺れる速度を計算することは、実際にはよく知られた問題です。「周期」は、振り子が 1 回の上下スイングを完了するのにかかる時間であり、振り子の速度を支配する式は次のとおりです。

T = 2*PI*sqrt(L/g)    where "L" is the length of the pendulum

したがって、このように問題をパラメータ化できれば、ユーザーが緑色のボックスを「上」に動かすと減少Lし、振動の周期 ( T) が下がるため、振り子の速度が上がります。

補足として、青いボックスを動かしたい場合、あなたが持っているものは複合振り子と呼ばれ、振り子の振動周期の方程式は次のように変更されます。

T = 2*PI*sqrt(I/mgR)    where "R" is the adjusted length of the pendulum

ここで、I はボックスの慣性モーメントで、次の式に等しくなります。

I = (m/6) * h^2         where h is the length of one side of the blue box
于 2012-12-21T03:32:50.257 に答える