大家今天跟大家伙儿聊聊我这几天搞的“大战僵尸”小游戏,纯属个人练手,水平有限,大家凑合看个乐呵。
我寻思着最近有点闲,不如搞点啥乐呵乐呵。 想到之前玩的《植物大战僵尸》,那叫一个上头,就琢磨着自己能不能也捯饬一个类似的。说干就干,先定个小目标:能种植物,能出僵尸,能biubiubiu打僵尸就行!
我把Unity打开,新建了一个2D项目。这玩意儿我熟,之前也做过几个小demo。然后就开始吭哧吭哧地画素材,没办法,咱不是美术大佬,只能自己瞎鼓捣。植物就画个简单的,僵尸也搞个Q版的,反正能看出是啥就行。
植物这块,我先搞了个向日葵,能产阳光。这可是关键,没阳光啥也干不了!然后又搞了个豌豆射手,能发射子弹。 这俩算是基本款,先实现再说。 代码方面,就是控制植物的生成,定时产生阳光,豌豆射手发射子弹。这里面涉及到一些计时器、对象池啥的,都是老生常谈的东西了,网上搜搜一大堆。
僵尸这块,我让它能动就行,从右往左走,碰到植物就啃。 啃植物这块稍微麻烦点,要判断僵尸和植物的距离,还得有个血条系统。 我就简单做了个血条,僵尸啃一下植物,植物血量减一点,血量为0就挂了。
子弹这块,也得能动,能打到僵尸。打到僵尸,僵尸也掉血。 僵尸血量为0,也挂了。 这样,基本的战斗流程就有了。 哇,成就感满满!
接下来就是完善细节。 我加了点背景音乐和音效,让游戏更有感觉。 还加了点UI,显示阳光数量,能选择种植的植物。 这UI我用了Unity自带的,简单方便。
然后就是关卡设计。 我就简单设计了几关,每关僵尸出现的波数和种类不一样。 后面还加了个Boss僵尸,血厚攻高,贼难打!
遇到的一些坑:
- 碰撞检测:刚开始碰撞检测老出问题,子弹明明打到僵尸了,但就是没反应。 后来发现是碰撞器的设置问题,搞了好久才搞明白。
- 性能优化:僵尸一多,游戏就开始卡。 后来发现是Update函数里面东西太多了,优化了一下,把一些不必要的计算移到了协程里面,性能就好多了。
- UI显示:阳光数量显示老是出错,后来发现是数据类型转换的问题,改了一下就好了。
这回做“大战僵尸”小游戏,虽然是个很简单的项目,但也让我学到了不少东西。 尤其是对Unity的了解更深入了,也更加熟悉了游戏开发的流程。 以后有机会,希望能做出更好玩的游戏!