迷路のスクリプトを書こう
スクリプトの作成
続いて「Maze」ノードにスクリプトをアタッチします。
「シーン」ドックで「Maze」ノードを右クリックして「スクリプトをアタッチ」を選択します。
「ノードにスクリプトをアタッチする」ダイアログが表示されますので「テンプレート」にチェックを入れて、そのまま「作成」ボタンを押します。
res://scn/maze/maze.gd
と保存されたはずです。
このmaze.gd
をScriptビューで開き、次のようにスクリプトを書き換えます。
extends Node2D @export var clear_scene: PackedScene @onready var player = $Player @onready var camera = $Camera2D func _ready() -> void: pass func _process(_delta: float) -> void: camera.global_position = player.global_position
いくつか説明が必要です。1つずつ解説していきます。
スクリプトの解説
@export
を付けると、「インスペクター」ドックに項目が追加されます。下のスクリプトでは、このあと作成する「Clear」シーン(clear_scene.tscn
)をドロップ可能にします。
@export var clear_scene: PackedScene
ここでは型ヒントを付けています。「PackedScene」というシーンの型を書いています。こうすることでシーンだけを受け入れるようにします。
@onready
を使い、「Player」と「Camera2D」を_ready
の直前に選択しておきます。
@onready var player = $Player @onready var camera = $Camera2D
この2つは_process
関数で毎回呼び出しますので、選択のオーバーヘッドを軽減しています。
続いて、_process
関数の説明をします。
func _process(_delta: float) -> void: camera.global_position = player.global_position
_process
関数の引数のdelta
を_delta
に変更します。こうすることで、「引数delta
が使用されていない」という警告が、Godot Engineのデバッガーに表示されなくなります。
_process
関数の処理では、プレイヤーのグローバル位置をカメラのグローバル位置に設定しています。
こうすると、プレイヤーは画面内で移動せず、プレイヤーが移動したときはカメラが追随するようになります。
このカメラの追随をすぐに確認したいところですが、背景がまだ何もないので確認できません。実際の確認は、次回に迷路を作成したあとになります。
このmaze.gd
に書くスクリプトは、これだけではありません。次回以降、処理を付け加えていきます。今回の記事でmaze.gd
に書く処理は、ここまでです。