城市僵尸小说排行榜:带你走进惊险刺激的末日世界!

tmyb

今天跟大家伙儿唠唠我最近搞的“城市僵尸”小项目,纯属个人兴趣,跟大家分享一下踩坑和收获。

就是想做一个类似于末日生存的玩意儿,满大街都是僵尸那种。想法挺简单,但真正上手才知道,事情没那么容易。

我得选个引擎。Unity 和 Unreal Engine 都考虑过,Unreal 效果好是但是学习曲线太陡峭了,我时间有限,还是选了 Unity。毕竟之前用过,上手快。

城市僵尸小说排行榜:带你走进惊险刺激的末日世界!

接下来就是建模,我不会 3D 建模!总不能满大街找模型?那也太麻烦了。还好 Unity Asset Store 里啥都有,花点小钱,买了一堆僵尸模型,还有一些城市建筑的模型。

模型是有了,但是怎么让僵尸动起来? 这又是个难题。我研究了 Unity 的动画系统,IK,蒙皮,骨骼绑定,反正是一顿操作猛如虎,结果还是不行。僵尸要么就是不会动,要么就是动作僵硬的像机器人。

后来我发现 Unity 的 Mecanim 动画系统挺好用的,可以导入现成的动画。我又去 Asset Store 淘了一堆僵尸的走路、攻击动画,然后把这些动画绑定到僵尸模型上。这下,僵尸总算能像模像样的动起来了。

但是新的问题又来了,僵尸只会直线走,不会绕过障碍物,更不会追着玩家跑。这哪行? 必须得让僵尸智能一点。

我开始研究 AI 寻路。Unity 自带了 NavMesh 寻路系统,用起来还挺方便的。我烘焙了 NavMesh,然后让僵尸通过 NavMeshAgent 组件来寻路。这下,僵尸总算能绕过障碍物了。

我用 C# 写了一个简单的 AI 脚本,让僵尸可以检测玩家的位置,如果玩家进入僵尸的视野范围,僵尸就会开始追逐玩家。

城市僵尸小说排行榜:带你走进惊险刺激的末日世界!

追是能追了,但是僵尸追的太猛了,一追上就疯狂攻击。我加了一个攻击间隔,让僵尸攻击一下,休息一下,这样体验稍微好一点。

场景也有点单调,全是方方正正的楼房。我用 Unity 的 ProBuilder 工具,自己建了一些稍微复杂一点的建筑,还加了一些路灯、汽车之类的道具,让城市看起来更真实一些。

然后就是优化。 场景里僵尸一多,帧率就掉的厉害。我用了 Unity 的 Profiler 工具,找到了性能瓶颈。主要问题是僵尸太多了,而且每个僵尸都在实时寻路。

我做了几点优化:

减少了僵尸的数量。

用了对象池,避免频繁创建和销毁僵尸。

城市僵尸小说排行榜:带你走进惊险刺激的末日世界!

降低了僵尸的寻路频率。

优化之后,帧率总算稳定下来了。

整个过程,磕磕绊绊,学了不少东西。从 3D 建模,到动画,到 AI 寻路,到性能优化,感觉自己又成长了一点。

这只是个小项目,还有很多可以改进的地方。比如,可以加入更多的武器、道具,可以加入更复杂的 AI 行为,可以加入多人联机模式等等。

以后有时间,我会继续完善这个项目。 欢迎大家给我提意见。