我们是一支三人团队(程序员、3D艺术家、音效设计师),正在为Steam Next Fest准备我们的游戏。我们已经工作了大约4个月,希望能分享一下我们如何解决一些核心技术挑战:

- 运动:在 FixedUpdate 中向球体的 Rigidbody 添加直接力的方法(既是在地面上也在空中)。自然物理摩擦力处理了滚动,控制非常响应。

- 跳跃与着地:我们在 OnCollisionEnter 中检查球体的下半部分碰撞体是否接触到任何东西。对于跳跃本身,我们直接将跳跃惯性注入当前速度向量中——这意味着如果你在斜坡上滚动时跳跃,它会让你飞得更远。我们还添加了300ms的Coyote Time窗口和100ms的Jump Buffer。非常宽容的时限。

- 凹凸碰撞线:即使在完全平坦的地面上,相邻箱形碰撞体之间的缝隙也会随机将球体向上抛出。我们通过在级别开始时将所有静态碰撞体融合为一个连续的 MeshCollider 来解决这个问题。滚动现在是完美光滑的。

- 草地着色器:平坦的地面看起来非常无聊。我们写了一款生成随机草叶的顶点着色器,并且在风吹动时草叶会摇摆。它会根据球体的位置动态地扁平化,当球体滚过它时会产生草地效果。(我们仍在尝试找出沙子表面的好看的外观。)

- 脆玻璃:实时网格破碎太昂贵了。相反,我们在平坦的箱形碰撞体内隐藏了预破碎的碎片网格。碰撞时,主箱会关闭,碎片会打开,并且我们会应用一个快速的爆炸力和音效。

- 级别编辑器:这是项目中最难的部分。我们从零开始构建了一个自定义的运行时级别编辑器,以便能够完美控制块的放置。它具有自定义变换工具、网格对齐、多选项、预设和分组。制作22个级别至少需要1000个人类小时。为了为每个独特的级别提供各种游戏体验:缓慢滚动、友好的竞争、紧张的速度记录和深处的收藏。我们的演示在Next Fest上正式上线,有 8个级别可以免费玩。邀请一些朋友,尝试打败彼此的时间,并向我们提问任何游戏开发问题!