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 页
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Unity3D游戏设计与实现 - 图文(6)在线全文阅读。
相关推荐: