マニュアル:軽量オブジェクト(Area2DGameObject)

概要

Area2DGameObject は、バージョン 1.2.0 で導入されたゲームオブジェクトで、従来の GameObject と比較して 物理的衝突 に関連する機能を省略することで、処理負荷を軽減するように設計されています。

物理的衝突が行えないため、壁をすり抜けてしまうと問題になるプレイヤーや敵キャラクター、あるいは破壊可能な壁などの物理的な障害物として機能するオブジェクトには不向きです。
しかし、物理的衝突を必要としないオブジェクトを Area2DGameObject に置き換えることで、全体的なゲームパフォーマンスを向上させ、処理コストを削減できます。

技術的概要

従来の GameObjectCharacterBody2D を継承したカスタムノードですが、Area2DGameObject はその名の通り Area2D を継承しています。

これらのノードの詳細な違いについては、以下のマニュアルをご参照ください:

物理的衝突の欠如による制限

物理的衝突がサポートされていないため、以下の動作はできません:

  • 他のオブジェクトと衝突できない。
  • 床や壁の形状に沿って移動したり、斜面を滑ったりできない。
  • 「バウンド移動」「崖から落ちない」 などのテンプレート移動アクションは機能しない。

Area2DGameObject で動作しないプロパティについては、制限を示す警告メッセージが表示されます。

物理的衝突がなくても可能なこと

  • 他のオブジェクトとの接触は検出できるため、接触に基づく条件(例:壁との接触を検出)は正常に機能します。
  • 重力の影響を受けることができます。

これを センサー と考えてください:物理的な体は持たないが、相互作用を検出できます。
一般的に、「制限」に記載されている機能以外は、期待通りに動作します。

視覚的スクリプトを使用して 「タイルに触れたとき」「移動速度を0に設定」 などの動作を定義することで、擬似的な衝突動作を実現できます。これにより、敵を倒したときにアイテムが散らばるなどの効果をシミュレートすることが可能です。
ただし、これはあくまでシミュレーションであるため、オブジェクトが重なってしまうなどの問題が発生しやすくなるため、注意して使用してください。

Area2DGameObject の使い方

Area2DGameObject は既存の GameObject と互換性があります。GameObject ノードを右クリックし、「タイプの変更」 を選択して Area2DGameObject を選ぶことで切り替えられます。

同様に、Area2DGameObjectGameObject に切り替えることも同じ手順で可能です。