なぜ必要なのか

プレイヤーがリンゴへ移動して得点する果樹園ゲームを作るとします。リンゴごとに見た目と接触処理をコピーすると修正がずれます。制作側は表示と接触の部品をツリーとして再利用したく、視覚的な動作グラフよりシーン中心の作業を重視します。

どう解決するのか

図にはプレイヤー・床・カメラ・リンゴのインスタンス1つがあります。アイテムへ移動で独自の接触処理が動き、得点は0から1になりアイテムが消えます。再接触しても加点されません。移動前に接触を無効にすると収集に失敗し、得点は0のままです。リセット・再読み込みで元に戻ります。実際のエンジンではなく概念シミュレーションです。

果樹園のシーンを見る

概念シミュレーション

Godot

果樹園でプレイヤーをリンゴへ移動します。独自の接触処理が1点を与えて削除します。

PIC
P: プレイヤー · I: リンゴ · C: カメラ · ─: 床

得点: 0 · リンゴ: 存在

初期メインシーン · ノードツリー

  • プレイヤー · CharacterBody3D
  • 床 · StaticBody3D
  • カメラ · Camera3D
  • リンゴ · シーンのインスタンス
    • Area3D → CollisionShape3D
    • 再利用シーン → 独自の得点シグナル
実行境界
模型:シーンのノードでリンゴを構成し、接触が独自の取得規則を呼びます。
状態と責任
得点と取得状態はページ模型が持ちます。リセットで消え、Godotエンジンは実行しません。

本文内の架空のデモです。リセット・再読み込みで初期状態に戻ります。

どんな考え方なのか

Godotはノードをシーンにまとめ、別のシーン内にインスタンスとして置けます。シーンは再利用するリンゴにもゲームの開始点にもなります。

ゲーム処理と書き出し結果は別に検証します。

出典