マニュアル: 「スクリプトの実行」「スクリプトで条件判定」の使い方

概要

「スクリプトの実行」はGodotのスクリプト言語であるGDScriptを「実行アクション」として使用するもの、
「スクリプトで条件判定」は同じくGDScriptを「条件」として使用するものです。
プリセットのアクション/条件では行えないような動作も、GDScriptを使うことでヴィジュアルスクリプトで扱うことができるようになります。

技術的概要

これらのアクション/条件は、GameObjectの「子ノード」にアタッチされたGDScriptの「メソッド」をアクション/条件として利用できるようにします。

具体的な使い方

  1. アクション/条件を使いたいGameObjectの子として「Node2D」を作成します。
  2. 作成した「Node2D」にGDScriptをアタッチします。名前はなんでも大丈夫です。
  3. 以下のサンプルコードをコピー/ペーストで貼り付けてください。このコードには、"Player"グループのオブジェクトがX方向に100pixel以内に近づくとTRUEを返す=遷移する、というメソッド「is_player_in_x_range
    」があります。なお、Y座標を考慮せずX座標だけで判定するので、プレイヤーの高さと差があっても動作します。「プレイヤーが近づくと上から落ちてくる罠や敵」に使えるメソッドです。
extends Node2D

@export var attack_range := 100.0
var player: Node2D

func _ready():
	# グループ "Player" に登録されているプレイヤーを自動取得
	player = get_tree().get_first_node_in_group("Player")

func is_player_in_x_range() -> bool:
	if not player:
		return false

	var diff_x = abs(global_position.x - player.global_position.x)
	return diff_x <= attack_range`
  1. 任意のリンクのその他の条件で「スクリプトで条件判定」を追加し、対象ノードに先程追加した「Node2D」実行対象メソッドに「is_player_in_x_range」を設定して追加します。
  2. プレイヤーのオブジェクトで近づいて遷移が動作するか試してみましょう。

なお、1つのGDScriptに複数のメソッドを登録して使い分けることも可能です。
今回は、わかりやすいように「スクリプトで条件判定」で説明をしましたが、「スクリプトの実行」でも設定方法は同じですが、オプションに少し違いがあります。

「スクリプトを実行」のオプション、「実行タイミング」

「実行タイミング」はその名の通り、「スクリプトが実行されるタイミング」を示しています。

「ステート開始時」:設定したステートに遷移すると同時にメソッドが実行されます。
「ステート中常に」:設定したステートにある間、1フレームごとにメソッドが実行されます。比較的処理が重いので注意しましょう。
「ステート終了時」:設定したステートを離れる時にメソッドが実行されます。