本文由第三方AI基于17173文章http://news.17173.com/content/04072026/233108158.shtml提炼总结而成,可能与原文真实意图存在偏差。不代表网站观点和立场。推荐点击链接阅读原文细致比对和校验。
《法师淘汰》我写了一篇关于其物理机制的文章
2026-04-07 23:31:08
神评论
17173 新闻导语
探索《法师淘汰》物理机制开发历程!从Unity角色控制器到滑溜物理效果,揭秘游戏开发中的10个关键阶段。适合游戏开发者和玩家阅读。
免责声明:我没搞明白如何嵌入视频,所以建议阅读文字版!
我怀念暴雪娱乐黄金时期《魔兽争霸III》模组制作的创造力。我花了无数时间游玩和开发《魔兽争霸III》的模组。我最喜欢玩的模组之一叫《术士》。有时我会想,如果那天我没有走进大学室友的房间,而他当时正在玩这个游戏,我的人生会是什么样子。

我彻底着迷了。法师们缓慢的移动。逐渐缩小的舞台。需要预判的技能。那滑溜得离谱的物理效果。我和我的兄弟、表亲们一起玩了很长时间。

然后出现了Ouya。如果你听说过它,你现在可能笑了,但这个失败的安卓游戏机及其八人支持功能,是《法师淘汰》概念的催化剂。
> 像《术士》那样,但用手柄和共享视角。
Ouya推荐的开发平台是Unity,所以我跳了进去。我知道滑溜感在《术士》中的重要性,但我很难在Unity中重现它。让我们一起经历这些挣扎的阶段吧。
阶段一:角色控制器
Unity的角色控制器是一个简单的“黑盒”解决方案,用于移动你的角色并让他们尊重你放置在场景中的碰撞体。几乎每个第一人称或第三人称摄像机教程都会从这些家伙中的一个开始。但是谷歌搜索“如何为角色控制器添加速度”,你会沮丧地发现根本没有速度这个概念;你必须把它加到“移动”函数里。然而,角色控制器不适合基于物理的游戏的最大原因是它是运动学的,这意味着它本身不会对其他物理对象做出反应。即使你人为地给其他物理对象施加力,它们也不会反推回来。阶段二:原版刚体
刚体是你在Unity中为物体添加物理的方式。想模拟一堆方块倒塌吗?给一堆盒子碰撞体添加刚体然后点击播放。然而,原版刚体的问题是默认情况下玩家无法控制它,而且如果你每帧都为了移动而覆盖速度,你同时也在覆盖外力,这类似于我们在阶段一遇到的问题,除了刚体会尊重其他刚体。此外,抛弃角色控制器让我们在重力方面遇到了挑战。阶段三:不想要的滑行
因为我们希望地面随时间推移变小,我们选择创建倾斜的表面,并在战斗过程中慢慢将岩浆平面向上移动。然而,依赖重力让你的刚体保持在地面上意味着你的角色会自然地“滑行”下山。你越是通过增加表面摩擦力来修复这个问题,你就越扼杀了任何实现滑溜物理效果的机会。阶段四:地面检测
解决不想要的滑行最简单的方法是只在角色悬空时应用重力,而最简单的方法是用射线检测。每帧从角色向下发射一条射线,获取角色与地面之间的距离。如果距离太大,就应用重力,否则就将角色“吸附”到地面上。射线检测还可以告诉我们是在陆地上还是在岩浆里。阶段五:分离速度
这很好,但我们仍然需要弄清楚外部速度和移动如何共存。如果我们分开追踪它们呢?我们可以保留一个持续的击退向量,可以通过游戏逻辑操作,以及一个与玩家控制一一对应的移动向量,每帧将它们相加,并用结果覆盖刚体的速度。阶段六:自定义摩擦力
真实的物理模拟使用一种叫做库仑摩擦力的东西,它会产生一种线性阻尼:这种模型过于突兀,无法被认为是“滑溜的”。然而,因为我们现在在追踪自己的击退速度,我们可以完全控制它的行为,并且我们可以使用指数衰减让它变得格外滑溜。此外,我们知道我们是否在地面上,所以我们也可以在地面和空中使用不同的摩擦力。对于《法师淘汰》,我们使用0.96作为地面摩擦力,0.99作为空中摩擦力。这就是为什么空中的玩家会飞得更远。阶段七:移动法术
起初,当玩家使用移动法术时,我们每帧都会覆盖击退速度,但这导致像“奔牛冲撞”这样简单的移动法术能够完全抵消像“喷气流”这样的终极法术的击退效果。解决方案是再为法术速度追踪另一个独立的向量。然而,因为我们不希望玩家感觉他们的移动法术被高击退完全吞噬,我们在移动法术激活期间将击退速度乘以0.3。阶段八:物理缓存
我学得太晚了,但Unity物理引擎性能和可靠性的一个重要方面是,尽可能频繁地确保只使用力和速度来移动刚体,这样PhysX缓存才能保持完整。然而,由于我是单独计算重力的,我只在XZ平面上使用速度,手动覆盖Y轴位置,本质上每帧都在为每个单位和每个抛射体破坏物理缓存。在2023年,我们发布了一个补丁,通过获取那个Y值并计算在下一帧到达那里所需的Y轴速度来修复了这个问题。然而,突然变得“更正确”的物理效果揭示了许多我们做错的其他事情,比如抛射体生成得太低(它们会随机卡在地里),“大地墓穴”穿过“深渊”墙壁秒杀法师,以及破坏了一些本应不可能的组合技。现在抛射体在适当的高度生成,但这在一段时间内是许多痛苦的根源。阶段九:道具特氟龙
还记得我们用射线检测来确定地面类型吗?嗯,有一种我称之为“道具”的地面类型,用于我们不希望玩家停留的表面。这些表面会将移动向量归零,并沿表面法线方向施加一个力。“深渊”周围有轻微倾斜的道具墙壁,以温和地将玩家带回场内,结果导致了[如果你不喜欢脏话请静音]。从数学上讲,称这个为“轨道”出奇地准确。阶段十:致谢
感谢阅读!这篇文章最初发布在我们的Patreon上,我再次推荐阅读包含视频的版本,因为那样更容易理解。别担心,那是免费文章。爱你们,
-布雷特
【来源:steam】
热门测试游戏


