手册:“执行脚本”“用脚本进行条件判断”的使用方法

概述

“执行脚本”是将 Godot 的脚本语言 GDScript 作为“执行动作”使用;“脚本条件判断”则是将同样的 GDScript 作为“条件”使用。通过利用 GDScript,您可以实现那些预设动作/条件无法完成的操作,并在可视化脚本中加以应用。

技术概述

这些动作/条件允许您将附加在 GameObject“子节点”上的 GDScript“方法”作为动作/条件来使用。

具体使用方法

  1. 在希望使用动作/条件的 GameObject 下创建一个“Node2D”。
  2. 为创建的“Node2D”附加 GDScript。名称可以任意填写。
  3. 请复制/粘贴以下示例代码。该代码包含一个名为 is_player_in_x_range 的方法,当属于"Player"组的对象在 X 方向上距离在 100 像素以内时,返回 TRUE(即触发转移)。由于仅根据 X 坐标进行判断而不考虑 Y 坐标,因此即使玩家的高度存在差异也能正常工作。此方法适用于“当玩家靠近时从上方落下的陷阱或敌人”等场景。
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. 尝试让玩家对象靠近,以验证转移功能是否正常工作。

此外,您也可以在同一个 GDScript 中注册多个方法并加以区分使用。
本次为了便于理解,我们通过“脚本条件判断”进行了说明,但“执行脚本”的设置方法相同,仅在选项上略有差异。

“执行脚本”的选项:“执行时机”

“执行时机”顾名思义,表示“脚本被执行的时机”。

  • “状态开始时”:当转移到设定的状态时,立即执行该方法。
  • “状态中始终”:只要处于设定的状态中,每一帧都会执行该方法。由于处理量相对较大,请注意使用。
  • “状态结束时”:当离开设定的状态时,执行该方法。