死亡指令
了解更多关于动画控制器的内容
我将"死亡效果"定义为"当实体死亡时执行某些操作"。以下是几种应该避免的错误实现方式:
- 在实体文件中检测死亡,添加组件,然后尝试在动画控制器中检测该组件。这种方法错误的原因是实体会在动画控制器运行前就被移出世界。
- 通过外部源(如循环命令方块)检测实体死亡。这种方法并非完全错误,在某些情况下甚至可能是首选方案。但它消耗资源较大且容易出错。
使用 q.is_alive 查询
创建死亡效果的最佳方式是使用 is_alive 查询。
只需创建一个基于 is_alive 查询转换状态的动画控制器。最终的 on_entry 会在实体被移出世界前执行,让你能够运行指令。
以下是示例动画控制器:
BP/animation_controllers/death.ac.json
json
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.death": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"dead": "!q.is_alive"
}
]
},
"dead": {
"on_entry": ["/say 我已死亡!"]
}
}
}
}
}应用于玩家实体
对于玩家实体,需要在第二个动画状态中添加额外的转换条件,以确保在多次死亡间重置状态:
BP/animation_controllers/death.ac.json
json
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.death": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"dead": "!q.is_alive"
}
]
},
"dead": {
"on_entry": ["/say 我已死亡!"],
"transitions": [
{
"default": "q.is_alive"
}
]
}
}
}
}
}使用 minecraft:on_death 组件
你也可以在行为包的 entity.json 文件中使用 minecraft:on_death 组件,这是实现死亡指令的简便方法。
首先将其添加到组件中并设置为触发自身事件:
json
"minecraft:on_death" : {
"event": "wiki:on_death",
"target": "self"
}然后在事件部分添加对应事件:
json
"wiki:on_death": {
"queue_command": {
"command": [
"say 我已经死了!"
]
}
}TIP
使用此方法时,即使实体已死亡,你仍可以为其添加分数和标签。







