Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

移动

开始移动

@[move_route] {

    "target": "物件名称",
    "wait": true

}

补充说明: "wait"|boolean|是否阻塞式执行。若为true,则脚本会暂停,直到移动动作完成。

为指定角色执行一个或多个移动/控制指令,并可选择是否阻塞后续脚本执行。需要与@[end_move_route]配合使用。 @[move_route]本身不直接执行动作,而是包裹一组移动指令。

停止移动


@[end_move_route]

移动控制指令

以下指令可以在 @[move_route]@[end_move_route] 之间使用,控制物件的移动行为。

指令参数说明示例
@[set_through]true / false设置穿透状态,当为 true 时物件移动不会产生碰撞@[set_through] true
@[move_up]向上移动一格@[move_up]
@[move_down]向下移动一格@[move_down]
@[move_left]向左移动一格@[move_left]
@[move_right]向右移动一格@[move_right]
@[move_straight]2 / 4 / 6 / 8按方向码直线移动一格(2=↓, 4=←, 6=→, 8=↑@[move_straight] 2
@[move_random]随机方向移动一格@[move_random]
@[move_toward_player]向玩家方向移动一格@[move_toward_player]
@[move_toward_event]"目标物件名称"向指定物件移动一格@[move_toward_event] "目标"
@[jump][x, y](相对坐标)向相对坐标跳跃,xy 为整数@[jump] [1,0](向右一格)
@[jump_to_point][x, y](绝对坐标)跳跃到地图上的指定坐标@[jump_to_point] [15,8]
@[jump_random]随机跳跃到上下左右一格@[jump_random]
@[move_to_event]"目标物件名称"直接移动到指定物件的位置@[move_to_event] "目标"
@[move_to_point][x, y](绝对坐标)移动到地图上的指定坐标@[move_to_point] [15,8]
@[move_straight_to_point][x, y](绝对坐标)直线移动到目标点,不会拐弯(即使碰到墙也不会绕路)@[move_straight_to_point] [15,8]

额外的,这些虽然不是移动指令,但也可以加在这之间使用。

指令参数说明示例
@[set_move_speed]整数设置物件移动速度@[set_move_speed] 1
@[wait]数字等待指定时长(若 "wait": false 则不会阻塞)@[wait] 30
@[wait_random_in_range][min, max]随机等待一个时长区间(若 "wait": false 则不会阻塞)@[wait_random_in_range] [1,10]
@[set_switch]["name", "value"]设置开关值@[set_switch] ["开关A", true]
@[set_variable]["name", "value"]设置变量值@[set_variable] ["变量B", 114514]
@[toggle_switch]{"switchId": null}切换指定开关状态@[toggle_switch] {"switchId": null}
@[add_variable]{"varId": null, "varValue": 0}给变量增加数值@[add_variable] {"varId": null, "varValue": 1}
@[play_se]{"path":"...","db":0,"pan":0}播放音效@[play_se] {"path":"res://Sounds/...","db":0,"pan":0}
@[queue_free]销毁当前物件@[queue_free]
@[set_visible]true / false设置该物件是否可见@[set_visible] false
@[fade_to]{"opacity":1,"time_sec":1}淡入淡出到指定透明度@[fade_to] {"opacity":1,"time_sec":1}
@[set_dead_zone][x1, y1, x2, y2] 或不填设置死区;不指定参数可视为取消@[set_dead_zone] [0,0,31,17]
@[set_move_zone][x1, y1, x2, y2] 或不填设置移动区域;不指定参数可视为取消@[set_move_zone] [14,7,17,10]
@[set_z_index]数字设置物件显示优先级@[set_z_index] 1
@[set_can_pass_group]"组名"允许该物件可通过包含在组里的物件@[set_can_pass_group] "组A"

示例:用黑魔法来让物件↑↑↓↓←→←→

@[move_route] {"target": "物件A","wait": true}
@[move_up]
@[move_up]
@[move_down]
@[move_down]
@[move_left]
@[move_right]
@[move_left]
@[move_right]
@[end_move_route]

通过这个能让黑魔法编辑移动更为便捷,不需要为每个移动指令都单独指定物件。

循环移动路径

用于为物件设置一个循环执行的移动路线,物件会自动重复执行指定的移动指令序列。

@[set_event_loop_move_route] {

    "target": "物件名称",
    "loop_move_route": "[...]"

}

参数说明:

  • target:目标物件的名称。
  • loop_move_route:一个 JSON 数组,包含一系列移动指令对象。每个指令对象格式为 {"command":"指令名称", "parameters":[参数]}

支持的指令与“移动控制指令”相同,例如 move_upmove_random 等,还可以使用 set_move_zone 来限定移动范围。

示例:

  1. 简单矩形循环:让物件按上→右→下→左的顺序循环移动。
@[set_event_loop_move_route] {

    "target": "物件A",
    "loop_move_route": "[
{\"command\":\"move_up\"},
{\"command\":\"move_right\"},
{\"command\":\"move_down\"},
{\"command\":\"move_left\"}
]"

}
  1. 范围内随机移动:将物件的移动范围限定在指定矩形区域内,然后执行随机移动。
@[set_event_loop_move_route] {

    "target": "物件A",
    "loop_move_route": "[
{\"command\":\"set_move_zone\", \"parameters\":[14, 7, 17, 10]},
{\"command\":\"move_random\"}
]"

}

其中 set_move_zone 的参数为 [左上角x, 左上角y, 右下角x, 右下角y],坐标单位为格子。

  1. 停止循环路径:将移动范围设置为全地图(或足够大的区域),使物件可以自由移动(实际上相当于取消限定范围)。
@[set_event_loop_move_route] {

    "target": "物件A",
    "loop_move_route": "[{\"command\":\"set_move_zone\", \"parameters\":[0,0,31,17]}]"

}

注意:

  • 循环移动路径会一直重复执行,直到被新的 set_event_loop_move_route 覆盖或物件被移除。
  • 该指令不需要放在 @[move_route]@[end_move_route] 之间,它是一个独立的事件。