手册:如何使用“ScriptConditionEvaluator”“InvokeScript”

概述

“InvokeScript” 允许您将 Godot 的脚本语言 GDScript 用作动作,而**“ScriptConditionEvaluator”** 允许您将 GDScript 用作条件。通过使用 GDScript,您可以在视觉脚本中处理预设动作或条件无法实现的行为。

技术概述

这些动作和条件使得能够使用附加到游戏对象子节点的 GDScript 中定义的方法作为可执行的动作或条件检查。

使用步骤

  1. 创建一个Node2D作为您想要使用动作或条件的游戏对象的子节点
    image

  2. GDScript附加到您刚刚创建的 Node2D 上。
    脚本名称可以是任意的。

  3. 复制并粘贴以下示例代码。
    此代码包含一个名为**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
  1. 在任意链接的“其他条件”中添加**“ScriptConditionEvaluator”
    将目标节点设置为之前创建的
    Node2D**,
    并指定方法名称is_player_in_x_range

  2. 测试当玩家接近对象时转换是否正常工作。

您还可以在单个 GDScript 中定义多个方法,并选择性地使用它们。
在本例中,为了清晰起见,我们使用了"ScriptConditionEvaluator",
但“InvokeScript”的设置过程相同。
唯一的区别在于选项略有不同。


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

执行时机选项决定了脚本方法何时执行。

  • OnStateEnter: 进入指定状态时立即执行该方法。
  • OnStateUpdate: 在处于该状态期间,每一帧执行该方法。
    (请注意——这可能会对性能造成较大影响。)
  • OnStateExit: 离开指定状态时执行该方法。