Unity3D游戏设计与实现 - 图文(6)

2020-04-16 23:59

5.4 游戏玩法说明

游戏所设计的玩法十分简单,空格键跳跃,其实跳跃的时候播放的是一个动画;按Q键发射飞镖,飞镖是一个Prefab对象,每按一次Q都将实例化一个该Prefab对象,并在几秒后销毁。如果玩家不小心碰到雪球或者飞鸟,都将导致游戏失败,雪球不能击毁只能跳过,飞鸟能通过飞镖击毁并获得5分。在关卡二,如果玩家跳跃的时候能够获得雪花会加10分,不过这会导致躲避雪球的难度增加。另外随着时间的增加,分数也会每秒长1分。游戏玩家的生命数只有一条。

6 游戏简介

6.1 游戏背景

游戏项目开发的背景故事源自一部正在热映的美国动画片《Frozen》,这是一个充满冰雪和浪漫的童话世界。故事讲述的是一个咒语让美丽的王国被冰天雪地永久覆盖,而这个咒语正发生在冰雪皇后艾莎身上,国王被冰封之后,艾莎也失踪了。乐观勇敢的公主安娜在乐于助人的山民克里斯托夫的帮助下,带着他的坐骑驯鹿准备出发去寻找安娜失踪的姐姐,来重新拯救王国,破除这个让国家冰封的咒语。一路上的艰难坎坷、奇妙历险,让人回味无穷、催人泪下。

因此,具有开发此游戏的必要性和紧迫性,随着人们对电影的热爱和追捧,也会对该游戏产生极大的兴趣。

6.2 敌人

在安娜和山民克里斯托夫的历险中,遇到过狼、雪崩以及恶劣的天气。 游戏敌人有两个,一个是地上滚动的雪球,只能跳跃躲避,另外一个是随机速度和高度飞过来的鸟,击毁鸟会加5分。

6.3 玩家

游戏玩家Player对象是一个跑动的人物,不停的跳跃躲避雪球,并发射飞镖来躲避飞鸟的攻击。他的生命目前只有一次,以后可能会改动。

6.4 分数统计

这里专门设计了一个脚本文件来统计分数,分数分为当前分数和最高分数。当前分数会随着游戏的变化不断更新,每秒钟加1分,击中飞鸟加5分,获取雪花得并获得10分,然后在进入下个关卡当前分数清零。最高分数是继承的MonoBehaviour.PlayerPrefs属性,它具有本地保存数据的功能,能够保存游戏过程中获得的最高分数。

7 游戏实现

7.1 变量

任何游戏的变量都非常的多,这里不再赘述,仅列举几个重要的全局变量。

第 16 页 共 33 页

1、static int型变量m_score存放游戏当前分数; 2、static int型变量HighScore存放游戏最高分数;

3、static bool型变量isHitted判断玩家是否碰撞到飞鸟、雪球或者雪花,默认值是false;

4、GUISkin型变量mySkin保存皮肤,用于制作个性化按钮、列表等;

7.2 函数

任何游戏的函数都非常的多,这里不再赘述,仅列举一些重要的函数。 1、bool myAniSprite(int colsize, int rowsize,

int colframestart, int rowframestart, int totalframes, int framepersecond, int totaltime, bool moveDirection) {

myTime += Time.deltaTime;

if (totaltime != 0 && myTime > totaltime) {

isPlay = false; myTime = 0;

return isPlay; }

int index = (int)(myTime * (framepersecond - 1)); index = index % totalframes;

int v = index / colsize;

if (moveDirection) {

size= new Vector2((float)(1.0 / colsize), (float)(1.0 / rowsize)); u = index % colsize; } else {

第 17 页 共 33 页

size=new Vector2((float)(-1.0 / colsize),(float)(1.0 / rowsize)); u = -index % colsize; }

offset=new Vector2((float)((u + colframestart) * size.x), (float)((1.0 - size.y) - (v + rowframestart) * size.y));

renderer.material.mainTextureOffset = offset; renderer.material.mainTextureScale = size;

return true; }

此函数实现的功能就是精英动画的播放,它的原理很简单,比如一张2行3列的图片,如图7.1所示,划分成6个块,每帧渲染一块,由于视觉暂留,就会成为动画。上述代码最关键的就是计算精灵序列图的offset和size值,并将他们分别赋值如下:

renderer.material.mainTextureOffset = offset; renderer.material.mainTextureScale = size;

然后系统就会在每帧执行一次该函数,以达到角色运动的效果。

图7.1 精灵动画

第 18 页 共 33 页

2、private void DrawWindow (int windowID) { }

GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height),

GUI.Label(new GUI.Label(new

if(GUI.Button(new { }

Application.LoadLevel(\

Rect(300,

400,

200,

200),

\

Rect(350, Rect(350,

300, 350,

240, 240,

40),\40),\

+ +

loseWindow);

Score.m_score.ToString(),GUI.skin.GetStyle(\

PlayerPrefs.GetInt(\

GUI.skin.GetStyle(\

此函数实现的功能是绘制窗口,如在玩游戏的时候,当你要重新开始时,系统就会弹一个窗口,询问你是否重新开始。

3、IEnumerator PlaySound (AudioClip soundName) { }

if(!audio.isPlaying) { }

audio.clip = soundName; audio.Play();

yield return new WaitForSeconds(audio.clip.length);

此函数实现的功能是音效的控制,在什么时候停止、暂停或者播放等。

7.3 粒子系统的实现

游戏项目下雪的天气效果就是通过Unity3D粒子系统来实现的。首先,创建一个空白的GameObject,然后把粒子系统游戏组件添加到里面,步骤如下:

第 19 页 共 33 页

Component->Effects->Particle System;

设置参数如下图7.2、7.3、7.4所示:

图7.2 雪粒子参数

图7.3雪粒子参数

图7.4雪粒子参数

其他选项不需要勾选就能呈现出下雪的效果了。

第 20 页 共 33 页


Unity3D游戏设计与实现 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于补缴部分合同制员工社会保险费的报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: