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

        ?

        Unity3D在Android游戲開發(fā)中的應(yīng)用

        2015-01-13 15:32:45林昕
        新校園·中旬刊 2014年12期

        林昕

        摘 要:目前,作為3D游戲開發(fā)引擎和工具,Unity3D以其跨平臺(tái)和易用性等特性,被越來越多的公司所使用,并逐步成為開發(fā)首選工具。本文對(duì)Unity3D工具的基本使用做簡(jiǎn)介,并通過構(gòu)建一個(gè)簡(jiǎn)單的3D游戲過程,介紹Unity3D在Android游戲開發(fā)中的應(yīng)用,同時(shí)指出了該工具的廣闊應(yīng)用。

        關(guān)鍵詞:Unity3D;Andoird;游戲開發(fā)

        一、引言

        Unity3D是由Unity Technologies開發(fā)的一個(gè)讓開發(fā)者創(chuàng)建三維游戲、建筑可視化、實(shí)時(shí)三維動(dòng)畫等類型互動(dòng)內(nèi)容的跨平臺(tái)的游戲開發(fā)工具,是一個(gè)整合度很高的專業(yè)游戲引擎。Unity可運(yùn)行在Windows 和Mac OS X下,可發(fā)布游戲至Windows、Mac、Wii、iPhone和Android平臺(tái),支持Mac 和Windows的網(wǎng)頁瀏覽。由于Unity3D的跨平臺(tái)和易用性等特性被越來越多的游戲開發(fā)公司所重視,并逐漸成為3D游戲開發(fā)的首先工具。

        二、Unity3D界面介紹

        Unity3D的基本界面層次清晰,幾個(gè)窗口實(shí)現(xiàn)了全部的編輯功能。主界面如圖1所示:

        場(chǎng)景面板:該面板為Unity3D的編輯面板或者說是工作區(qū);開發(fā)者可以將所有的模型、燈光、以及其他材質(zhì)對(duì)象拖放到當(dāng)前場(chǎng)景中,構(gòu)建游戲中所能呈現(xiàn)的景象。

        動(dòng)畫面板:該面板可以呈現(xiàn)完整的動(dòng)畫效果。顯示的內(nèi)容取決于場(chǎng)景攝像機(jī)的設(shè)置。當(dāng)游戲在場(chǎng)景面板中編輯好后,點(diǎn)擊運(yùn)行按鈕,即可在動(dòng)畫面板中查看游戲的實(shí)際運(yùn)行效果。

        項(xiàng)目面板:該面板主要功能是顯示該項(xiàng)目文件中的所有資源列表。除了模型、材質(zhì)、字體等,還包括該項(xiàng)目的各個(gè)場(chǎng)景文件。開發(fā)者可以將游戲中使用到的所有資源導(dǎo)入到該面板中,使用時(shí)只要用鼠標(biāo)拖動(dòng)到場(chǎng)景面板即可。

        層次面板:該面板主要功能是顯示放在場(chǎng)景面板中的所有的物體對(duì)象。該面板可以清楚查看在場(chǎng)景面板中出現(xiàn)的所有對(duì)象,很方便對(duì)場(chǎng)景中的對(duì)象進(jìn)行管理。

        對(duì)象屬性欄:又叫檢視面板,該面板欄會(huì)呈現(xiàn)出任何對(duì)象的屬性和組件,包括三維坐標(biāo)、旋轉(zhuǎn)量、縮放大小、腳本的變量和對(duì)象等。

        場(chǎng)景調(diào)整工具:可以改變?cè)诰庉嬤^程中的場(chǎng)景視角、物體世界坐標(biāo)和本地坐標(biāo)的更換、物體的法線中心的位置,以及物體在場(chǎng)景中的坐標(biāo)位置、縮放大小等。

        三、接雞蛋游戲的制作流程

        一款手機(jī)游戲的開發(fā)大致經(jīng)歷立項(xiàng)、制定策劃大綱、制作游戲、檢測(cè)調(diào)試等過程。本文以接雞蛋這個(gè)小游戲?yàn)槔枋鯱nity3D開發(fā)Andoird游戲的基本流程。

        游戲的基本玩法是雞蛋從屏幕上方落下,通過左右移動(dòng)屏幕下方的木桶接住從上方落下的雞蛋,雞蛋落到木桶中及得分。游戲開發(fā)的基本步驟如下:

        1.新建工程和場(chǎng)景

        一個(gè)游戲就是一個(gè)項(xiàng)目,一個(gè)關(guān)卡就是一個(gè)場(chǎng)景,在Unity3D的文件菜單中選擇新建項(xiàng)目,為新項(xiàng)目命名,如圖2所示,新建項(xiàng)目的同時(shí)會(huì)新建第一個(gè)場(chǎng)景,保存新場(chǎng)景。

        2.導(dǎo)入資源

        游戲使用到的資源主要包括游戲?qū)ο竽P汀⒉馁|(zhì)、貼圖、聲音等,模型可以在Maya,3DMax等3D建模工具中做好,導(dǎo)出為FBX格式的文件,然后在Unity3D的項(xiàng)目面板中選擇導(dǎo)入資源菜單導(dǎo)入游戲資源。接雞蛋主要模型資源有木桶、雞蛋、草地、白云等模型。

        3.搭建游戲場(chǎng)景

        將游戲資源從項(xiàng)目面板拖入到場(chǎng)景面板中進(jìn)行游戲場(chǎng)景的搭建,通過移動(dòng)、縮放、旋轉(zhuǎn)等工具將游戲資源對(duì)象按照一定的空間順序進(jìn)行搭建,最終效果如圖3所示:

        4.編寫游戲腳本

        (1)桶移動(dòng):PlayerScript.cs

        木桶的左右移動(dòng)是通過PlayerScript.cs來控制的,Unity3D的輸入系統(tǒng)定義了水平方向的移動(dòng),并將X方向的數(shù)值限定在-2.5到2.5之間,這樣避免木桶超出屏幕范圍,代碼的主要部分如下:

        void Update () {

        float moveInput = Input.GetAxis("Horizontal") * Time.deltaTime * 3; // 木桶在水平方向移動(dòng)

        transform.position += new Vector3(moveInput, 0, 0);

        if (transform.position.x <= -2.5f || transform.position.x >= 2.5f){ // 限制木桶的移動(dòng)范圍

        float xPos = Mathf.Clamp(transform.position.x, -2.5f, 2.5f); // 木桶在-2.5和2.5之間移動(dòng)

        transform.position = new Vector3(xPos, transform.position.y, transform.position.z);

        }}

        將PlayerScript.cs拖至木桶對(duì)象上,使得其成為木桶對(duì)象的腳本組件。

        (2)雞蛋落下:EggScript.cs

        雞蛋落下由EggScript.cs來控制,當(dāng)雞蛋落至屏幕下方足夠低的地方的時(shí)候,雞蛋自動(dòng)銷毀,以免占有資源,代碼主要部分如下:

        void Update () {

        float fallSpeed = 2 * Time.deltaTime;

        transform.position -= new Vector3(0, fallSpeed, 0);

        if (transform.position.y < -1 || transform.position.y >= 20) // 位置足夠低的時(shí)候銷毀對(duì)象

        {Destroy(gameObject);}}

        同樣將EggScript.cs拖至雞蛋對(duì)象上,使得其成為雞蛋對(duì)象的腳本組件之一。

        (3)生成雞蛋:SpawnerScript.cs

        雞蛋源源不斷的從屏幕上方落下,即是通過SpawnerScript.cs腳本來生成雞蛋,并且每隔0.3秒,雞蛋的生成速度會(huì)不斷的增加,主要代碼如下:

        void Update () {

        if (nextEggTime < Time.time)

        {

        SpawnEgg();

        nextEggTime = Time.time + spawnRate;

        spawnRate *= 0.98f; // 生成速度逐漸加快

        spawnRate = Mathf.Clamp(spawnRate, 0.3f, 99f);

        }}

        void SpawnEgg()

        {

        float addXPos = Random.Range(-1.6f, 1.6f); // 水平位置由隨機(jī)函數(shù)產(chǎn)生的數(shù)值來生成

        Vector3 spawnPos = transform.position + new Vector3(addXPos,0,0);

        Instantiate(eggPrefab, spawnPos, Quaternion.identity); // 初始化雞蛋

        }

        同樣將EggScript.cs拖至雞蛋對(duì)象上,也使得其成為雞蛋對(duì)象的腳本組件之一。

        (4)碰撞檢測(cè),計(jì)分:EggCollider.cs

        在木桶底部有一個(gè)球體對(duì)象,設(shè)置為碰撞器,來檢測(cè)雞蛋是否與其發(fā)生碰撞,或者說來判斷木桶是否接到了雞蛋,如果碰撞到則進(jìn)行計(jì)分,代碼主要部分如下:void Awake()

        void OnTriggerEnter(Collider theCollision) // 碰撞檢測(cè)

        {

        GameObject collisionGO = theCollision.gameObject;

        Destroy(collisionGO);

        myPlayerScript.theScore++;// 本游戲中碰撞的物體只可能是雞蛋,檢測(cè)到即銷毀雞蛋對(duì)象,同時(shí)計(jì)分

        }

        將EggCollider.cs拖至球體碰撞器對(duì)象上,也使得其成為碰撞器對(duì)象的腳本組件。

        5.發(fā)布游戲

        游戲代碼完成,測(cè)試無錯(cuò)后就可以發(fā)布成Android應(yīng)用程序了,選擇文件菜單>構(gòu)建設(shè)置,在彈出的對(duì)話框中可以看見我們的游戲可以發(fā)布到多個(gè)平臺(tái)上,這里我們選擇Android,如圖4所示:

        在發(fā)布設(shè)置中,設(shè)置游戲名稱、默認(rèn)圖標(biāo)、Android版本等基本信息,最后點(diǎn)擊構(gòu)建按鈕即可生成最終的Andoid打包文件,導(dǎo)入手機(jī)中就可以運(yùn)行了。

        四、結(jié)束語

        本文通過一個(gè)小游戲的制作過程,描述了Unity3D的基本界面、基本操作和使用Unity3D開發(fā)游戲的基本流程。Unity3D不但可以開發(fā)3D游戲還可以開發(fā)2D游戲和其他大型網(wǎng)絡(luò)在線游戲,同樣是畫面絢麗,效果出眾。

        做為一個(gè)成熟的游戲引擎和開發(fā)工具,Unity3D其開發(fā)能力毋庸置疑,隨著iOS,Android手機(jī)的大量普及和3D網(wǎng)頁游戲的興起,Unity3D因其強(qiáng)大的功能、良好的可移植性和易用性在手機(jī)游戲和網(wǎng)頁游戲平臺(tái)上必將得到了廣泛的使用和傳播。

        參考文獻(xiàn):

        [1]Ryan Henson Creighton.Unity 3D Game Development by[J].Example Beginners Guide,2010(9).

        [2]金璽曾.Unity 3D手機(jī)游戲開發(fā)[M].北京:清華大學(xué)出版社,2013.

        if (transform.position.y < -1 || transform.position.y >= 20) // 位置足夠低的時(shí)候銷毀對(duì)象

        {Destroy(gameObject);}}

        同樣將EggScript.cs拖至雞蛋對(duì)象上,使得其成為雞蛋對(duì)象的腳本組件之一。

        (3)生成雞蛋:SpawnerScript.cs

        雞蛋源源不斷的從屏幕上方落下,即是通過SpawnerScript.cs腳本來生成雞蛋,并且每隔0.3秒,雞蛋的生成速度會(huì)不斷的增加,主要代碼如下:

        void Update () {

        if (nextEggTime < Time.time)

        {

        SpawnEgg();

        nextEggTime = Time.time + spawnRate;

        spawnRate *= 0.98f; // 生成速度逐漸加快

        spawnRate = Mathf.Clamp(spawnRate, 0.3f, 99f);

        }}

        void SpawnEgg()

        {

        float addXPos = Random.Range(-1.6f, 1.6f); // 水平位置由隨機(jī)函數(shù)產(chǎn)生的數(shù)值來生成

        Vector3 spawnPos = transform.position + new Vector3(addXPos,0,0);

        Instantiate(eggPrefab, spawnPos, Quaternion.identity); // 初始化雞蛋

        }

        同樣將EggScript.cs拖至雞蛋對(duì)象上,也使得其成為雞蛋對(duì)象的腳本組件之一。

        (4)碰撞檢測(cè),計(jì)分:EggCollider.cs

        在木桶底部有一個(gè)球體對(duì)象,設(shè)置為碰撞器,來檢測(cè)雞蛋是否與其發(fā)生碰撞,或者說來判斷木桶是否接到了雞蛋,如果碰撞到則進(jìn)行計(jì)分,代碼主要部分如下:void Awake()

        void OnTriggerEnter(Collider theCollision) // 碰撞檢測(cè)

        {

        GameObject collisionGO = theCollision.gameObject;

        Destroy(collisionGO);

        myPlayerScript.theScore++;// 本游戲中碰撞的物體只可能是雞蛋,檢測(cè)到即銷毀雞蛋對(duì)象,同時(shí)計(jì)分

        }

        將EggCollider.cs拖至球體碰撞器對(duì)象上,也使得其成為碰撞器對(duì)象的腳本組件。

        5.發(fā)布游戲

        游戲代碼完成,測(cè)試無錯(cuò)后就可以發(fā)布成Android應(yīng)用程序了,選擇文件菜單>構(gòu)建設(shè)置,在彈出的對(duì)話框中可以看見我們的游戲可以發(fā)布到多個(gè)平臺(tái)上,這里我們選擇Android,如圖4所示:

        在發(fā)布設(shè)置中,設(shè)置游戲名稱、默認(rèn)圖標(biāo)、Android版本等基本信息,最后點(diǎn)擊構(gòu)建按鈕即可生成最終的Andoid打包文件,導(dǎo)入手機(jī)中就可以運(yùn)行了。

        四、結(jié)束語

        本文通過一個(gè)小游戲的制作過程,描述了Unity3D的基本界面、基本操作和使用Unity3D開發(fā)游戲的基本流程。Unity3D不但可以開發(fā)3D游戲還可以開發(fā)2D游戲和其他大型網(wǎng)絡(luò)在線游戲,同樣是畫面絢麗,效果出眾。

        做為一個(gè)成熟的游戲引擎和開發(fā)工具,Unity3D其開發(fā)能力毋庸置疑,隨著iOS,Android手機(jī)的大量普及和3D網(wǎng)頁游戲的興起,Unity3D因其強(qiáng)大的功能、良好的可移植性和易用性在手機(jī)游戲和網(wǎng)頁游戲平臺(tái)上必將得到了廣泛的使用和傳播。

        參考文獻(xiàn):

        [1]Ryan Henson Creighton.Unity 3D Game Development by[J].Example Beginners Guide,2010(9).

        [2]金璽曾.Unity 3D手機(jī)游戲開發(fā)[M].北京:清華大學(xué)出版社,2013.

        if (transform.position.y < -1 || transform.position.y >= 20) // 位置足夠低的時(shí)候銷毀對(duì)象

        {Destroy(gameObject);}}

        同樣將EggScript.cs拖至雞蛋對(duì)象上,使得其成為雞蛋對(duì)象的腳本組件之一。

        (3)生成雞蛋:SpawnerScript.cs

        雞蛋源源不斷的從屏幕上方落下,即是通過SpawnerScript.cs腳本來生成雞蛋,并且每隔0.3秒,雞蛋的生成速度會(huì)不斷的增加,主要代碼如下:

        void Update () {

        if (nextEggTime < Time.time)

        {

        SpawnEgg();

        nextEggTime = Time.time + spawnRate;

        spawnRate *= 0.98f; // 生成速度逐漸加快

        spawnRate = Mathf.Clamp(spawnRate, 0.3f, 99f);

        }}

        void SpawnEgg()

        {

        float addXPos = Random.Range(-1.6f, 1.6f); // 水平位置由隨機(jī)函數(shù)產(chǎn)生的數(shù)值來生成

        Vector3 spawnPos = transform.position + new Vector3(addXPos,0,0);

        Instantiate(eggPrefab, spawnPos, Quaternion.identity); // 初始化雞蛋

        }

        同樣將EggScript.cs拖至雞蛋對(duì)象上,也使得其成為雞蛋對(duì)象的腳本組件之一。

        (4)碰撞檢測(cè),計(jì)分:EggCollider.cs

        在木桶底部有一個(gè)球體對(duì)象,設(shè)置為碰撞器,來檢測(cè)雞蛋是否與其發(fā)生碰撞,或者說來判斷木桶是否接到了雞蛋,如果碰撞到則進(jìn)行計(jì)分,代碼主要部分如下:void Awake()

        void OnTriggerEnter(Collider theCollision) // 碰撞檢測(cè)

        {

        GameObject collisionGO = theCollision.gameObject;

        Destroy(collisionGO);

        myPlayerScript.theScore++;// 本游戲中碰撞的物體只可能是雞蛋,檢測(cè)到即銷毀雞蛋對(duì)象,同時(shí)計(jì)分

        }

        將EggCollider.cs拖至球體碰撞器對(duì)象上,也使得其成為碰撞器對(duì)象的腳本組件。

        5.發(fā)布游戲

        游戲代碼完成,測(cè)試無錯(cuò)后就可以發(fā)布成Android應(yīng)用程序了,選擇文件菜單>構(gòu)建設(shè)置,在彈出的對(duì)話框中可以看見我們的游戲可以發(fā)布到多個(gè)平臺(tái)上,這里我們選擇Android,如圖4所示:

        在發(fā)布設(shè)置中,設(shè)置游戲名稱、默認(rèn)圖標(biāo)、Android版本等基本信息,最后點(diǎn)擊構(gòu)建按鈕即可生成最終的Andoid打包文件,導(dǎo)入手機(jī)中就可以運(yùn)行了。

        四、結(jié)束語

        本文通過一個(gè)小游戲的制作過程,描述了Unity3D的基本界面、基本操作和使用Unity3D開發(fā)游戲的基本流程。Unity3D不但可以開發(fā)3D游戲還可以開發(fā)2D游戲和其他大型網(wǎng)絡(luò)在線游戲,同樣是畫面絢麗,效果出眾。

        做為一個(gè)成熟的游戲引擎和開發(fā)工具,Unity3D其開發(fā)能力毋庸置疑,隨著iOS,Android手機(jī)的大量普及和3D網(wǎng)頁游戲的興起,Unity3D因其強(qiáng)大的功能、良好的可移植性和易用性在手機(jī)游戲和網(wǎng)頁游戲平臺(tái)上必將得到了廣泛的使用和傳播。

        參考文獻(xiàn):

        [1]Ryan Henson Creighton.Unity 3D Game Development by[J].Example Beginners Guide,2010(9).

        [2]金璽曾.Unity 3D手機(jī)游戲開發(fā)[M].北京:清華大學(xué)出版社,2013.

        秋霞鲁丝片av无码| 国产成人精品午夜视频| 高清精品一区二区三区| 蜜桃久久精品成人无码av| 成人免费看www网址入口| 中日av乱码一区二区三区乱码| 欧美群妇大交群| 色欲av伊人久久大香线蕉影院| 日韩亚洲无吗av一区二区| 成人免费自拍视频在线观看| 亚洲第一狼人天堂网亚洲av| 亚洲av无码乱码国产精品| 无遮无挡爽爽免费视频| 一级免费毛片| 日韩电影一区二区三区| 一级毛片60分钟在线播放| 成人永久福利在线观看不卡| 久草精品手机视频在线观看| 蜜桃视频一区二区三区| 成人在线观看av毛片| 久久精品国产99国产精品澳门| 最近更新中文字幕一区二区| 插上翅膀插上科学的翅膀飞| 国产aⅴ无码专区亚洲av麻豆| 久久久久亚洲精品无码网址蜜桃| 亚洲性爱视频| 成 人 网 站 免 费 av| 亚洲综合色区无码专区| 亚洲伊人免费综合网站| 二区视频在线免费观看| 亚洲综合成人婷婷五月网址| 国产丝袜在线精品丝袜| 99热这里只有精品国产99热门精品| 欧美午夜精品久久久久久浪潮| 国产爆乳乱码女大生Av| 香蕉久久夜色精品国产| 国产毛片精品一区二区色| 亚洲国产性夜夜综合另类| 亚洲欧美一区二区成人片| 无码毛片aaa在线| 精品无码一区二区三区小说|