第80章 碰撞、姜(1/2)
碰撞检测並非是什么新鲜的课题,哪怕这个世界的游戏业出了点差错,也並没有影响这些基础算法的叠代。
不少游戏以外的领域也是依赖著这些计算机算法的。
也因此,林琅不用从零开始造轮子,真的完全从头手搓一套物理引擎出来。
只需要执行简单的gjk+epa凸多边形碰撞检测,再加入一点2d的力学计算和重力,就足以他们用於很多项目里了。
而碰撞检测他早在之前准备平台跳跃项目的时候就已经做过一个大致的框架,稍加完善便可以直接投入使用。
事实上碰撞检测是一个对性能开销很敏感的运算过程,如果不加以控制,將会对游戏的性能带来巨大的负面影响。
基於此,林琅再次拿出之前那套『脚本化』开发理念,设立了一个『刚体』的脚本。
只有作为刚体的物体,才能主动的触发碰撞检测。
这样一来哪怕两个物体都堆叠在一起了,只要两者都不是刚体,便不会触发碰撞。
一个很简单的小技巧,却很好的解决了物理效果泛滥的情况。
就以他准备做的平台跳跃游戏来说。
如果没有这样的机制,地图上所有的平台都会不断循环检测自己的碰撞情况,这绝对是一个可怕的情况。
而在经过这番改进后,只需要让玩家操控的角色成为一个刚体,便可以主动地去接触其他碰撞体。
有了这样一个基础,接下来的事情便简单了许多。
继续完善刚体,为其添加质量、阻力係数、重力係数等属性,利用它们进行力学计算,便可以让不同的物体有著不同的物理性质。
而有了这些东西,再为刚体设置一个两轴的矢量变量,用来存储它现在的速度情况,一切似乎就都联繫在了一起。
在2d环境下,只需要关注x和y两个轴,也就是水平和垂直,便可以完全掌控它的运动情况。
想要重力,那就根据重力係数在每帧都为这个速度叠加上垂直向下的重力加速度。
而跳跃那就是骤然为y轴施加一个很大的值。
这套体系其实姜晴先前已经成功实现过,林琅仅仅是在此基础之上又完善了几分。
最终便確定下来了一个【碰撞箱+刚体+力】的这样一个体系。
別看它跟现实生活中的物理表现还有著不小的差距,但对一个2d游戏来说已经完全可用了。
想要更快的坠落?那就增大质量或重力係数。
想要让它足够滑?那就调小阻力。
有了这套东西,可以说整个开发流程都会轻鬆不少,尤其是对於那些正踌躇满志准备踏上游戏行业的新人来说。
整一下午,林琅都在忙活这套东西。
儘管它从宏观来看並不复杂,但各处细节加上enlight启蒙套件那边的移植工作一大堆琐事下来,还是忙活到了下班。
眼看进度也差不多了,林琅便將启蒙套件部分的工作交给了军子,再有明天一天便也能推送出去了。
今晚便是俄罗斯方块正式发售的日子,虽说到时候动静一定会很大,但这些事自然是不用他们思考。
某种意义上来说交给现有的游戏分销平台託管也有这方面的好处吧。
起码他们今晚根本不需要加班,可以各回各家睡大头觉,等著明早起来数钱就好了。
林琅跟姜晴走在回公寓的路上,想起今天中午店长来探班的事,他忽然意识到一个问题。
“话说回来,我好像还从来没见过你的家长呢。”
林琅想到了许瀚文,这个气宇轩昂的中年男人似乎也不是一般人。
还从来没有听姜晴提起过家里的情况。
本章未完,点击下一页继续阅读。