方块碰撞箱那些事
20220420 lovexyn0827
五种方块碰撞箱
Minecraft中共有五种边界箱,它们是:
- OUTLINE Shape:与原版Minecraft中玩家直视的方块周围显示的黑框一致,用于确定玩家所对准的方块,1.16.1及之前的一些版本中也用于弹射物的碰撞检查和爆炸接触率计算等机制(MC-73844)。
- COLLISION Shape:也就是通常意义上的碰撞箱,用于实体和粒子的碰撞检查和爆炸接触率计算。
- SIDES Shape:在类似于确定一个按钮是否可以附着在方块顶部的计算中被用到。大部分方块的SIDES Shape与其COLLISION Shape完全相同,但也有以下三个例外:
- 树叶,其SIDES Shape为空;
- 雪层,其SIDES Shape与其OUTLINE Shapes一致;
- 灵魂沙,其SIDES Shape是一个完整方块。
- VISUAL Shape:仅在渲染中被用到。大部分方块的VISUAL Shape与其COLLISION Shape完全相同,但也有以下五个例外:
- 栅栏,其VISUAL Shape与其OUTLINE Shape一致;
- 雪层,其SIDES Shape与其OUTLINE Shapes一致;
- 灵魂沙,其SIDES Shape是一个完整方块;
- 玻璃板,其VISUAL Shape为空;
- 玻璃,其VISUAL Shape也为空;
- RAYCAST Shape,在Raycast过程中用于执行一些目的未知的额外检查。只有下面的几种结构复杂的方块的RAYCAST Shape不为空:
方块碰撞箱的存储VoxelShape
VoxelShape的创建及内部表示
VoxelShape的分割
对VoxelShape的Raycast
VoxelShape与实体碰撞检测
VoxelShape相关的卡顿分析