当前位置:
文档之家› 虚拟显示及数据可视化__Unity课程设计报告
虚拟显示及数据可视化__Unity课程设计报告
}
if(Input.GetKey("left"))//按键控制左
{
this.transform.position-=newVector3(0.5f*Time.deltaTime,0.0f,0.0f);
}
}
(4)碰撞检测
当小鸟飞到伙伴附近时可以进行营救。为实现该功能,我们在bird_1.cs脚本中添加碰撞检测函数。具体代码如下:
(7)Level_5
(8)坦克大战
(9)坦克大战预置体和粒子效果
(2)对小鸟进行属性设置。添加碰撞体属性(球体碰撞体SphereCollider)并取消其重力属性。由于碰撞体具有碰撞性质,故当检测到小鸟碰撞到墙壁,小猪等障碍物时,可以通过判 断碰撞体发生碰撞来实现结束游戏的功能。(墙壁四周放置了cube,对cube添加碰撞体属 性)。
(3)控制小鸟运动的实现
为了实现对小鸟运动的控制,我们对其添加脚本文件(C#Script)。具体代码如下(bird_1):
4
[1]MichelleMenard《Unity游戏开发实战》机械工业出版社2012年4月[2]/link?url=NeLL_E6Y0Y3wZnKiqd0vhen9tAWVJ937ILAgoy1FWgNf80grSaM_FdrBh32eqkEcWY《UNITY3D入门教程》
孙立博仪器科学与工程学院
1.4作品简介
本款“愤怒的小鸟之营救伙伴”旨在给大学的忙碌增添一丝闲暇与趣味,给大脑的疲劳 一丝放松与悠闲,抛开一切烦恼,尽情的享受课余生活。
本游戏通过Unity3D设计,游戏的控制机理和赛车控制游戏相同。对网上现有的游戏愤怒的小鸟进行了一些修改,对按键的效果进行了改进并对游戏的难度进行了一定的修改。 整个项目共有初始UI界面(welcom和next),1~5游戏关数共7个场景。愤怒的小鸟通过 穿越障碍,来到小伙伴被困住的地方,从而完成营救的目的。在愤怒的小鸟穿越障碍的时候, 如果碰到障碍(如墙壁等),意味着营救失败。本游戏界面良好逼真,控制简单,游戏难度 设置合理,背景音乐悦耳,再加上愤怒的小鸟原有的人气,使得本款游戏具有较大的吸引力。您可以在本游戏中进行的享受愤怒的小鸟的世界!
voidOnTriggerEnter(Colliderother)
{
if(=="bird_help")
{
}
else
{
Application.LoadLevel("Next");print("zzzzzzzzzzzzzzzzzzzzzzzzzz");
this.transform.position=Brid_Point;print("sssssssssssssssssssssssssssssss");
这是我们为数不多参与的一个完整的实践过程,与以往一个个独立的简单实践不同,一个完整实践,从最初的方案选取,资料的收集,到方案的深入,可行性分析等等,都需要我们考虑周全,按部就班地进行。
最初确定设计的方向,我们认为说难度不大,但往往大方向的确定是容易的,而具体实 施起来才会认识到层层困难。制定计划和任务分配上遇到了很大的困难,由于对具体流程不 熟悉,大家必须查看大量文献资料,了解相关脚本的实现方法。先做哪一步,后做哪一步, 从而制定一项完整的计划,往往有许多考虑不周到的地方,例如在安排每天做的方案分析时 过多的考虑其概念性,而忽略了其真正的原理,时间安排不合理等等,等之后有了经验才慢 慢改进。
东南大学仪器科学与工程学院
虚拟现实与数据可视化
Unity课程设计
设计名称:Project1愤怒的小鸟之营救伙伴
Project2坦克大战
院系名称:仪器科学与工程学院测控技术与仪器
小组成员:
指导老师:孙立博报告时间:2013年12月19日
1
1.1作品名称
愤怒的小鸟之营救伙伴
1.2作品成员
成员
院系
学号
1.3指导老师
[3]/view/a0e2b0b9c77da26925c5b029.html《UNITY3D的Javascript
入门教程》
5
5.1小组成员分工
主要工作
主要负责人
5.2作品效果图
(
(2)next
(3)Level_1
(4)Level_2
(5)Level_3
(6)Level_4
墙壁周围放置的4个cube
然后对cube属性设置,取消MeshRenderer。这个时候就看不到了cube的外形,但cube依然存在
最后对cube添加碰撞体属性,愤怒的小鸟也添加了碰撞体属性。当检测到二者碰撞时,通过脚本文件就可以实现结束游戏的功能。
2.2.2愤怒的小鸟的制作
(1)在游戏过程中需要愤怒的小鸟的翅膀一直摆动。基于此要求,我们设置序列帧来实现该功能。在工程中插入序列帧animation,详见工程中“SpriteCollection”中的“bird”部分。 通过设置3章不同的图片来循环播放,实现小鸟的翅膀摆动。本项目中帧率设置为33.33帧。 游戏运行效果逼真形象。
}
caseLEVEL.LEVEL_5:
{
Application.LoadLevel("Level_5");break;
}
2.2.4坦克大战游戏粒子效果的实现
考虑到上述的愤怒的小鸟游戏中没有用到Unity常用到粒子效果,因此我们又做了一个坦克大战游戏。此工程包括三个场景,包含一个菜单场景和其它两个场景。其中,在坦克“Tank01”上加了粒子效果,坦克可以发射出30枚炮弹,来击打墙壁这个障碍物。利用‘W、A、S、D’键控制坦克运动,‘Space’键用来发射炮弹。具体如下:
}
voidUpdate()//按键控制
{
if(Input.GetKey("up"))//按键控制上
{
this.transform.position+=newVector3(0.0f,0.5f*Time.deltaTime,0.0f);
}
if(Input.GetKey("down"))//按键控制下
{
2
2.1使用说明
(1)开发环境:Unity3D
(2)操作方法(按键控制)
调整对象
对应按键
对应效果
愤怒的小鸟 位置控制
方向键up - ↑
向上
方向键down - ↓
向下
方向键left -←
向后
方向键right- →
向前
2.2设计方案
2.2.1障碍物设置
愤怒的小鸟通过穿越障碍,来到小伙伴被困住的地方,从而完成营救的目的。在愤怒的 小鸟穿越障碍的时候,如果碰到障碍(如墙壁等),意味着营救失败。为了实现该功能,我们在障碍物(此处以墙壁为例)的周围放置了4个cube,通过对cube属性的设置来实现该功能。具体过程如下:
varclone:Rigidbody;
clone=Instantiate(Bullet,FirePoint.transform.position,FirePoint.transform.rotation);clone.velocity=transform.TransformDirection(Vector3.forward*BulletSpeed);
voidOnCollisionEnter(Collisioncollision)//碰撞检测营救伙伴
{
if(=="bird_help")//碰撞到被营救的小伙伴时
{//进入下一关
Debug.Log("InNextlevel");
}
else
{
}
}
this.transform.position=Brid_Point;
{
Application.LoadLevel("Level_2");break;
}
caseLEVEL.LEVEL_3:
{
Application.LoadLevel("Level_3");
break;
}
caseLEVEL.LEVEL_4:
{
Application.LoadLevel("Level_4");break;
this.transform.position-=newVector3(0.0f,0.5f*Time.deltaTime,0.0f);
}
if(Input.GetKey("right"))//按键控制右
{
this.transform.position+=newVector3(0.5f*Time.deltaTime,0.0f,0.0f);
(3)next场景中对游戏不同级别的设置
在next场景中当检测到“下一关”按钮按下时执行下一关。本方案中设置了一张next
场景来实现不同级别之间的切换,因此主要用到了case语句。具体代码如下:
(※注:该脚本文件较长,受限于篇幅,此处仅给出部分关键代码)
switch(Next_Level)
{
caseLEVEL.LEVEL_2:
//发射炮弹的代码如下(Script--Fire):
varFirePoint:Transform;varBullet:Rigidbody;varBulletCnt:int=30;varBulletSpeed=100;
varmyStyle:GUIStyle;privatevarCurrBullet:int;
voidOnCollisionEnter(Collisioncollision)
{
if(=="bird_help")
{
}
else
{
}
}