Minecraft 的击退机制概览核心模型是“方向向量 + 强度标量”:近战或弹射物命中时,系统沿“攻击者→被攻击者”的单位方向施加一次速度冲量(仅水平分量由方向决定,垂直分量单独叠加),强度由来源类型、武器附魔(如锋利/击退)、是否冲刺、受害者是否在空中等因素决定。关键特性包括:
击退附魔对“基础击退距离”按比例放大:Knockback I ≈ +105%,Knockback II ≈ +190%;冲刺攻击天然更强。
受害者在空中受到的击退更小。
双方移动时的相对运动会对水平击退做约×0.6的衰减(单次判定,不叠加)。
存在全局上限:玩家在无指令情况下最多被击退约6 格;部分生物(如监守者 Warden)完全免疫击退。
近战与弹射物的击退方向均来自相对位置(弹射物常用“抛出点→命中点”的差向量)。
Hytale 走向“更真实动量传递”的可能性
官方目前未公开 Hytale 的精确击退物理,但从其强调的“更真实的受击反馈、数据驱动与物理融合”的方向看,完全有能力引入更接近真实世界“动量/冲量”的模型。若采用,常见做法包括:
以“冲量 I = m·Δv”为核心,按质量分配速度变化;轻目标更易被推开,重目标仅被“踉跄/失衡”。
区分“弹性碰撞”(能量保留、反弹)与“非弹性碰撞”(能量损失、嵌入/倒地),用恢复系数 e ∈ [0,1]控制。
将击退与受力点/部位关联:头/肩命中产生更大角冲量(失衡/眩晕),脚底命中更易“后撤”。
引入接触法向与摩擦/地形:沿斜面的击退会分解为法向“反弹”和切向“滑移”;贴地时摩擦消耗部分动量。
用“韧性/姿态”替代固定无敌帧:受击累积失衡值,超过阈值才进入硬直/倒地,允许通过格挡/翻滚/抓附提前解除。
让防护装备与盾牌参与动量传递:举盾偏折/耗能,低姿态获得减伤与位移补偿(体力/耐力代价)。
对爆炸/重击等大能量来源采用“近场强衰减 + 远场弱衰减”的冲量场,避免全图“过推”。
在性能侧以“事件驱动 + 状态机 + LOD”实现:近场高精度、远场低精度;高频碰撞做时间切片与批处理。
两种模型的对照
维度 | Minecraft 现行 | Hytale 可采用的“动量传递”思路 |
|---|
方向 | 攻击者→受害者单位向量(水平),垂直分量单独叠加 | 接触法向 + 相对速度方向;支持法向反弹/切向滑移 | 强度 | 来源类型 + 击退附魔 + 冲刺/空中等标量系数 | 冲量 I = m·Δv,按质量与恢复系数 e分配;护甲/盾牌耗能 | 质量与速度 | 不区分质量,质量仅影响下落/受击动画表现 | 质量影响 Δv;高速冲击产生更大角冲量与失衡 | 能量与衰减 | 固定强度 + 距离无关的水平衰减(×0.6 特例) | 近场强、远场弱的指数/多项式衰减;与环境摩擦/地形耦合 | 状态与抗性 | 受击后伤害免疫窗口;击退抗性属性 | 韧性/硬直阈值;部位命中、姿态与防护参与动量分配 | 表现与反馈 | 统一“后撤”动画 + 屏幕抖动 | 失衡、踉跄、后撤、翻滚、抓附、击落等分层受击反应 |
上述对照中的 Minecraft 机制要点(方向来源、附魔/冲刺影响、空中衰减、移动相对衰减、上限与免疫等)均见公开资料与社区技术文档的归纳。
落地实现建议(若 Hytale 采用动量模型)
参数化冲量公式:
基础冲量 I0 由来源类型与武器/技能决定;
质量因子 w = m_target / (m_attacker + m_target),Δv = I0 / m_target;
恢复系数 e 控制反弹(e=1 完全弹性,e=0 纯耗能);
最终速度 v_new = v_old + Δv·(1 − e)(再叠加切向摩擦/滑移)。
方向分解:v_n = (v·n)n,v_t = v − v_n;v_out = v_n·(−e) + v_t·(1 − μ·dt)(n 为接触法向,μ 为摩擦系数,dt 为帧时长)。
姿态与防护:举盾时仅施加法向偏折冲量并乘以耗能系数 < 1;低姿态/翻滚获得减伤系数与位移补偿;头部命中增加失衡时长与角冲量。
性能护栏:对高频碰撞使用空间哈希/网格分桶、时间切片与LOD;对大范围爆炸采用径向分区与GPU 粗粒度计算 + CPU 细粒度修正。
|