これは実際には簡単なことではないため、「完全な」答えは少し期待できません。これは、box2d の車の例へのリンクです。その紳士のデモリール (リールの 3 番目のデモが最も関連性が高い) を表示し、彼のソース コードをざっと見てください。彼のシミュレーションは、あなたが達成する必要があるものよりも少し高度なので、その仕組みを理解できれば、簡単なバージョンを作成するのに問題はありません.
dougk16 の box2d 拡張機能には (当然のことながら) 多くのコードが含まれているため、彼の車がどのように機能するかを正確に理解するのは難しいかもしれません。簡単な出発点は次のとおりです。前後に移動し、回転できるボディをシミュレートします。つまり、ボート ボディの現在の向きから前方または後方に伸びる 1 つの力と、ボディを左右に回転させる 1 つのトルクです。かなりクールなものを手に入れるために必要なのはこれだけです。始めるのに妥当な場所となるいくつかの疑似コードを次に示します。
if( needs_to_turn )
{
// turn_direction will either be -1 (left) or 1 (right), boat_torque can be a constant to start with, but should probably be controlled by the user
body.ApplyTorque(turn_direction * boat_torque);
}
if( needs_to_move )
{
// facing_vector should be a vector pointing in the direction the boat is facing, the boat_force could be a constant, but again should be controlled by the user
body.ApplyForce(facing_vector * boat_force);
}
今回は関連するチュートリアルへの別のリンクで回答を終了します。これは dougk16 のアクション スクリプトほどクールではありませんが、チュートリアル形式なので、より役に立つかもしれません。