国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺析Unity3d開發(fā)游戲流程及常用技術(shù)

2012-04-29 22:16:26王樹斌
電腦知識與技術(shù) 2012年22期
關鍵詞:漫游

王樹斌

摘要:該文通過一個小程序介紹了unity3d開發(fā)游戲的流程,并對使用unity3d開發(fā)游戲過程中常用的技術(shù)進行了說明。

關鍵詞:unity3d;漫游;物理碰撞

中圖分類號:TP391文獻標識碼:A文章編號:1009-3044(2012)22-5351-02

1 unity3d概述

unity3d是由丹麥Unity公司開發(fā)的游戲開發(fā)工具,具體的特性包含整合的編輯器、跨平臺發(fā)布、地形編輯、著色器、腳本、網(wǎng)絡、物理、版本控制等特性。Unity3d游戲引擎和其他游戲引擎的一大差別在于,它更加注重設計者對游戲可玩性的關注,而不是單純的追求設計的簡易度。同時相對其他游戲引擎,unity3d的價格更為便宜,這也吸引了廣大的游戲開發(fā)者。

unity3d用了PhysX的物理引擎,在植被方面使用了Unitree,并內(nèi)置了大量的Shader供開發(fā)者使用,這些Shader即可滿足開發(fā)者的常用效果。Unity公司在腳本方面非常強大,unity3d支持JaveScript、C#等腳本,如果開發(fā)非網(wǎng)頁的獨立版還可使用插件。

2用unity3d開發(fā)項目流程

采用unity3d開發(fā)項目,我們這里以控制一個球體前后左右移動為例,大概分為以下6步:

第一步:創(chuàng)建工程。打開unity3d,彈出一個窗口提示要打開工程還是創(chuàng)建工程,選擇創(chuàng)建工程(Create new project→Browse選擇路徑→Create)。一旦工程創(chuàng)建成功,系統(tǒng)自動生成三個文件Assets(此文件是系統(tǒng)的資源文件有物理屬性、貼圖等資源)、Library,Temp。

第二步:建立場景。你可以添加一個地形作為場景,方法是菜單欄Terrain→Create Terrain.為了簡單直接,在此新建個平面作為場景。方法是:菜單欄→GameObject→Create Other→Plane,創(chuàng)建成功后在場景編輯窗口(Scene窗口)出現(xiàn)一個灰色的平面,同時在Hierarchy窗口出現(xiàn)該平面的名稱。當然為了直觀,你可以幫它改名,方法是F2(或點擊然后右鍵rename),輸入你要的名字(例如:myScene)。你可以在Inspector窗口查看myScene的一些屬性,為了方便我們把myScene的Transform的position的x,y,z全改為0。改完以后如果你在場景窗口找不到你的場景(myScene),你可以采用以下方法快速找到它:在Hierarchy窗口選中myScene,然后把鼠標的光標移到場景窗口,按"F"鍵,myScene就會出現(xiàn)在場景窗口的中央。這個方法適用于所有的游戲?qū)ο蟮牟檎遥ㄟ@個快捷鍵會經(jīng)常用到)。

第三步:建立一個球體。單擊菜單欄→GameObject→CreateOther→Sphere。同樣修改其名稱為(mySphere)。同樣在Inspector窗口修改其位置x、z為0,y改為0.5。

第四步:添加燈光。如果覺得光線比較暗的話,可以為場景添加燈光,unity3d提供了兩種燈光可供你選擇:點光源及平行光源。添加的方法與添加plane及sphere一樣,只是選擇point light或directional light。

第五步:這時你應該注意到Hierarchy窗口有一個系統(tǒng)默認生成的攝像機。如果沒有這個攝像機,你在Game窗口是看不到你創(chuàng)建的場景以及球體,以及燈光的。如果你覺得Game窗口的物體太小了,你可以把攝像機往前移動,方法當然是修改攝像機的屬性里的position,把z坐標設為-5。

第六步:讓球動起來!要控制球的移動,就需要編寫腳本。回到project窗口,點Create→JavaScript(當然你也可以單擊右鍵彈出菜單Create→JavaScript),腳本添加成功,按“F2”把它改名為(MoveSphere)。雙擊腳本把它打開,默認生成的文本如下:

function Update ()

{ }

這里先介紹一下function Update (),此函數(shù)的意思是每畫一幀就調(diào)用一次。接下來編寫控制球移動的代碼如下(以下代碼的意思是:按上下左右鍵就把物體(球)往前后左右移動一段距離):

if(Input.GetKey(KeyCode.UpArrow))

{ transform.Translate(0 , 0 , 2*Time.deltaTime);

}

if(Input.GetKey(KeyCode.DownArrow))

{transform.Translate(0 , 0 , -2*Time.deltaTime);

}if(Input.GetKey(KeyCode.LeftArrow))

{

transform.Translate( -2*Time.deltaTime , 0 , 0 );

}

if(Input.GetKey(KeyCode.RightArrow))

{ transform.Translate( 2*Time.deltaTime , 0 , 0);

}

代碼寫完了以后,按快捷鍵Ctrl+S保存。

保存好以后就可以執(zhí)行程序了,這個時候執(zhí)行,按上下左右,但是球沒動!因為我們還沒把球和代碼關聯(lián)起來,所以球是不會動的,因為還沒有受到代碼的控制。關聯(lián)的方法很簡單,直接把代碼從Project窗口拖到Hierarchy窗口的球(mysphere)上就行了。再次執(zhí)行,按上下左右鍵,這時候球就向前后左右移動起來了。

3常用技術(shù)

在使用unity3d創(chuàng)建游戲時,有很多重要的技術(shù),該文主要介紹兩個重要的技術(shù)。

3.1鍵盤交互技術(shù)

鍵盤交互主要是指能夠控制游戲者在系統(tǒng)中進行漫游,參觀各個位置的三維物體。鍵盤交互以設置方向鍵“↑”、“↓”、“←”、“→”或者“W”、“S”、“A”、“D”為控制鍵,分別用來控制化身的“前”、“后”、“左”、“右”的走動。在unity3d中,可以通過函數(shù)實現(xiàn)這些功能,以用“W”控制向前走動為例,腳本命名為js,其代碼如下:

var Speed = 50; //控制速度

var Control; //控制對象

function Update()

{

Control = GetComponent(js); //得到控制對象

if(Input.GetKey(KeyCode.W))//判斷按鍵

{

Control.ForWard();//前進

}

function ForWard()

{

transform.Translate(Vector3.forward * Time.deltaTime *Speed);

}

3.2碰撞檢測

碰撞檢測在3D游戲中是非常重要的一件事情,好的碰撞檢測要求人物在場景中可以平滑移動,當人物在在場景中漫游的時候,在各種前進方向上如果有被其他物體擋住的情況下,不只不能再繼續(xù)往前走,而且要盡可能地沿合理的方向滑動。在unity3d中,碰撞檢測的功能是由函數(shù)封裝好的,我們只需要調(diào)用函數(shù)就可以實現(xiàn)了。OnControllerColliderHit()函數(shù)是用于角色碰撞的,物體如果附加了Charactor Controller (Unity自帶的用于角色控制的腳本)則使用這個函數(shù)檢測碰撞,這是不需要加剛體的。一般的剛體之間碰撞使用OnCollisionEnter(),范圍觸發(fā)用OnTriggerEnter()。

4游戲的發(fā)布與測試

完成游戲制作后,調(diào)試運行基本沒有問題,就可以發(fā)布游戲了。unity3d發(fā)布游戲的流程如下:在unity3d中選擇文件菜單→發(fā)布設置,在這里可以選擇添加游戲場景,在前面的場景會先顯示。在平臺設置里邊可以設置web播放、PC、安卓等多種平臺,然后選擇發(fā)布,就可以編譯發(fā)布exe文件了。

任何軟件系統(tǒng)在設計好以后,都要進行測試。早期的軟件測試定義指出軟件測試的目的是尋找錯誤,并且盡可能的找出最多的錯誤。但是游戲測試的目的是解決玩家所遇非正常問題的預測工作,同時也是不斷調(diào)試系統(tǒng)的一個長期觀察任務。游戲測試作為軟件測試的一部分,它具備了軟件測試所有的一切共同的特性:測試的目的是發(fā)現(xiàn)軟件中存在的缺陷并且及時的修改,從而提升軟件產(chǎn)品的質(zhì)量。

5結(jié)束語

unity3d是一款功能非常強大的游戲設計軟件,包含了很多重要的技術(shù)。該文只是對其中兩種技術(shù)作了簡單的介紹。

參考文獻:

[1]宣雨松.Unity3D游戲開發(fā)[M].北京:人民郵電出版社,2012.

猜你喜歡
漫游
霹靂漫游堂
霹靂漫游堂
霹靂漫游堂
霹靂漫游堂
霹靂漫游堂
霹靂漫游堂
霹靂漫游堂
霹靂漫游堂
霹靂漫游堂
NASA漫游記
永新县| 西乌珠穆沁旗| 绥滨县| 定西市| 雷山县| 洪洞县| 理塘县| 梨树县| 山丹县| 平阳县| 潞西市| 延庆县| 呼和浩特市| 渝北区| 镇坪县| 阜平县| 五台县| 福安市| 义马市| 上饶县| 浠水县| 弋阳县| 镶黄旗| 西乡县| 云阳县| 漠河县| 镇坪县| 屯昌县| 成都市| 克山县| 务川| 海伦市| 类乌齐县| 苍南县| 郸城县| 广宗县| 新建县| 莆田市| 莱西市| 明星| 辉南县|