Learn · modules
Minecraft 中什么是穿透?击穿墙壁的原理详解
穿刺技能会忽略视线检测,使攻击穿透墙壁。以下是其运作方式以及服务器几乎总是会检测到它的原因.
穿刺是什么?
穿刺是一种战斗模块,即使攻击者和目标之间有坚固的阻挡物,也能让攻击命中。普通 Minecraft 战斗会先进行一次检查:游戏会追踪一条从你到你击中的目标之间的线,如果这条线在到达目标之前击中地形,则攻击不会生效。穿刺会跳过此检查。栅栏、墙壁、石板,这些都不再重要。检查要么通过,要么失败,而穿刺只是移除了这个要求,这正因如此,它成为了服务器容易检测到的东西之一。
工作原理
原版 Minecraft 在击中目标之前,它会先进行一次射线检测。游戏会从攻击玩家向目标追踪一条直线,并在该直线接触到的第一个实心方块处停止。如果该方块比目标更近,则攻击会落空。这个简单的检查足以让墙壁、紧闭的门或甚至是一根栅栏桩阻止挥击.
穿刺会移除或绕过光线投射,因此攻击会穿透,就像没有阻挡一样。移除并非总是完全的;有些实现方式会保留阻挡碰撞以供移动,但专门用于战斗时则会放弃,还有少数仅停止检查路径上的实体,而非地形,这是一种更狭隘的相同概念。最终结果在所有情况下都是一致的:即使两者之间存在坚实的物体,攻击仍然命中
穿刺与触及
将这与Reach区分开来是值得的。Reach决定了击中的距离范围。Piercing与距离无关,它关注的是两个点之间的线上的内容,而不是该线的长度。一名玩家可以拥有完全普通的Reach,但仍然在使用Piercing,两者经常一起出现,导致人们容易混淆。
| Piercing | Reach | |
|---|---|---|
| 改变的内容 | 视线要求 | 击中距离限制 |
| 穿透 | 玩家之间的墙壁 | 任意范围的开阔空间 |
| 检测 | 服务器射线投射检查 | 击中距离与位置 |
服务器为何会感染
简短的回答是:判定是几何式的且无可辩驳的。击打瞬间,服务器可以在两个玩家的实际位置之间运行自己的射线投射。如果坚实的地面位于该路径上,那么挥杆无法落地的理由就显得毫无道理。与伸展或旋转平滑处理不同,服务器需要为延迟和正常的人类不精确性预留空间,而墙壁要么存在,要么不存在。这几乎不留有误判的空间,也意味着玩家很难逃脱.
常见问题
即使有阻挡物,例如墙壁或栅栏,阻挡了你和目标之间的距离,也能让攻击击中目标。原版 Minecraft 的方块可以直接命中.
范围决定攻击能到达的距离。穿透则无视障碍物。两者解决不同的问题,但通常会一起使用.
服务器能够在击打瞬间自行进行视线检测,而客户端无法绕过路径上的实体阻挡.
这取决于具体实现,但这次攻击的触发方式与合法的请求触发方式相同。欺骗之处在于权限验证,而不是数据包格式。服务器验证了应该发生的情况,却发现有阻碍,从而知道出现了问题.