搜档网
当前位置:搜档网 › 基于Unity3D的游戏的设计与实现

基于Unity3D的游戏的设计与实现

基于Unity3D的游戏的设计与实现
基于Unity3D的游戏的设计与实现

基于Unity 3D的游戏的设计与实现天使投资

摘要:Unity 3D是一款基于3D的跨多平台的游戏引擎,本文在介绍Unity 3D 引擎的基础上,以一款《保龄球游戏》为例,介绍了Unity 3D创建材质、预置物体、脚本的方法,详细分析了保龄球击落保龄球瓶的发射、消失、按钮、开始等JavaScript脚本的编写方法与技巧。

关键词:Unity 3D;游戏开发;保龄球游戏;JavaScript

1 Unity 3D引擎简介

随着掌握上电子设备不断更新发展,现在进行游戏开发已经变得更快更容易。过去要成为程序员还需要进行大学教育,牢记一堆源代码的卡片,用一间房间那么大的计算机去编写一段简单的游戏代码。现在的游戏开发工具不仅具有数字分布功能,还灵活性很强并且便宜,比如Unity 3D,在不久的未来游戏开发者全民化将成为现实。Unity 3D除了可以在多种平台开发并运行,还自带了丰富的资源包,如人物控制,特效渲染,常用脚本,天空盒,面向手机平板电脑类型的系统开发资源包,另外还有地形、树、水、玻璃、粒子系统等资源包。本案例以Unity 4.0为例开发游戏。

2 《保龄球游戏》的设计与实现

游戏策划内容是:游戏由两个场景组成,第1个场景是初始界面设计2个按钮“开始”和“退出”,单击“开始”进入第2个场景的游戏界面,在保龄球游戏界面下方有3个按钮“重新开始”、“退出”、“音效”,单击鼠标左键发射保龄球,击倒前方的保龄球瓶,按A键主摄像机左移,D键右移,

W键前移,S键后移,Q键左转,R键右转,Z键向上转,C键向下转,当保龄球瓶全部击落到地面以下,屏幕会显示“恭喜过关~”,整个游戏结束。

其次,设计保龄球游戏脚本。在Unity3D中创建新项目,导入保龄球游戏场景的三维模型FBX文件,为场景中的保龄球瓶添加rigidbody刚体属性,设置其方体碰撞的属性,以免保龄球瓶穿过地面掉落,再创建一个保龄球并设置为预置物体。在Assets资源库中创建“faqiu”脚本,将该脚本拖放到Main Camera上,“faqiu”脚本如下:

function Start () { }

var speed:int=5; //定义speed是整数型变量

var newobject:Transform;//定义newobject:Transform

var fqshu:int=0; //定义fqshu是整数型变量

var xmshu:int=0; //定义xmshu是整数型变量

function Update (){//摄像机前后左右的平移功能

var x=Input.GetAxis("Horizontal")

*Time.deltaTime*speed; //水平移动摄像机

var z=Input.GetAxis("Vertical")

*Time.deltaTime*speed;//垂直移动摄像机

transform.Translate(x,0,z);//摄像机平移坐标

if(Input.GetButtonDown("Fire1")){

var n:Transform=Instantiate(newobject,transform.position,transform.rotation); var fwd:Vector3=transform.TransformDirection (Vector3.forward);//向前掷球

n.rigidbody.AddForce(fwd*2500); //加力

fqshu++;//发球数+1

gameObject.Find("掷球数").GetComponent(GUIText).text="发球:"+fqshu+" 消灭:"+ xmshu;

if(Input.GetKey(KeyCode.Q)){ transform.Rotate(0,-

25*Time.deltaTime,0,Space.Self);}

if(Input.GetKey(KeyCode.R)){ transform.Rotate(0,25*Time.deltaTime,0,Space.Self); }

if(Input.GetKey(KeyCode.C)){ transform.Rotate(-25*Time.deltaTime,0,0,Space.Self); }

if(Input.GetKey(KeyCode.Z)){ transform.Rotate(25*Time.deltaTime,0,0,Space.Self); }

保龄球发射后3秒后自动消失,XH.js脚本如下:

function Start () {Destroy(gameObject,3.0);}

将发射球的数量和消灭保龄球瓶的数量在屏幕中进行计数,计算消灭数的方式就是瓶子掉到了地面以下,y值小于0,实现xmshu+1,如果消灭数大于10,游戏结束。

Panduan.js判断脚本作为组件添加到保龄球瓶,其脚本如下:

function Start () { }

var fq:int;

var xm:int;

function Update( ) { //判断保龄球瓶是否击落到地下

if(gameObject.transform.position.y10){ //消灭数大于10显示"恭喜过关~"并停止发球

gameObject.Find("掷球数").GetComponent(GUIText).text="恭喜过关~";

gameObject.Find("Main Camera").GetComponent(faqiu).enabled=false;

gameObject.Find("地板").GetComponent(restart).enabled=true; }

Destroy(gameObject); //销毁物体 } }

在游戏窗口下方添加3个按钮――“退出”、“重新开始”、“音效”,button.js脚本赋给层级面板的地板物体,button.js脚本如下: function OnGUI(){

if(GUI.Button(Rect(10,300,60,30),"退出")){Application.Quit();} if(GUI.Button(Rect(100,300,80,30),"重新开始

")){Application.LoadLevel("保龄球"); }

if(GUI.Button(Rect(300,300,60,30),"音效")) audio.Pause();}

将mp3的音乐文件拷入预置文件夹中,为“地面”添加音乐组件,这样游戏开始时会播放音乐,按“音效”键可以关闭或开启音乐。

第三,设计游戏初始界面。在Hierarchy层级面板单击Create(创建)?GUI Texture(GUI纹理),创建“初始界面.Unity”。start.js脚本添加到初始界面场景的主摄像机,其脚本如下:

function OnGUI(){

if(GUI.Button(Rect(180,400,60,30),"退出")){Application.Quit();

//“退出”按钮坐标(180,400),大小6030像素,调用Quit程序 }

if(GUI.Button(Rect(280,400,60,30),"开始游戏

")){Application.LoadLevel("保龄球");

//“开始游戏”按钮坐标(280,400),大小6030像素,调用“保龄

球.unity”场景}}

最后,游戏的打包与发布。发布设置窗口中设置游戏打包到PC, Mac & Linux standard alone平台,将“初始界面.unity”场景执行顺序设置为0,“保龄

球.unity”场景执行顺序设置为1,单击Build and Run按钮,即可得到打包后的exe文件。至此,整个游戏开发完成。

3 结束语

Unity 3D是一项新的技术,它能最大程度上让游戏开发者的生活变得更美好更容易,使用Unity 3D后,你会觉得开发带有影视特效的游戏比以前更快更简单。