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

概要

Area2DGameObject1.2.0 バージョン で導入されたゲームオブジェクトです。従来の GameObject と比較して、物理衝突に関連する機能を省略することで、実行負荷を軽減します。

物理衝突ができないため、プレイヤーや敵などのキャラクター(壁をすり抜けてしまうと問題が生じる)や、キャラクターの障害物となる破壊可能な壁などには適していません。
しかし、物理衝突を必要としないオブジェクトを Area2DGameObject に置き換えることで、ゲーム全体の処理負荷を効果的に軽減できます。

技術概要

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

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

「物理衝突」ができないため実現できない機能

物理衝突をサポートしないため、以下の動作は実現できません:

  • 他のオブジェクトと衝突しない。
  • 地面や壁の形状に沿って移動できず、斜面を滑ることもできない。
  • テンプレート移動アクション内の 「跳ね返り移動」 および 「高所から落ちない」 機能が動作しない。

Area2DGameObject で動作しない属性については、システムが警告メッセージを表示します。

「物理衝突」がなくても実現できる機能

  • 他のオブジェクトとの接触は検出できるため、壁判定などの接触条件は正常に動作します。
  • 重力の影響を受けることができます。

これはセンサーのようなものと理解してください:実体衝突はありませんが、検出は可能です。
基本的に、上記の「実現できない機能」以外の機能は正常に使用できます。

ビジュアルスクリプトで 「タイルに接触したとき」「移動速度を0に設定」 などの動作を設定することで、擬似的な衝突処理を実現できます。たとえば、敵を倒した後にアイテムが散らばる効果を模倣できます。
ただし、これは擬似的な処理であるため、オブジェクトが重なるなどの問題が発生しやすくなるため、注意が必要です。

Area2DGameObject の使い方

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

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