死亡命令
本页面镜像自 BedrockWiki
根据原始项目协议授权。本文经过AI翻译处理,如有内容遗漏,可以提交PR进行补充。
了解更多关于动画控制器的知识
我将"死亡效果"定义为"当实体死亡时执行某些操作"。以下是几种应该避免的错误实现方式:
- 在实体文件中检测死亡:通过添加组件然后尝试在动画控制器中检测该组件。这种方法是错误的,因为实体在被移除前动画控制器没有机会运行。
- 通过外部源检测死亡:例如使用持续运行的命令方块。这种方法并非完全错误,在某些情况下甚至可能是优选方案,但存在性能损耗且容易出错。
使用 q.is_alive 查询
创建死亡效果的最佳方式是使用is_alive
查询。只需在动画控制器中创建基于is_alive
的状态过渡,on_entry
中的命令会在实体被移除前执行。
示例动画控制器:
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 我已死亡!"]
}
}
}
}
}
在玩家实体上的应用
对于玩家实体,需要在死亡状态中添加额外过渡来确保状态重置:
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"
}
]
}
}
}
}
}
WARNING
需要启用实验性玩法
使用 minecraft:on_death 组件
通过在行为包的entity.json
文件中使用minecraft:on_death
组件,可以更直接地实现死亡命令:
- 在组件部分添加触发逻辑:
json
"minecraft:on_death" : {
"event" : "wiki:on_death",
"target" : "self"
}
- 在事件部分定义执行内容:
json
"wiki:on_death": {
"run_command": {
"command": [
"say 我已经死了!"
]
}
}
TIP
使用此方法可以在实体死亡后仍然为其添加计分板分数和标签