付録B: サンプルプログラム解説「PhysicsImpulseExample(物理インパルス)」

付録B: サンプルプログラム解説「PhysicsImpulseExample(物理インパルス)」

PhysicsImpulseExample は、車両へ物理的な衝撃を与えるサンプルです。SDK 1.3.3.0では PhysicsImpulseGym というフォルダ名でしたが、SDK 1.4.1.0で現在の名前へ変更されました。 SDK 1.3.3.0で追加された ApplyImpulse と ApplyAre...

PhysicsImpulseExampleは何を見るサンプルか

PhysicsImpulseExample は、車両へ物理的な衝撃を与えるサンプルです。SDK 1.3.3.0では PhysicsImpulse_Gym というフォルダ名でしたが、SDK 1.4.1.0で現在の名前へ変更されました。
SDK 1.3.3.0で追加された ApplyImpulseApplyAreaImpulseAndDamage の使い分けを確認できます。

含まれる主なファイル

ファイル 役割
PhysicsImpulseExample.ts 衝撃付与、範囲判定、デバッグ表示の本体
PhysicsImpulseExample.tscn 試験用の車両、ボタン、位置の配置例
README_PhysicsImpulse.ts 物理インパルスAPIの説明
tsconfig.json サンプルのTypeScript設定

物理インパルスのAPI

名前 役割
mod.ApplyImpulse(...) 指定した1台の車両へ、位置・方向・強さを指定して衝撃を与える
mod.ApplyAreaImpulseAndDamage(...) 指定範囲内の車両へ衝撃を与え、必要ならダメージも加える

ApplyImpulse は、対象車両が決まっているときに使います。
ApplyAreaImpulseAndDamage は、爆発、押し出し、範囲ギミックのように、中心点と半径でまとめて処理したいときに使います。

処理の流れ

サンプルは、ボタンや入力をきっかけに車両へ衝撃を加えます。
単体の車両を押す処理と、範囲内の車両をまとめて吹き飛ばす処理を比べると、引数の考え方が見えます。

方向は CreateVectorDirectionTowards と組み合わせて決めます。
強さは小さく始め、車両が跳ねすぎない範囲で調整してください。

注意点

範囲インパルスは便利ですが、半径を大きくしすぎると多くの車両へ一度に処理が走ります。
頻繁なOngoing処理で連打すると負荷とゲーム体験の両方が荒れます。

デバッグ中は、範囲、強さ、ダメージ量を定数にして、少しずつ上げてください。

結論

PhysicsImpulseExample は、車両を押す、飛ばす、範囲で反応させる処理の教材です。
対象が1台なら ApplyImpulse、範囲内まとめてなら ApplyAreaImpulseAndDamage。この切り分けだけでも、車両ギミックの設計がかなり楽になります。