麦克的游戏之路

博客、作品集及游戏拆解案

海盗炸弹

WebGL (in Unity February Showcase)
https://play.unity.com/mg/other/piratebomb

游戏试玩链接:

https://play.unity.com/en/games/45e472fc-4879-4d47-b014-eaee72fa2e74/5rw355ux54k45by5

游戏开发技术

  • 1.UGUI

主界面主要由Title、New Game、Continue、Quit四个Button构成,其中Continue的按键涉及游戏的存档与读档,通过脚本实现对玩家血量和UI控件变量的保存(PlayerPrefs)。

进入游戏关卡后,有Pause按钮可以暂停关卡,暂停的面板有四个按钮,分别可以继续,重玩,调节背景音乐的大小,退出游戏。

玩家死亡时,会弹出Game Over的面板,如果在安卓平台上可以通过观看Unity提供的广告来复活。

暂停界面
  • 2.Unity 广告接入

利用官方的Advertisement package,在Dashboard 网页端创建项目准备工作。Unity 编辑器中启动 Service 并连接到项目。代码控制播放广告后使玩家血量完全恢复。

安卓平台游玩广告界面
  • 3.FSM 状态机

用抽象类继承创建2个敌人AI状态:Patrol State/Attack State,当敌人处于Patrol State时,敌人会在两个巡逻点之间走动;而当敌人处于Attack State时,即玩家在敌人的触发器范围内,敌人会追击玩家,直到玩家死亡。

安卓移动平台开发
  • 4.动画状态机

在 Animator 窗口当中,分别使用多个Layer 来控制管理多种动画状态。敌人Base Layer下有跑动和静止两种动画,而在追击玩家时会进入Attack Layer,然后根据情况在普通攻击和特殊攻击中切换,在被玩家击败后会进入Dead Layer中,根据敌人血量的设置来判断播放受伤或者死亡的动画。

Enemy动画状态机
  • 5.URP(通用渲染管线)

通过URP来渲染环境的光照,比如窗户的自由光、蜡烛的点光源。

窗户光源
点光源
  • 6.Shader Graph(水面效果)

使用梯度噪声混合时间变量,使其随游戏中时间波纹进行变化,输出到一般的噪声中,Noise节点辅助产生扭曲波纹状效果,并通过对Tilling And Offset中y轴的偏移量取-1使映射画面翻转。并改变color输出,最后生成水面波纹效果如下图。

Shader Graph
水面波纹效果图
  • 7. Tilemap (瓦片地图)

利用Rule Tile处理多种背景的素材,如墙壁、平台,建立起规则瓦片后,在Tile Palette可以快速拖拽规则瓦片,来构成游戏场景。

Tile Palette
Rule Tile(部分规则)

游戏机制:

玩家可以使用WASD或者虚拟摇杆操控移动,使用键盘按键J或者虚拟按钮进行释放炸弹,炸弹会在一定范围内爆炸,并且可以点燃被敌人熄灭的炸弹。目前敌人共有5种,并且分别有其特殊能力。

  • 黄瓜怪:可以吹灭炸弹。
  • 鲸鱼:可以吞掉炸弹,并且吞掉的炸弹会使其体型变大,体型上限为原大小的两倍。
  • 大块头:可以拾取炸弹,并把炸弹向斜上方丢出。
  • 秃顶海盗(Boss):可以用脚将炸弹踢走。
  • 船长(Boss):遇到炸弹时,会向反方向逃跑,速度为原来的两倍。

目前一共有4个关卡,一个新手关,两个Boss关,有背景音乐,游戏通关流程约10分钟。