基于Unity的休闲益智类游戏设计与开发
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件开发与应用
Software Development And Application
电子技术与软件工程
Electronic Technology & Software Engineering 基于U nity的休闲益智类游戏设计与开发
郭欣桐
(黑龙江工商学院黑龙江省哈尔滨市150025 )
摘要:本文讲述了休闲益智类游戏的设计与开发过程。
该系统应用P h o t o s h o p设计制作游戏角色以及相关场景模型,导入u n i t y中搭建游戏进入、游戏介绍、游戏关卡、游戏结束四个游戏场景,使用C#语言实现主角移动、转身、发射火球躲避炸弹、游戏场景切换. 游戏状态控制.主角与场景中的各物体碰撞消息的传递,最终实现玩家不断吃掉指定类型的彩蛋获得积分,发射火球躲避炸弹确保生命值。
该系统通过Unt iy2D功能提高了游戏场景的加载速度,节约内存资源,保障了游戏的流畅运行.
关键词:游戏开发;Unity;C#;PhotoShop
1概述
随着生活节奏的加快,游戏成为人们首选的休闲娱乐方式。
正当适度的休闲游戏方式在释放压力的同时也可提高大脑反应速度
m。
目前大部分休闲益智类游戏采用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个平台[341。
可轻松实现同款 游戏在各大主流游戏平台无缝并存以及跨平台对决Unity的强 大之处在于其将编辑器、脚本、地形编辑、物理、着色器、网络、跨平台发布、版本控制等整合为一体。
基于Unity开发的游戏有炉 石传说,神庙逃亡2,梦幻国度2,神鬼梦幻等众多游戏。
由于手 机游戏的流行,Unity Technologies为Unity引擎和编辑器推出了新 的2D功能和工作流程。
在原有3D功能的基础上添加了新的子画 面纹理导入器类型、自动合成功能和专用的2D渲染器组件后,方 便2D资源的导入、操作、应用。
Unity2D其特点是游戏场景加载 速度快,节约计算机内存资源。
3游戏设计
3.1游戏规则
玩家所面对的有星星,彩蛋,敌人,炸弹,草药五个游戏角色。
针对这五种游戏角色执行不同的碰撞规则。
玩家只有碰撞到星星和 彩蛋时,才可获得相应的积分,星星和彩蛋的积分不同,星星的积
图1:主角模型
分为10分,彩蛋的积分为20分。
碰撞到敌人和导弹时,必然会失 去一定的生命值,每次碰撞失去生命值20点。
玩家共有120点生 命值。
玩家可通过键盘操作激活攻击技能,用以躲避导弹或闪躲敌 人。
当玩家碰撞到草药可恢复生命值10点。
五种游戏角色的移动
速度会随着时间的增长而加快,若游戏期间玩家的生命值为0,则
说明玩家失败,游戏结束。
玩家可在游戏结束界面查看本次游戏积 分,选择重新开始或退出游戏。
3.2游戏模型
游戏模型主要包括主角人物以及场景游戏对象模型两部分。
3.2.1主角人物
游戏主角是游戏的重要组成部分之一。
游戏主角选定为恐龙。
基于游戏主题以及减轻玩家的视觉负担,游戏主角的颜色设计为绿 色,这一色调也与游戏背景相呼应,有利于游戏场景还原,降低游
戏场景的违和感。
游戏主角的风格设计为简洁版,有利于不同年龄
段的玩家接受。
设计游戏主角雏形,游戏主角主要分为龙角、头部、身体、手 部、尾巴,龙旗、脚六大部分。
使用PS绘图工具绘制游戏主角轮廓。
P S中常用的绘图工具有画笔工具、铅笔工具以及钢笔工具。
先使
用铅笔工具勾勒轮廓,为后续的钢笔工具提供参考点,在使用钢笔
工具进行进一步的细化绘制。
相比铅笔工具和画笔工具,钢笔工具
可通过锚点更好地绘制曲线及复杂的路径,编辑己有的路径曲线。
使用钢笔工具在不同图层下绘制游戏主角的六大部分,但手和
脚通过复制图层的方式由一个图形得到两个相同的图形,这种复制
图层的方式省时省力。
填充各个图层的颜色,调整图层位置、和旋
转角度,完成主角轮廓各部位的拼接。
但此时主角模型属于平面图 像,无立体效果,为了用户体验度,应当使图像呈现效果。
P S中
添加立体效果的方法很多,常用的为以下四种方式:
(1)图层样式中的“斜面和浮雕”功能与图层样式其他效搭配使用。
(2)复制图层,将新的图层移动至原图层斜线方向,多次复此操作,直至达到理想效果。
该方式多用于文字。
(3)利用P S的3D功能。
但此功能对P S软件版本有要求,
34
电子技术与软件工程
Electronic Technology & Software Engineering
软件开发与应用
Software Development And Application
版本需高于CS 4。
(4)在图像的边缘添加高光和暗影。
本项目使用方法一和方法四,在设置斜面和浮雕样式的基础上, 添加高光和阴影效果,从而创建出立体感及浮雕效果,将主角模型 变形为阴刻形态。
其中斜面和浮雕图层样式设置为内斜面,方法选 择平滑,使用较深的颜色作为暗影颜色。
主角模型的轮廓己完成,但整体缺乏层次感,即图层之间没有 进行遮盖,可通过调整图层的顺序或添加图层模板,在图层模板中 将需要遮盖的部分使用黑色画笔进行涂抹,需要显示的部分使用白 色画笔进行涂抹。
本项目通过调整图层的顺序,在P S 图层面板中, 由上到下的顺序依次为:左手,头部,嘴内部,嘴外层,尾巴,身 体,龙旗,右手,左脚,右脚。
在主角模型轮廓的基础上,添加各部位细节,主要主要包括牙 齿,眼睛,瞳孔,鼻孔,牙齿,龙角,头部与嘴的衔接部分。
通过 PS 中的矩形工具,圆角矩形工具,椭圆工具,多边形工具,直线工具, 自定义工具可方便地绘制相应的图形。
本项目中的眼睛,鼻孔,瞳 孔,头部与嘴的衔接部分均使用椭圆工具绘制。
眼睛部位添加斜面 和浮雕效果,使其更加立体,并利用灰色画笔在眼睛的下部边缘绘 制暗影。
PS 共提供了五种渐变方式,分别为线性渐变、径向渐变、 角度渐变、对称渐变和菱形渐变。
瞳孔依据需求需使用径向渐变, 即从起点颜色白色到终点颜色黑色从内到外进行圆形渐变。
设计后 的主角模型如图1所示。
3.2.2场景游戏对象模型
游戏共有四个界面,分别为游戏进入界面,游戏介绍界面,游
戏关卡界面,游戏结束界面。
主要针对以上四个界面进行场景以及
相关模型设计与创建。
(1) 游戏进入场景游戏对象模型。
游戏进入界面需要制作的
模型为开始按钮,退出按钮,界面背景,游戏文字。
开始按钮和退出按钮具有两个状态,正常状态和点击状态,点 击状态在正常状态的基础上,调整大小,文字颜色更改为红色,使 其突出显示。
正常状态下的幵始按钮与退出按钮的制作流程相似, 均采用圆角矩形工具,填充蓝色渐变。
使用横排文字工具输入对应 文字,将文字位置调整至矩形之中。
使用钢笔工具绘制矩形边框下 方阴影。
点击状态在上述完成的模型基础上,使用魔棒工具,单独 选定文字部分,更改颜色即可。
游戏进入界面背景借鉴游戏“愤怒的小鸟”原图,将原图屮的 文字以及游戏角色去掉。
P S 中去除多余部分的方法主要有两种:1.使用索要工具。
2.使 用仿制图章工具。
由于天空背景为渐变色,变化较细微,不适合使 用方法1处理文字,故使用方法2仿制图章工具,选取文字周围进 行去除。
原图中的游戏角色去除使用方法2,将小鸟周围部分索套, 按住A lt 键将索套部分移动小鸟将其遮挡。
游戏文字为Dinosaur catch eggs 。
使用文字工具输入文字,通 过变形文字工具将文字变形,添加斜面和浮雕,内发光以及阴影图 层样式。
在P S 中文字图层不能直接使用滤镜,应将文字图层栅格
化转换为正常图层,但图层的内容变为不可编辑的文本,栅格化文 字后,添加滤镜水波效果。
(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 丄oadLevel 函数实现功能。
在 Unity 中当 鼠标进入到GUI 元素或碰撞体时调用OnMouseEnter 函数,鼠标移 出G U I 元素或碰撞体时调用OnMouseExit 函数,当用户点击按钮 时使用Application 丄oadLevel 函数加载File 菜单Build Settings 关卡 列表中的关卡。
4.1.2游戏介绍场景
该场景主要实现的是显示游戏规则文字,15秒之后自动 转到游戏关卡场景。
主要使用Time .deltaTime ,Application ,
LoadLevel 函数完成。
显示文字通过选择GameObject 菜单中 CreateOther |GU 丨Text 建立GUI ,将相应的文字输入至属性面板中的 Text 处。
4.1.3游戏关卡场景
该场景主要实现的是子弹的发射。
通过子弹随机产生彩蛋, 敌人,星星,草药,设置各游戏配角的下落时间间隔为5秒。
主 要使用二维数组Rigidbody 2D □存放物体,在实例化时使用随机数
Random .Range ()实现随机掉落物体。
血条通过选择GameObject 菜 单中CreateOther |GUITexture ,建立GUI ,将其显示在界面左上角, 方便用户直观地查看自身血量。
4.1.4游戏结束场景
该场景主要实现的是显示本局游戏数据,并使玩家通过点击 两个按钮能够重新开始游戏或退出游戏。
主要使用OnGUI ()实 现,在相应的位置用GULLabelO 来显示相应的数,需要调用游戏 关卡中的变量,后续小节会讲到具体实现方法。
界面其他图片直 接拖拽至相应的位置,按钮的显示通过选择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 表示获取主
35
软件开发与应用
Software Development And Application
电子技术与软件工程Electronic Technology & Software Engineering
(a)游戏进入场景
DlllflSOUr CQtch eggs Instruction:
n ih^darrw.you ml help the dragon lo pcK u p tn« llwgs
from 晰
Pidi *i€ get 20 ppmls.
pfckup »he »lar» n« ^ K) poMt.
JiA up Ihe enomy im I I om 10 poMs. and drop blood
(b)游戏介绍场景
(c)游戏关卡场景角当前的局部缩放值,在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”标签属性实现[61,当玩家 与某物体发生碰撞时,通过i f语句判断与哪一物体发生碰撞,从而 实现主角与各物体碰撞消息传递,根据碰撞物体计进行积分、血量 计算,将血条的变化通过OnGUI显示出来。
游戏最终效果如图2所示。
5结语
本次设计通过Unity引擎实现了休闲益智类游戏一恐龙吃彩蛋 的设计与幵发。
游戏主要实现了主角基本操作(移动,转身,攻击)、游戏场景对象自动加载、主角与游戏场景对象碰撞信息传递,游戏 关卡数据分析等功能。
游戏可在PC端以及安卓手机端安装且游戏 交互功能正常,可流畅运行。
该游戏操作简单,具备一定的可玩性。
参考文献
[1] 刘硕.基于Funcode平台的儿童益智类游戏设计与开发[J].
软件,2020, 41 (08): 52-55.
[2] 谢丹妮.Photoshop平面设计技术.电子技术与软件工程
[J],2020 (19): 34-35.
[3] 黄得懿,曾妮丽,余欣婷,郭玉,许晔.基于U nity的三维游
戏APP设计与实现.电脑编程技巧与维护[J],2020 (10):61- 62+71.
[4] 吴可玉,庄建军,徐琳玲.基于Uni ty_3D的虚拟消防与安全
教育系统[J]•实验技术与管理[J],2020, 37 (12): 237-240. [5] 张胜男,司占军.基于Uni ty-3D的寻宝游戏的设计与制作.电
脑知识与技术[J], 2020, 16 (22): 37-39.
[6] 王功利.Unity2D跑酷游戏的背景与功能模块设计与研究.电
脑编程技巧与维护[J],2018 (09): 152-153+176.
作者简介
郭欣桐( 1993-),女,黑龙江省大庆市人。
硕士学位。
研究方向 为虚拟现实技术。
36。