概述
“InvokeScript” 允许您将 Godot 的脚本语言 GDScript 用作动作,而**“ScriptConditionEvaluator”** 允许您将 GDScript 用作条件。通过使用 GDScript,您可以在视觉脚本中处理预设动作或条件无法实现的行为。
技术概述
这些动作和条件使得能够使用附加到游戏对象子节点的 GDScript 中定义的方法作为可执行的动作或条件检查。
使用步骤
-
创建一个Node2D作为您想要使用动作或条件的游戏对象的子节点。

-
将GDScript附加到您刚刚创建的 Node2D 上。
脚本名称可以是任意的。
-
复制并粘贴以下示例代码。
此代码包含一个名为**is_player_in_x_range的方法,当"Player"组中的对象在 X 轴上进入100 像素**范围内时,该方法返回TRUE(触发转换)。
它仅检查 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
-
在任意链接的“其他条件”中添加**“ScriptConditionEvaluator”,
将目标节点设置为之前创建的Node2D**,
并指定方法名称is_player_in_x_range。
-
测试当玩家接近对象时转换是否正常工作。
您还可以在单个 GDScript 中定义多个方法,并选择性地使用它们。
在本例中,为了清晰起见,我们使用了"ScriptConditionEvaluator",
但“InvokeScript”的设置过程相同。
唯一的区别在于选项略有不同。
“执行脚本”选项:执行时机
执行时机选项决定了脚本方法何时执行。
- OnStateEnter: 进入指定状态时立即执行该方法。
- OnStateUpdate: 在处于该状态期间,每一帧执行该方法。
(请注意——这可能会对性能造成较大影响。) - OnStateExit: 离开指定状态时执行该方法。

