• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Unity 3D的游戲的設計與實現(xiàn)

      2014-04-29 00:00:00張敏
      計算機光盤軟件與應用 2014年18期

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

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

      中圖分類號:TP317

      1 Unity 3D引擎簡介

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

      2 《保齡球游戲》的設計與實現(xiàn)

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

      其次,設計保齡球游戲腳本。在Unity3D中創(chuàng)建新項目,導入保齡球游戲場景的三維模型FBX文件,為場景中的保齡球瓶添加rigidbody剛體屬性,設置其方體碰撞的屬性,以免保齡球瓶穿過地面掉落,再創(chuàng)建一個保齡球并設置為預置物體。在Assets資源庫中創(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 (){//攝像機前后左右的平移功能

      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++;//發(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秒后自動消失,XH.js腳本如下:

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

      將發(fā)射球的數(shù)量和消滅保齡球瓶的數(shù)量在屏幕中進行計數(shù),計算消滅數(shù)的方式就是瓶子掉到了地面以下,y值小于0,實現(xiàn)xmshu+1,如果消滅數(shù)大于10,游戲結束。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顯示\"恭喜過關!\"并停止發(fā)球

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

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

      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(創(chuàng)建)→GUI Texture(GUI紋理),創(chuàng)建“初始界面.Unity”。start.js腳本添加到初始界面場景的主攝像機,其腳本如下:

      function OnGUI(){

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

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

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

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

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

      3 結束語

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

      參考文獻:

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

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

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

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

      作者單位:湖南工業(yè)職業(yè)技術學院,長沙 410208

      当阳市| 无极县| 德州市| 体育| 清苑县| 铁岭县| 莱阳市| 通许县| 靖西县| 长宁区| 广南县| 汝城县| 英德市| 淳化县| 涡阳县| 额尔古纳市| 凤阳县| 钟山县| 内江市| 门源| 静海县| 汝州市| 巴马| 闻喜县| 仁寿县| 札达县| 淮阳县| 通渭县| 六盘水市| 阿图什市| 利辛县| 满洲里市| 饶河县| 察哈| 剑阁县| 鄱阳县| 南投市| 清新县| 孟津县| 武冈市| 凤城市|