Unity完全自制游戏纸箱战争项目记录(20180629)

发表于2018-06-29
评论5 4.2k浏览

最近半年时间通过培训机构接触到了Unity游戏制作引擎,通过半年的时间,临近毕业的时候需要制作一个大项目来验证学习结果,因此就确立了这个项目的诞生。

制作时间为期三周,为了给自己增加难度更好的磨练自己,我自告奋勇要求一人制作项目,并且是完全原创的项目。

游戏玩法类似与战地系列的FPS对抗游戏,玩家可以利用在地图中的载具对目标点发起进攻,最后夺得目标争夺点取得游戏的胜利。

完全原创肯定就不能使用网络上的美术资源和他人分享的代码亦或是插件,鉴于美术基础太差,因此选择了简约的美术风格,有点类似“我的世界”那种方盒子感觉,最近在Steam上出现了很多类似风格的游戏,似乎都还卖得不错。

为了此次项目的成功进行,我还特意学习了一下在3Dmax中的骨骼蒙皮和动画制作,有了点大致的雏形。

因为从下周一开始才是正式的三周制作时间,之前我就制作了一部分,以下是已完成的部分。

因为游戏使用了简约的美术风格,资源占用量大大减少,所以便可以实现次时代大作中难以实现的部分,比如完全的场景可破坏性。

在上图中可以看到,树木可以分部位击落,落在地面后一段时间沉入地面随后销毁物体。

人物的自定义外观,这里算是投机取巧,本来是想要实现类似“人类一败涂地”中那种可以涂色的系统,苦于不知道怎么实现,于是就在鼠标划过的位置实例化出一连串的彩色物体代替画笔,最后发现每实例化出一个物体就会增加Batches的占用,估计在项目进展后期可能会删掉这个功能,或者演一下。

载具系统,驾驶直升机和坦克

人物动画的状态机,看上去有些乱,不过只有这样才能实现任务在待机、行走、奔跑、换弹、开火、以及死亡之间的切换流畅性。

 

之后是今天的项目进展记录。

考虑到了全物体的可破坏性,那么地形自然也得是可破坏的,而地形恰恰也是其中最难实现的一部分,因为炸弹的爆炸,地面上肯定会出现大大小小的坑洞,那么这些空洞该如何实现呢?

首先我想到了3Dmax中的布尔,查阅了一下资料,Unity中也是可以实现布尔效果的,不过需要实时计算物体的模型网格,还牵扯到了一种叫做SBP的技术,就我目前的能力而言想要实现是不可能的。

所以我就想到使用小块物体的集合替换掉大块物体,随后对他们的刚体施加爆炸力,模拟出炸弹爆炸效果,通过初步的测试,实现了这个效果。

首先地形上是一整个完整的地面,在受到爆炸之后用小方块的堆积物替换掉大块的方块,因为大小和位置的原因,在视觉上有一些欺骗性,爆炸效果很不错,在爆炸后删去碎屑方块,能够在地形上留下一个实体的空洞。

随后问题就出现了,因为小方块过多的原因,爆炸空洞的小方块被删去了,但还剩下了很多没有波及到的方块,框选起来,编辑器瞬间就卡顿了,如图的绿色密密麻麻的物体都是小方块的碰撞

爆炸一个坑洞还不够明显,接连爆炸之后卡顿更加明显,当场景中出现了很多小方块时,就算没有给他们添加刚体组件,场景依然很卡顿。

想了很多方法,咨询了老师也没有好的解决方法。

我觉得爆炸空洞周围有很多浪费掉的方块,从方块分裂的思路上看,这不是个最优的分裂方法,于是我重新制作了模型,之后的爆炸达到了以下的效果。

框选之后,空闲的小方块明显减少了不少,帧率也明显提高了

仅仅达到这样还不够,因为游戏中还会有载具的出现,所以地图肯定不能只有几十米,当地图变大之后,坑洞越来越多,游戏势必会变得越来越卡。

随后我诞生出了修补坑洞的想法,在坑洞产生后,过一段时间遍把坑洞恢复到之前的状态,不过游戏体验肯定是要比留下爆炸产生的洞差一些的,还在纠结该怎么样处理这个问题。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引