概述
“执行脚本”是将 Godot 的脚本语言 GDScript 作为“执行动作”使用;“脚本条件判断”则是将同样的 GDScript 作为“条件”使用。通过利用 GDScript,您可以实现那些预设动作/条件无法完成的操作,并在可视化脚本中加以应用。
技术概述
这些动作/条件允许您将附加在 GameObject“子节点”上的 GDScript“方法”作为动作/条件来使用。
具体使用方法
- 在希望使用动作/条件的 GameObject 下创建一个“Node2D”。
- 为创建的“Node2D”附加 GDScript。名称可以任意填写。
- 请复制/粘贴以下示例代码。该代码包含一个名为
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
- 在任意链接的“其他条件”中添加“脚本条件判断”,并将目标节点设置为刚才添加的“Node2D”,执行方法设置为“is_player_in_x_range”。
- 尝试让玩家对象靠近,以验证转移功能是否正常工作。
此外,您也可以在同一个 GDScript 中注册多个方法并加以区分使用。
本次为了便于理解,我们通过“脚本条件判断”进行了说明,但“执行脚本”的设置方法相同,仅在选项上略有差异。
“执行脚本”的选项:“执行时机”
“执行时机”顾名思义,表示“脚本被执行的时机”。
- “状态开始时”:当转移到设定的状态时,立即执行该方法。
- “状态中始终”:只要处于设定的状态中,每一帧都会执行该方法。由于处理量相对较大,请注意使用。
- “状态结束时”:当离开设定的状态时,执行该方法。


