亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Unity 3D的游戲的設(shè)計(jì)與實(shí)現(xiàn)

        2014-04-29 00:00:00張敏

        摘 要:Unity 3D是一款基于3D的跨多平臺(tái)的游戲引擎,本文在介紹Unity 3D引擎的基礎(chǔ)上,以一款《保齡球游戲》為例,介紹了Unity 3D創(chuàng)建材質(zhì)、預(yù)置物體、腳本的方法,詳細(xì)分析了保齡球擊落保齡球瓶的發(fā)射、消失、按鈕、開始等JavaScript腳本的編寫方法與技巧。

        關(guān)鍵詞:Unity 3D;游戲開發(fā);保齡球游戲;JavaScript

        中圖分類號(hào):TP317

        1 Unity 3D引擎簡(jiǎn)介

        隨著掌握上電子設(shè)備不斷更新發(fā)展,現(xiàn)在進(jìn)行游戲開發(fā)已經(jīng)變得更快更容易。過(guò)去要成為程序員還需要進(jìn)行大學(xué)教育,牢記一堆源代碼的卡片,用一間房間那么大的計(jì)算機(jī)去編寫一段簡(jiǎn)單的游戲代碼?,F(xiàn)在的游戲開發(fā)工具不僅具有數(shù)字分布功能,還靈活性很強(qiáng)并且便宜,比如Unity 3D,在不久的未來(lái)游戲開發(fā)者全民化將成為現(xiàn)實(shí)。Unity 3D除了可以在多種平臺(tái)開發(fā)并運(yùn)行,還自帶了豐富的資源包,如人物控制,特效渲染,常用腳本,天空盒,面向手機(jī)平板電腦類型的系統(tǒng)開發(fā)資源包,另外還有地形、樹、水、玻璃、粒子系統(tǒng)等資源包。本案例以Unity 4.0為例開發(fā)游戲。

        2 《保齡球游戲》的設(shè)計(jì)與實(shí)現(xiàn)

        游戲策劃內(nèi)容是:游戲由兩個(gè)場(chǎng)景組成,第1個(gè)場(chǎng)景是初始界面設(shè)計(jì)2個(gè)按鈕“開始”和“退出”,單擊“開始”進(jìn)入第2個(gè)場(chǎng)景的游戲界面,在保齡球游戲界面下方有3個(gè)按鈕“重新開始”、“退出”、“音效”,單擊鼠標(biāo)左鍵發(fā)射保齡球,擊倒前方的保齡球瓶,按A鍵主攝像機(jī)左移,D鍵右移,W鍵前移,S鍵后移,Q鍵左轉(zhuǎn),R鍵右轉(zhuǎn),Z鍵向上轉(zhuǎn),C鍵向下轉(zhuǎn),當(dāng)保齡球瓶全部擊落到地面以下,屏幕會(huì)顯示“恭喜過(guò)關(guān)!”,整個(gè)游戲結(jié)束。

        其次,設(shè)計(jì)保齡球游戲腳本。在Unity3D中創(chuàng)建新項(xiàng)目,導(dǎo)入保齡球游戲場(chǎng)景的三維模型FBX文件,為場(chǎng)景中的保齡球瓶添加rigidbody剛體屬性,設(shè)置其方體碰撞的屬性,以免保齡球瓶穿過(guò)地面掉落,再創(chuàng)建一個(gè)保齡球并設(shè)置為預(yù)置物體。在Assets資源庫(kù)中創(chuàng)建“faqiu”腳本,將該腳本拖放到Main Camera上,“faqiu”腳本如下:

        function Start () { }

        var speed:int=5;//定義speed是整數(shù)型變量

        var newobject:Transform;//定義newobject:Transform

        var fqshu:int=0; //定義fqshu是整數(shù)型變量

        var xmshu:int=0; //定義xmshu是整數(shù)型變量

        function Update (){//攝像機(jī)前后左右的平移功能

        var x=Input.GetAxis(\"Horizontal\")*Time.deltaTime*speed;//水平移動(dòng)攝像機(jī)

        var z=Input.GetAxis(\"Vertical\")*Time.deltaTime*speed;//垂直移動(dòng)攝像機(jī)

        transform.Translate(x,0,z);//攝像機(jī)平移坐標(biāo)

        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++;//發(fā)球數(shù)+1

        gameObject.Find(\"擲球數(shù)\").GetComponent(GUIText).text=\"發(fā)球:\"+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);}

        保齡球發(fā)射后3秒后自動(dòng)消失,XH.js腳本如下:

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

        將發(fā)射球的數(shù)量和消滅保齡球瓶的數(shù)量在屏幕中進(jìn)行計(jì)數(shù),計(jì)算消滅數(shù)的方式就是瓶子掉到了地面以下,y值小于0,實(shí)現(xiàn)xmshu+1,如果消滅數(shù)大于10,游戲結(jié)束。Panduan.js判斷腳本作為組件添加到保齡球瓶,其腳本如下:

        function Start () { }

        var fq:int;

        var xm:int;

        function Update( ) { //判斷保齡球瓶是否擊落到地下

        if(gameObject.transform.position.y<0){ //保齡球瓶y值小于0

        xm=gameObject.Find(\"Main camera\").GetComponent(faqiu).xmshu++; //消滅數(shù)+1

        fq=gameObject.Find(\"Main Camera\").GetComponent(faqiu).fqshu; //發(fā)球數(shù)

        gameObject.Find(\"擲球數(shù)\").GetComponent(GUIText).text=\"擲球數(shù):\"+sd+\" 消滅數(shù):\"+xm;

        //顯示\"擲球數(shù):\"和\"消滅數(shù):\"

        if(xm>10){ //消滅數(shù)大于10顯示\"恭喜過(guò)關(guān)!\"并停止發(fā)球

        gameObject.Find(\"擲球數(shù)\").GetComponent(GUIText).text=\"恭喜過(guò)關(guān)!\";

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

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

        Destroy(gameObject); //銷毀物體 } }

        在游戲窗口下方添加3個(gè)按鈕——“退出”、“重新開始”、“音效”,button.js腳本賦給層級(jí)面板的地板物體,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的音樂(lè)文件拷入預(yù)置文件夾中,為“地面”添加音樂(lè)組件,這樣游戲開始時(shí)會(huì)播放音樂(lè),按“音效”鍵可以關(guān)閉或開啟音樂(lè)。

        第三,設(shè)計(jì)游戲初始界面。在Hierarchy層級(jí)面板單擊Create(創(chuàng)建)→GUI Texture(GUI紋理),創(chuàng)建“初始界面.Unity”。start.js腳本添加到初始界面場(chǎng)景的主攝像機(jī),其腳本如下:

        function OnGUI(){

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

        //“退出”按鈕坐標(biāo)(180,400),大小6030像素,調(diào)用Quit程序 }

        if(GUI.Button(Rect(280,400,60,30),\"開始游戲\")){Application.LoadLevel(\"保齡球\");

        //“開始游戲”按鈕坐標(biāo)(280,400),大小6030像素,調(diào)用“保齡球.unity”場(chǎng)景}}

        最后,游戲的打包與發(fā)布。發(fā)布設(shè)置窗口中設(shè)置游戲打包到PC, Mac Linux standard alone平臺(tái),將“初始界面.unity”場(chǎng)景執(zhí)行順序設(shè)置為0,“保齡球.unity”場(chǎng)景執(zhí)行順序設(shè)置為1,單擊Build and Run按鈕,即可得到打包后的exe文件。至此,整個(gè)游戲開發(fā)完成。

        3 結(jié)束語(yǔ)

        Unity 3D是一項(xiàng)新的技術(shù),它能最大程度上讓游戲開發(fā)者的生活變得更美好更容易,使用Unity 3D后,你會(huì)覺(jué)得開發(fā)帶有影視特效的游戲比以前更快更簡(jiǎn)單。

        參考文獻(xiàn):

        [1]路朝龍.Unity3D游戲開發(fā)從入門到精通[M].北京:中國(guó)鐵道出版社,2013.

        [2]俞亮,俞文心.基于Unity的Web游戲設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2014(08):225-226.

        [3]程明智,王一夫.Unity游戲開發(fā)技術(shù)[M].北京:國(guó)防工業(yè)出版社,2012.

        作者簡(jiǎn)介:張敏(1972-),女,湖南長(zhǎng)沙人,教研室主任,碩士,研究方向:三維展示。

        作者單位:湖南工業(yè)職業(yè)技術(shù)學(xué)院,長(zhǎng)沙 410208

        色噜噜狠狠狠综合曰曰曰| 人妻少妇偷人精品久久人妻 | 一本色道久久爱88av| 在线观看午夜视频一区二区| 精品一二三四区中文字幕| 成午夜福利人试看120秒| 亚洲午夜av久久久精品影院色戒| 国产精品办公室沙发| 久久亚洲色www成人欧美| 无码国产一区二区三区四区| 亚洲综合无码一区二区| 无码AV高潮喷水无码专区线| 人妻av午夜综合福利视频| 国产成人综合久久大片| 亚洲中文无码av永久| 久久性爱视频| 无码人妻精品一区二区三区下载| 亚洲成在人线电影天堂色| 国产精品成人无码久久久久久| 后入少妇免费在线观看| 国产内射视频在线免费观看 | 国产精品久久成人网站| 久久男人av资源网站无码| 久久亚洲成a人片| 久久洲Av无码西西人体| 免费人成黄页网站在线观看国产| 国产成人高清亚洲一区二区| 一道本久久综合久久鬼色| 夜夜添夜夜添夜夜摸夜夜摸| 午夜福利92国语| 成年男人裸j照无遮挡无码| 国产精品黄色在线观看| 中国男男女在线免费av| 亚洲国产精品不卡av在线| 国产情侣真实露脸在线| 国产精品久久久久久52avav| 亚洲欧洲日韩另类自拍| 亚洲国产一区二区视频| 蜜桃臀av一区二区三区| 天堂网www资源在线| 无码中文字幕色专区|