基于Unity的休闲益智类游戏设计与开发

2021-04-20 02:36郭欣桐
电子技术与软件工程 2021年1期
关键词:图层按钮工具

郭欣桐

(黑龙江工商学院 黑龙江省哈尔滨市 150025)

1 概述

随着生活节奏的加快,游戏成为人们首选的休闲娱乐方式。正当适度的休闲游戏方式在释放压力的同时也可提高大脑反应速度[1]。目前大部分休闲益智类游戏采用2D 与Internet 相结合的方式,如保卫萝卜、切水果、捕鱼达人、愤怒的小鸟,玩法简单易操作,适合各个年龄段人群,游戏内容轻度,仅占用玩家碎片化时间,花费的流量、时间、金钱较少,游戏画风简易,色彩丰富。

本文基于Unity 游戏引擎的2D 功能,针对休闲益智类游戏的特点,设计开发了一款休闲益智类游戏。通过使用Photoshop 设计制作游戏角色和各个场景中的游戏对象模型,将模型导入unity 中搭建游戏场景,利用Unity 编程语言C#实现主角转身、移动、攻击、主角与各物体碰撞消息的传递等游戏核心功能,从而完成整个游戏流程。

2 游戏设计开发主要核心技术及开发工具

PhotoShop 简称“PS”,由Adobe 公司推出。PhotoShop 作为一款操作性强,使用广泛的图形类平面处理软件,在图像处理领域有着较大的使用优势[2]。PhotoShop 其强大的色彩调节功能,可方便地对图像的色彩进行调节及校正,解决图像本身由于曝光过度造成的过亮或光线不足而太暗的问题。滤镜功能,可制作出各种绚丽夺目的特效,如风格化,素描等以满足使用者的需求。PhotoShop采用图文界面,将常用功能以图标的形式汇总排列在工具箱中,使用者通过点击对应图标触发相应功能,完成编辑图像的各种操作。目前PhotoShop 最新版本为PhotoShop2020。

Unity 是由丹麦Unity Technologies 公司开发的综合性多平台的游戏开发工具。使用Unity 可实现多平台一次性开发且兼容性较好。Unity 支持Android,Windows,Linux,Web Player,PC,IOS,BlackBerry ,Window Phone8,Xbox 等多个平台发布。2018年该引擎已经扩展到支持超过25 个平台[3-4]。可轻松实现同款游戏在各大主流游戏平台无缝并存以及跨平台对决[5]。Unity 的强大之处在于其将编辑器、脚本、地形编辑、物理、着色器、网络、跨平台发布、版本控制等整合为一体。基于Unity 开发的游戏有炉石传说,神庙逃亡2,梦幻国度2,神鬼梦幻等众多游戏。由于手机游戏的流行,Unity Technologies 为Unity 引擎和编辑器推出了新的2D 功能和工作流程。在原有3D 功能的基础上添加了新的子画面纹理导入器类型、自动合成功能和专用的2D 渲染器组件后,方便2D 资源的导入、操作、应用。Unity2D 其特点是游戏场景加载速度快,节约计算机内存资源。

3 游戏设计

3.1 游戏规则

玩家所面对的有星星,彩蛋,敌人,炸弹,草药五个游戏角色。针对这五种游戏角色执行不同的碰撞规则。玩家只有碰撞到星星和彩蛋时,才可获得相应的积分,星星和彩蛋的积分不同,星星的积分为10 分,彩蛋的积分为20 分。碰撞到敌人和导弹时,必然会失去一定的生命值,每次碰撞失去生命值20 点。玩家共有120 点生命值。玩家可通过键盘操作激活攻击技能,用以躲避导弹或闪躲敌人。当玩家碰撞到草药可恢复生命值10 点。五种游戏角色的移动速度会随着时间的增长而加快,若游戏期间玩家的生命值为0,则说明玩家失败,游戏结束。玩家可在游戏结束界面查看本次游戏积分,选择重新开始或退出游戏。

3.2 游戏模型

游戏模型主要包括主角人物以及场景游戏对象模型两部分。

3.2.1 主角人物

游戏主角是游戏的重要组成部分之一。游戏主角选定为恐龙。基于游戏主题以及减轻玩家的视觉负担,游戏主角的颜色设计为绿色,这一色调也与游戏背景相呼应,有利于游戏场景还原,降低游戏场景的违和感。游戏主角的风格设计为简洁版,有利于不同年龄段的玩家接受。

设计游戏主角雏形,游戏主角主要分为龙角、头部、身体、手部、尾巴,龙旗、脚六大部分。使用PS 绘图工具绘制游戏主角轮廓。PS 中常用的绘图工具有画笔工具、铅笔工具以及钢笔工具。先使用铅笔工具勾勒轮廓,为后续的钢笔工具提供参考点,在使用钢笔工具进行进一步的细化绘制。相比铅笔工具和画笔工具,钢笔工具可通过锚点更好地绘制曲线及复杂的路径,编辑已有的路径曲线。

使用钢笔工具在不同图层下绘制游戏主角的六大部分,但手和脚通过复制图层的方式由一个图形得到两个相同的图形,这种复制图层的方式省时省力。填充各个图层的颜色,调整图层位置、和旋转角度,完成主角轮廓各部位的拼接。但此时主角模型属于平面图像,无立体效果,为了用户体验度,应当使图像呈现效果。PS 中添加立体效果的方法很多,常用的为以下四种方式:

(1)图层样式中的“斜面和浮雕”功能与图层样式其他效果搭配使用。

(2)复制图层,将新的图层移动至原图层斜线方向,多次重复此操作,直至达到理想效果。该方式多用于文字。

(3)利用PS 的3D 功能。但此功能对PS 软件版本有要求,版本需高于CS4。

(4)在图像的边缘添加高光和暗影。

本项目使用方法一和方法四,在设置斜面和浮雕样式的基础上,添加高光和阴影效果,从而创建出立体感及浮雕效果,将主角模型变形为阴刻形态。其中斜面和浮雕图层样式设置为内斜面,方法选择平滑,使用较深的颜色作为暗影颜色。

主角模型的轮廓已完成,但整体缺乏层次感,即图层之间没有进行遮盖,可通过调整图层的顺序或添加图层模板,在图层模板中将需要遮盖的部分使用黑色画笔进行涂抹,需要显示的部分使用白色画笔进行涂抹。本项目通过调整图层的顺序,在PS 图层面板中,由上到下的顺序依次为:左手,头部,嘴内部,嘴外层,尾巴,身体,龙旗,右手,左脚,右脚。

在主角模型轮廓的基础上,添加各部位细节,主要主要包括牙齿,眼睛,瞳孔,鼻孔,牙齿,龙角,头部与嘴的衔接部分。通过PS 中的矩形工具,圆角矩形工具,椭圆工具,多边形工具,直线工具,自定义工具可方便地绘制相应的图形。本项目中的眼睛,鼻孔,瞳孔,头部与嘴的衔接部分均使用椭圆工具绘制。眼睛部位添加斜面和浮雕效果,使其更加立体,并利用灰色画笔在眼睛的下部边缘绘制暗影。PS 共提供了五种渐变方式,分别为线性渐变、径向渐变、角度渐变、对称渐变和菱形渐变。瞳孔依据需求需使用径向渐变,即从起点颜色白色到终点颜色黑色从内到外进行圆形渐变。设计后的主角模型如图1所示。

图1:主角模型

3.2.2 场景游戏对象模型

游戏共有四个界面,分别为游戏进入界面,游戏介绍界面,游戏关卡界面,游戏结束界面。主要针对以上四个界面进行场景以及相关模型设计与创建。

(1)游戏进入场景游戏对象模型。游戏进入界面需要制作的模型为开始按钮,退出按钮,界面背景,游戏文字。

开始按钮和退出按钮具有两个状态,正常状态和点击状态,点击状态在正常状态的基础上,调整大小,文字颜色更改为红色,使其突出显示。正常状态下的开始按钮与退出按钮的制作流程相似,均采用圆角矩形工具,填充蓝色渐变。使用横排文字工具输入对应文字,将文字位置调整至矩形之中。使用钢笔工具绘制矩形边框下方阴影。点击状态在上述完成的模型基础上,使用魔棒工具,单独选定文字部分,更改颜色即可。

游戏进入界面背景借鉴游戏“愤怒的小鸟”原图,将原图中的文字以及游戏角色去掉。

PS 中去除多余部分的方法主要有两种:1.使用索要工具。2.使用仿制图章工具。由于天空背景为渐变色,变化较细微,不适合使用方法1 处理文字,故使用方法2 仿制图章工具,选取文字周围进行去除。原图中的游戏角色去除使用方法2,将小鸟周围部分索套,按住Alt 键将索套部分移动小鸟将其遮挡。

游戏文字为Dinosaur catch eggs。使用文字工具输入文字,通过变形文字工具将文字变形,添加斜面和浮雕,内发光以及阴影图层样式。在PS 中文字图层不能直接使用滤镜,应将文字图层栅格化转换为正常图层,但图层的内容变为不可编辑的文本,栅格化文字后,添加滤镜水波效果。

(2)游戏介绍场景游戏对象模型。游戏介绍界面需要制作的模型:星星、彩蛋、敌人,药包。这些图片的处理过程中须截取部分图像。的方法:1.利用裁切工具2.利用选框工具3.魔棒工具。使用裁剪工具直接将星星、彩蛋、敌人,药包从相应的图中裁出,在使用魔棒工具选中背景将其删除。最后导出文件格式为PNG。PNG 格式的图像背景透明。

(3)游戏关卡场景游戏对象模型。游戏关卡界面需要制作的模型:石头、草地、火球、子弹头以及7 种状态的生命条。

石头,火球,子弹头三者的制作流程与上述游戏介绍界面的星星处理方法一致。7 种状态的生命条由一张只有一格血(20 点)的生命条图片使用仿制图章工具制作而成。

(4)游戏结束场景游戏对象模型。游戏结束界面需要制作的模型:再玩一次按钮,Score 文字,结束边框,game over 文字,乘号。其中再玩一次按钮分为两种状态,正常状态以及点击状态。再玩一次按钮的正常显示状态和点击状态图片的制作方法与开始按钮一致。game over 文字使用文字工具输入,添加变形文字中的上弧效果。乘号使用文字工具输入,填充颜色为黄色。

4 游戏实现

4.1 游戏场景

4.1.1 游戏进入场景

该场景主要实现的是玩家通过点击界面的两个按钮进入游戏或退出游戏。主要使用OnMouseEnter,OnMouseExit 函数和IEnumerator,Application.LoadLevel 函数实现功能。在Unity 中当鼠标进入到GUI 元素或碰撞体时调用OnMouseEnter 函数,鼠标移出GUI 元素或碰撞体时调用OnMouseExit 函数,当用户点击按钮时使用Application.LoadLevel 函数加载File 菜单Build Settings 关卡列表中的关卡。

4.1.2 游戏介绍场景

该场景主要实现的是显示游戏规则文字,15 秒之后自动转到游戏关卡场景。主要使用Time.deltaTime,Application,LoadLevel 函数完成。显示文字通过选择GameObject 菜单中CreateOther|GUIText 建立GUI,将相应的文字输入至属性面板中的Text 处。

4.1.3 游戏关卡场景

该场景主要实现的是子弹的发射。通过子弹随机产生彩蛋,敌人,星星,草药,设置各游戏配角的下落时间间隔为5 秒。主要使用二维数组Rigidbody2D[]存放物体,在实例化时使用随机数Random.Range()实现随机掉落物体。血条通过选择GameObject 菜单中CreateOther|GUITexture,建立GUI,将其显示在界面左上角,方便用户直观地查看自身血量。

4.1.4 游戏结束场景

该场景主要实现的是显示本局游戏数据,并使玩家通过点击两个按钮能够重新开始游戏或退出游戏。主要使用OnGUI()实现,在相应的位置用GUI.Label()来显示相应的数,需要调用游戏关卡中的变量,后续小节会讲到具体实现方法。界面其他图片直接拖拽至相应的位置,按钮的显示通过选择GameObject 菜单中CreateOther|GUITexture,建立GUI。

4.2 游戏核心功能

4.2.1 游戏主角移动转身功能

游戏主角移动功能通过键盘左右方向键实现向左或右进行移动。在移动的同时,系统判断主角朝向,确定是否使游戏主角转身。因游戏主角为平面模型,进行左右转身时,模型须向左转或向右旋转180 度。实现过程主要涉及三个函数,分别为Update,FixedUpdate 以及自定义函数Flip。Update 函数中通过Input.GetAxis("Horizontal")获取水平轴的方向。在Unity 中FixedUpdate函数在固定的是时间间隔执行,不受游戏帧率的影响。FixedUpdate函数判断主角人物的朝向。通过获取水平轴方向h 判断玩家是否按下左右键,h>0 代表玩家按下右键,h<0 代表玩家按下左键,布尔变量facingRight 判断主角是否朝向右侧,只有当主角朝向右侧,按下左键或主角朝向左侧,按下右键这两种情况下才可转身。自定义Flip()函数将facingRight 进行取反操作,通过引用中间变量theScale 改变transform.localScale,transform.localScale 表示获取主角当前的局部缩放值,在Unity 中transform 的position 和Scale 只能整体改变,若只改变其中一项,用自定义变量代替转换。

4.2.2 游戏主角攻击功能

主角攻击功能主要指的是发射火球阻挡炸弹的攻击,达到躲避炸弹的目的。在Untiy 中创建GameObject 作为发射器,通过该发射器发射火球。将火球设置为预制件(Prefab)。在Unity 中预制件是根据需要预先做好的物体,预制物体可以保存火球的所有信息。主角攻击功能代码由Update 函数实现完成,通过Input.GetMouseButtonDown(0)函数判断玩家是否按下鼠标左键,三维向量获取当前物体的位置transform.postion,在当前位置通过Instantiate 函数实例化预制件火球。

4.2.3 主角与各物体碰撞消息传递功能

游戏中的炸弹以及掉落的各类游戏元素不能穿破主角人物。为了达到该物理效果,场景中的物体需要添加碰撞,以便完成碰撞检测。在Unity 中要产生碰撞须为游戏对象添加刚体和碰撞器,刚体可以让物体在物理影响下运动,碰撞器是物理组件的一类,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。Unity 中检测碰撞发生的方式有两种,一种是利用碰撞器,另一种是利用触发器。碰撞器和触发器主要的区别为:碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性。为prefabs 文件夹中的预制件添加Collide。通过OnTriggerEnter 函数实现主角物体与下落物体碰撞消息传递,在Unity 使用OnTriggerEnter 需将Collider 属性中的OnTrigger 勾选。下落物体通过代码DropObject 中的SendMessage传递消息给主角人物。判断碰撞物是彩蛋、炸弹、草药、星星、石头,是通过识别碰撞物属性中的“Tag”标签属性实现[6],当玩家与某物体发生碰撞时,通过if 语句判断与哪一物体发生碰撞,从而实现主角与各物体碰撞消息传递,根据碰撞物体计进行积分、血量计算,将血条的变化通过OnGUI 显示出来。

游戏最终效果如图2所示。

图2:游戏最终效果

5 结语

本次设计通过Unity 引擎实现了休闲益智类游戏—恐龙吃彩蛋的设计与开发。游戏主要实现了主角基本操作(移动,转身,攻击)、游戏场景对象自动加载、主角与游戏场景对象碰撞信息传递,游戏关卡数据分析等功能。游戏可在PC 端以及安卓手机端安装且游戏交互功能正常,可流畅运行。该游戏操作简单,具备一定的可玩性。

猜你喜欢
图层按钮工具
波比的工具
波比的工具
巧用混合图层 制作抽象动感森林
“巧用”工具
图层法在地理区域图读图中的应用
跟我学添加真实的光照效果
浅析“递层优化法”在矿井制图中的应用