实体碰撞体
intermediate
碰撞体实体是指玩家可以碰撞、踩踏或进行其他物理互动而不会穿过的实体。这类实体有许多用途,例如模拟方块。
本页将讨论几种创建碰撞体实体的方法。
并非所有技术都适用于所有场景。请通过实验找出最适合您需求的方案。
运行时标识符
通过运行时标识符可以创建碰撞体实体,但目前仅支持两种特定形状的预设,且各自存在副作用。这两种碰撞形状都无法修改或缩放。
船型碰撞体
BP/entities/entity_name.json
json
{
"format_version": "1.16.0",
"minecraft:entity": {
"description": {
"identifier": "wiki:solid_entity",
"runtime_identifier": "minecraft:boat"
. . .
}
}
}- 具有船只外形的碰撞体积
- 附带部分船只特有的效果
潜影贝型碰撞体
BP/entities/entity_name.json
json
{
"format_version": "1.16.0",
"minecraft:entity": {
"description": {
"identifier": "wiki:solid_entity",
"runtime_identifier": "minecraft:shulker"
. . .
}
}
}- 1x1方块尺寸的碰撞体积
- 自动对齐方块网格
- 当支撑方块被移除时会随机传送
minecraft:is_stackable组件
在目标实体的组件中添加minecraft:is_stackable可使其具有碰撞特性。 注意: 若要使实体对玩家生效,需要同时编辑player.json文件。
"minecraft:is_stackable": {}
还需添加minecraft:push_through组件并将其参数设为1:
"minecraft:push_through": 1
(这两个组件都应置于components字段内)
使用方块模拟碰撞
某些情况下,使用/setblock或/fill命令静态或动态放置屏障方块可能是更好的解决方案。需要同时实现方块的放置和清除机制。
/fill ~ ~ ~ ~ ~1 ~ barrier 0 replace air 在1x1x2区域内放置屏障方块
/fill ~1 ~1 ~1 ~-1 ~-1 ~-1 air 0 replace barrier 清除3x3x3区域内的屏障方块
为保证效果稳定,这些命令需要以固定频率触发,可通过实体组件或动画控制器实现。
命令生成法
此方法由Reddit用户u/Maxed_Out10开发,通过盔甲架配合连续的/playanimation命令,可以近乎完美地复现任何方块的实体形态。





