找回密码
 立即注册
Thytale-Hytale世界 Portal Hytale_MC 简中 查看内容

【粘液块的实体碰撞计算】Minecraft中推动实体时的弹性物理,Hytale的物理引擎会如何处理实体碰撞?

2025-11-23 21:31| 发布者: Linzici| 查看: 3| 评论: 0

摘要: Minecraft 的粘液块碰撞与弹跳规则要点当实体从上方落到粘液块时,会依据落地前的竖直速度被弹起,弹跳高度在短时间内迅速衰减;例如从255 格落下约弹至50 格,从50 格落下约弹至22 格,最大弹跳高度约为57.625 格。 ...
 Minecraft 的粘液块碰撞与弹跳规则要点
  • 当实体从上方落到粘液块时,会依据落地前的竖直速度被弹起,弹跳高度在短时间内迅速衰减;例如从255 格落下约弹至50 格,从50 格落下约弹至22 格,最大弹跳高度约为57.625 格。站在粘液块上会明显变“滑”,但摩擦力仍大于冰。若落在粘液块的边缘(邻接任何非粘液块,包括空气),会被视为落在普通方块上,不弹跳且可能受伤。从侧面对粘液块碰撞通常不会弹起,除非该粘液块正被活塞推动。玩家按住跳跃键接触时只执行一次普通跳跃;按住潜行则不弹跳。多数生物可反复弹跳,例外包括鸡、恶魂、蝙蝠、幻翼、蜜蜂、鹦鹉、恼鬼物品、下落的沙子/沙砾、矿车、船不会弹起,但粒子会。与活塞交互时:被粘液块推动时,前方的实体会被沿推动方向弹射;被拉动时不会弹射。粘液块本身可被活塞推动/拉动并带动相邻方块(遵循12 方块移动上限与诸多例外)。
Hytale 物理引擎处理实体碰撞的可行机制
  • 常见游戏物理管线会将碰撞分为:Broad Phase(用AABB/包围盒做粗筛)→ Narrow Phase(精确求交,得到接触点、法线、穿透深度)→ Collision Response(基于冲量与约束求解,施加法向冲量 J 与切向摩擦力,更新线/角速度)。其中碰撞响应常用恢复系数 e刻画“弹性”,并结合摩擦系数 μ 计算切向冲量;积分多采用半隐式欧拉以兼顾稳定性与性能。这套流程天然支持“弹性/阻尼/摩擦/质量/惯性”等参数化控制,可用来实现从“完全弹性”到“完全非弹性”的连续谱。对于高速运动与薄壁穿透,可启用CCD(连续碰撞检测)以避免“穿模”。
在 Hytale 中复刻并扩展“粘液块式”弹性的设计建议
  • 为“弹性方块/材料”暴露参数:restitution(恢复系数 e)friction(动/静摩擦 μ)damping(阻尼)stickiness(黏附/抓取阈值)launch multiplier(弹射倍率)、以及是否仅对实体/玩家生效的过滤开关。
  • 区分“坠落弹跳”与“侧面碰撞弹射”:
    • 坠落弹跳:在“onEntityLand”事件中读取实体的垂直速度 v.y,按 e 与阻尼计算反弹速度 v′.y = −e·v.y·damping,再叠加可选的上抛偏置;对边缘命中做 AABB 扩展检测,命中非同类邻接即判定为“边缘落地”,不弹跳。
    • 侧面弹射:当弹性方块被运动(如被活塞/致动器推动)且与实体发生 Narrow Phase 接触时,沿接触法线 n 施加法向冲量 J = −(1+e)·(v_rel·n)·m,再按 μ 计算切向冲量做滑动/摩擦;若启用“黏附”,在接触持续时间内累积抓取力并在释放时给予一次定向冲量作为“弹射”。
  • 与“活塞/致动器”协同:在方块移动事件里对“接触实体列表”做一次性冲量分配与速度限幅,避免同刻多次叠加导致能量爆炸;为“被黏附体”设置最大抓重脱离速度,必要时触发“滑移/脱粘”。
  • 性能与稳定性:对高频部件使用事件驱动(而非每刻轮询),为“高速实体”启用CCD或保守的“安全步长”;将“粗筛(Broad Phase)”与“精确求交(Narrow Phase)”分层,必要时用BVH/网格扫掠优化;对大量小物体启用休眠/岛分割减少求解成本。

鲜花

Mobile|Thytale-Hytale世界 |网站地图

GMT+8, 2025-11-24 05:57

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部