概要
バージョン1.2.0で導入されたArea2DGameObjectは、従来のGameObjectと比較して「物理的な衝突」に関する機能を省くことで動作の負荷を下げたゲームオブジェクトです。
「物理的な衝突」をすることができないため、プレイヤーや敵といった、壁を抜けたりすると困るキャラクターや、壊せる壁などのキャラクターの障害物になるようなオブジェクトには不向きですが、そうではないオブジェクトをArea2DGameObjectに置き換えることでゲームの軽量化を行うことができます。
技術的な概要
従来のGameObjectはCharacterBody2Dノードを継承して作成されたカスタムノードですが、Area2DGameObjectはその名の通りArea2Dノードを継承して作成されています。
各ノードの詳しい違いについては以下のマニュアルをご確認ください。
「物理的な衝突」ができないことでできなくなること
- 他のオブジェクトとぶつかることはできません。
- 床や壁の形状に沿って動く、坂ですべるといったことはできません。
- テンプレート移動アクションの「バウンド移動」や、「段差から落ちない」機能は動作しません。
Area2DGameObjectでは動作しないプロパティについては注意文が表示されるようになっています。
「物理的な衝突」ができなくてもできること
- 他のオブジェクトとの接触を検知することはできるので、壁判定との接触などの接触系条件は正常に動作します。
- 重力の影響を受けることもできます。
実体はないが検知はできるセンサーのようなものだと考えてください。基本的には上記の「できないこと」以外の機能は動作します。
「タイルと接触した時」「移動速度を0にする」といった動きをヴィジュアルスクリプトで組むことで擬似的に接触処理をすることができるため、敵を倒すと散らばるアイテムなどを擬似的に実現することはできますが、めり込み等がおきる可能性は高くなるのでご注意ください。
Area2DGameObjectの利用方法
既存のGameObjectとは互換性があるため、GameObjectノードを右クリックして「型を変更」でArea2DGameObjectにするだけで切り替えることができます。
逆に、Area2DGameObjectをGameObjectに切り替えることも同様にできます。