物理演算についてのチュートリアル

ゲームに物理演算を取り入れたいです。アクツクGでも物理演算は使えるようですがいまいち使い方がわからなくて・・・。

良ければチュートリアルを用意していただけないでしょうか?

もし既に解説ページがあれば教えてほしいです。

私が調べた限りでは、公式の物理演習チュートリアルはまだありません。[ノード追加]リストにある[PhysicsGameObject]ノードは未完成で、エディタ内の説明には「未実装」と記載されており、ビジュアルスクリプトでもこれを使用しているものは見つかりませんでした。そのため、今回はこのノードは一旦おいておいたほうがよいでしょう。ただし、通常のGodotの物理演算はAGMakerで機能しており、試す最も簡単な方法は、プレイヤーが押せる箱を用意することです。

  1. ルートにRigidBody2Dを持つ新しいシーンを作成し、その下にCollisionShape2DとSprite2Dを追加して保存します。
  2. RigidBody2DでMass(質量)を設定し、[Physics Material Override](物理マテリアルオーバーライド)の下で新しいPhysicsMaterialを追加し、Friction(摩擦)とBounce(反発)を設定します。
  3. Collision Layer(衝突レイヤー)とMask(マスク)をプレイヤーの壁衝突に合わせて設定します。そうしないと、プレイヤーとオブジェクトが互いにすり抜けてしまいます。
  4. シーンをマップに配置して再生します。オブジェクトは落下し、着地してその場に留まるはずです。
  5. 公式サンプル投稿からCA_PushRigidBody.gdをダウンロードし、プロジェクトフォルダ内の任意の場所に配置します: カスタムアクションプラグイン公式サンプル
  6. プレイヤーに[Push RigidBody](剛体を押す)アクションを歩行状態に追加します。この状態が実行されている間、プレイヤーが接触したRigidBody2Dは押され、Push Force(押す力)でその強さを設定できます。

Moonlingは、さまざまなボディタイプとその用途についてまとめており、特定のオブジェクトにどのタイプを割り当てるべきかの判断に役立ちます:

制限事項として、ビジュアルスクリプトはルートがGameObjectであるオブジェクト上でしか実行されないため、上記の箱には独自のスクリプトを付与できません。ビジュアルスクリプトで反応する物理オブジェクト(例えば、プレイヤーにダメージを与える瓦礫など)が必要な場合、MoonlingはRigidBody2Dの子ノードと、両者を一緒に保つための小さなスクリプトを持つGameObjectを投稿しています。これはコンセプト実証としてマークされているため、これを基に構築する前に少しテストすることをお勧めします:

もしあなたが探しているものがコンベアベルト、ジャンパッド、または風のようなものに近い場合、2.0で追加されたForce Area(力領域)とSet Object Velocity(オブジェクト速度の設定)を使えば、上記の手順なしで実現できるかもしれません: