Skip to content

实体碰撞体

本页面镜像自
BedrockWiki

根据原始项目协议授权。本文经过AI翻译处理,如有内容遗漏,可以提交PR进行补充。

实体碰撞体是指玩家能够碰撞、踩踏或与之发生物理互动,而不会穿透的实体。这类实体有多种用途,例如模拟方块效果。

本页将探讨几种创建实体碰撞体的方法。

并非所有技术都适用于所有场景。建议多加实验,找到最适合您需求的方案。

运行时标识符

通过运行时标识符可以实现实体碰撞效果。但目前仅支持两种预设形态,每种形态具有特定的碰撞箱及副作用。且两种模型的碰撞形状均不可调节或缩放。

船型实体

json
{
  "format_version": "1.16.0",
  "minecraft:entity": {
    "description": {
      "identifier": "wiki:solid_entity",
      "runtime_identifier": "minecraft:boat"
       // 此处省略其他配置...
    }
  }
}
  • 采用船形的实体碰撞箱
  • 具备部分船只特有交互特性

潜影贝型实体

json
{
  "format_version": "1.16.0",
  "minecraft:entity": {
    "description": {
      "identifier": "wiki:solid_entity",
      "runtime_identifier": "minecraft:shulker"
       // 此处省略其他配置...
    }
  }
}
  • 1×1方块尺寸的实体碰撞箱
  • 固定于方块网格
  • 当支撑方块被移除时会随机瞬移

minecraft:is_stackable 组件

通过给实体添加minecraft:is_stackable组件可使其具有实体碰撞属性。 注意: 如果希望实体对玩家而言具有碰撞,需要修改player.json文件。

"minecraft:is_stackable": {}

同时还需添加minecraft:push_through组件,并将其value参数设为1:

"minecraft:push_through": 1

(这两个组件都应置于components项下)

模拟方块效果

某些情况下更适合使用/setblock/fill命令静态或动态放置屏障方块。需配套提供屏障的放置与清除机制:

/fill ~ ~ ~ ~ ~1 ~ barrier 0 replace air 在1×1×2区域生成屏障方块。

/fill ~1 ~1 ~1 ~-1 ~-1 ~-1 air 0 replace barrier 清除3×3×3范围内的屏障方块。

为保证效果连贯性,这些动画控制器实体指令需要保持持续激活状态。可通过实体组件或动画控制器实现持续触发。