跳转至

复活触发命令

本页介绍如何通过行为包动画控制器检测玩家的复活时刻,并在复活时执行命令——例如重新赋予状态效果或给予物品。

动画控制器实现

将以下动画控制器添加到player.json的行为包动画控制器中:

BP/animation_controllers/respawn.ac.json
{
  "format_version": "1.10.0",
  "animation_controllers": {
    "controller.animation.player.respawn": {
      "initial_state": "initialization",
      "states": {
        "initialization": {
          "transitions": [
            { "has_died": "!q.is_alive" }
          ],
          "on_exit": [
            "v.delay = 0.2 + q.life_time;",
            "/<死亡时执行的命令>"
          ]
        },
        "has_died": {
          "on_exit": ["/<复活时执行的命令>"],
          "transitions": [
            { "initialization": "q.is_alive && (q.life_time >= v.delay)" }
          ]
        }
      }
    }
  }
}

/<死亡时执行的命令>/<复活时执行的命令>替换为实际需要执行的命令即可。

工作原理

该控制器有两个状态:

initialization(初始化状态)
等待玩家死亡(!q.is_alive为真)。离开此状态时记录死亡时间v.delay = 0.2 + q.life_time,并执行死亡时的命令。
has_died(已死亡状态)
等待玩家复活。转移条件为q.is_alive && q.life_time >= v.delay,即玩家已复活且当前存活时间已超过死亡时记录的延迟值。触发转移时(即刚复活后),执行on_exit中的复活命令,然后返回initialization状态。

v.delay引入了0.2秒的缓冲时间,确保不会在玩家刚死亡时立即误触发复活条件(此时q.life_time会重置为0,小于死亡时记录的值)。