• 
    

    
    

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

      ?

      基于Unity3D的手機(jī)觸屏類(lèi)游戲關(guān)鍵技術(shù)研究與實(shí)現(xiàn)

      2014-10-23 07:48:12伍傳敏
      三明學(xué)院學(xué)報(bào) 2014年2期
      關(guān)鍵詞:觸屏搖桿手機(jī)游戲

      林 劍,張 帥,伍傳敏

      (三明學(xué)院 信息工程學(xué)院,福建 三明,365004)

      基于目前高端智能手機(jī)的發(fā)展,觸屏手機(jī)游戲作為下一代游戲產(chǎn)業(yè)鏈中的新亮點(diǎn),逐漸成為各大手機(jī)制造廠(chǎng)商及動(dòng)漫游戲公司相互競(jìng)爭(zhēng)的焦點(diǎn)[1-3]。據(jù)調(diào)查,目前大眾最為喜歡的觸屏手機(jī)游戲主要有:切水果、捕魚(yú)達(dá)人、植物大戰(zhàn)僵尸、跑酷、天天愛(ài)消除、極品飛車(chē)、鱷魚(yú)愛(ài)洗澡等[4]。這些游戲的超高人氣主要來(lái)自游戲容易上手、玩法的趣味性、場(chǎng)景的逼真性及和諧人機(jī)交互性等優(yōu)勢(shì)。因此在手機(jī)游戲的設(shè)計(jì)方面,首先要考慮良好的人機(jī)交互性,如玩家能夠輕易地退出游戲,并能夠在他們離開(kāi)的地方繼續(xù)游戲;其次是游戲畫(huà)面的逼真性及流暢性,并保證控制要直觀(guān)、易于掌握;最后是恰當(dāng)?shù)娜斯ぶ悄?,并要求游戲故事情?jié)簡(jiǎn)單,目標(biāo)明確,并保證手指與屏幕上手柄的完美匹配。

      本文結(jié)合三維建模軟件Maya進(jìn)行游戲場(chǎng)景中角色、道具等物品建模,利用Unity3D游戲引擎迅速高效地創(chuàng)建對(duì)象、導(dǎo)入外部資源,基于Unity3D觸屏事件處理機(jī)制,研究快速完成自定義地形場(chǎng)景、模型動(dòng)態(tài)顯示及人工智能等關(guān)鍵技術(shù),并進(jìn)行APK文件的發(fā)布,最終完成了Android觸屏類(lèi)手機(jī)游戲的開(kāi)發(fā)。

      1 Unity3D觸屏事件處理機(jī)制

      1.1 輸入對(duì)象類(lèi)中Touch方法

      在游戲開(kāi)發(fā)過(guò)程中經(jīng)常需要獲得用戶(hù)的輸入過(guò)程如觸控動(dòng)作相關(guān)的各個(gè)參數(shù),按鍵的情況等。Unity3D在設(shè)計(jì)平臺(tái)時(shí)專(zhuān)門(mén)提供了兩個(gè)輸入對(duì)象:Touch和Input對(duì)象。通過(guò)這兩個(gè)對(duì)象可以方便地獲取用戶(hù)輸入的各個(gè)參數(shù),包括觸控的位置、按下移動(dòng)的位置、是哪個(gè)鍵等。

      現(xiàn)今流行的Android平臺(tái)和IPhone平臺(tái)都是基于屏幕觸控的,因此Touch輸入對(duì)象是開(kāi)發(fā)過(guò)程中經(jīng)常遇到的問(wèn)題,也是較難解決的問(wèn)題。Touch方法可以方便的獲取用戶(hù)輸入的各種參數(shù),用于記錄一個(gè)手指觸摸在屏幕上的狀態(tài),變量說(shuō)明如表1。

      表1 Touch方法的變量說(shuō)明

      只有各個(gè)變量相互配合才能完成觸屏游戲中物體的交互控制,具體交互方法如下:

      1.2 Joystick事件處理類(lèi)

      Joystick類(lèi)是一個(gè)專(zhuān)門(mén)處理虛擬搖桿事件的類(lèi),內(nèi)置StartGame函數(shù)(用于設(shè)置虛擬搖桿的貼圖屬性及初始位置),ResetJoystick函數(shù)(用于重置搖桿所有數(shù)據(jù)信息,當(dāng)手指離開(kāi)觸摸屏后,會(huì)重置搖桿的所有數(shù)據(jù))。Unity3D內(nèi)置Update函數(shù)作為每幀都執(zhí)行的函數(shù),用來(lái)監(jiān)聽(tīng)玩家是否有觸屏操作,并進(jìn)行相應(yīng)的處理。在實(shí)際應(yīng)用中應(yīng)先創(chuàng)建一個(gè)Joystick對(duì)象并初始化:

      然后在Update函數(shù)中監(jiān)聽(tīng)搖桿的位置信息:

      其中l(wèi)eftx得到的數(shù)據(jù)是虛擬搖桿在x軸的位置偏離了初始位置的距離,向左偏離為負(fù)值,向右偏離為正值。Lefty得到的數(shù)據(jù)同理。這樣就可以非常方便的得到玩家操作虛擬搖桿的數(shù)據(jù)信息。

      2 手機(jī)觸屏類(lèi)游戲關(guān)鍵技術(shù)研究

      2.1 自定義游戲地形

      編輯Unity中的地形有3種方法:第一是利用三維建模軟件(3DMax,Maya等)建模形成一個(gè)游戲世界的完整3D模型后導(dǎo)入;第二是使用Unity3D自帶的筆刷工具動(dòng)態(tài)的在地形表面繪制山峰和谷底;第三種方法是導(dǎo)入預(yù)先渲染好的灰度圖。雖然使用3D軟件搭建的游戲環(huán)境能夠一次性導(dǎo)入并確保所有物品都彼此匹配并精確定位。但是使用Unity3D自帶的地形引擎可以高效快速地模擬接近自然的東西或是現(xiàn)實(shí)世界中的大陸,并占用移動(dòng)終端較少的內(nèi)存資源。

      基本上一幅灰度圖就是一幅高度圖,它使用2D圖像來(lái)表示3D的高度變化,采用較暗的灰黑色來(lái)表示較低的高度,用較亮的灰白色來(lái)表示較高的高度。導(dǎo)入的灰度圖必須是RAW格式。一旦有了灰度圖,就可以將它導(dǎo)入了,Unity會(huì)彈出一個(gè)對(duì)話(huà)框顯示導(dǎo)入選項(xiàng),見(jiàn)表2。

      表2 導(dǎo)入高度圖選項(xiàng)設(shè)置

      值得注意的是,在對(duì)地形高度進(jìn)行編輯后,還可以地形設(shè)置選項(xiàng)中修改細(xì)節(jié)分辨率(detail resolution)和貼圖分辨率(base texture resolution),但開(kāi)始制作后,再修改這些選項(xiàng),會(huì)帶來(lái)巨大的問(wèn)題。即修改任何的分辨率數(shù)據(jù)會(huì)導(dǎo)致依賴(lài)于此的所有細(xì)節(jié)信息全部被刪除掉。

      2.2 模型動(dòng)態(tài)顯示技術(shù)

      手機(jī)由于硬件的限制,如果一次性將所有的場(chǎng)景模型全部加載容易造成“卡機(jī)”的現(xiàn)象。為了提高內(nèi)存的使用效率,并快速完成所需要模型的加載,需要使用模型的動(dòng)態(tài)顯示技術(shù)。通過(guò)編寫(xiě)RenderSwitch類(lèi)獲取主角和場(chǎng)景模型的位置信息,通過(guò)計(jì)算它們之間的距離來(lái)判斷該模型是否應(yīng)該被渲染出來(lái)。這樣手機(jī)就只需要渲染出離主角近的模型而不必將場(chǎng)景中所有的模型都渲染出來(lái)。提高了游戲運(yùn)行的流暢度。RenderSwitch類(lèi)算法如下:

      2.3 人工智能技術(shù)

      一款游戲的好玩與否很大程度上取決于敵人的人工智能,在此主要闡述觸屏類(lèi)游戲AI中經(jīng)常用到的自動(dòng)巡邏算法和自動(dòng)追蹤算法。為了使不同的角色擁有不同的人工智能,會(huì)涉及到Unity3D中一些重要常用的類(lèi),具體如下表3。

      表3 Unity3D中關(guān)于A(yíng)I設(shè)計(jì)中常用類(lèi)

      當(dāng)然,不同的游戲有著不同的敵人,其人工智能也不盡相同,本文主要實(shí)現(xiàn)當(dāng)敵人看到玩家時(shí)自動(dòng)追擊,否則自動(dòng)巡邏的敵人智能實(shí)現(xiàn)。

      首先應(yīng)該計(jì)算出敵人與玩家之間的距離。通過(guò)距離判斷敵人當(dāng)前應(yīng)該進(jìn)行什么動(dòng)作。如果距離小于某個(gè)值,則判定玩家進(jìn)入視野,對(duì)玩家進(jìn)行追擊。追擊的部分代碼如下:

      transform.rotation=Quaternion.Slerp(transform.rotation,Quaternion.LookRotation(PlayerTarget.transform.position-transform.position),Time.deltaTime*speed);

      其中,Quaternion四元數(shù)這個(gè)類(lèi)可以很好地將敵人以time.deltatime*speed的速度向當(dāng)前目標(biāo)平滑旋轉(zhuǎn)追擊。

      當(dāng)距離大于某個(gè)值時(shí),則判定玩家不在自己周?chē)?,從而進(jìn)入自動(dòng)巡邏狀態(tài)。將以上腳本賦予敵人后,敵人就能夠在“看見(jiàn)”玩家的時(shí)候自動(dòng)追擊,否則每隔幾秒巡邏一個(gè)特定的區(qū)域。自動(dòng)巡邏部分算法如下:

      3 游戲?qū)崿F(xiàn)

      3.1 模型動(dòng)畫(huà)鏈接與控制

      Unity的動(dòng)畫(huà)API非常強(qiáng)大和全面,它還包含集成了動(dòng)畫(huà)編輯器。其中Animation類(lèi)負(fù)責(zé)對(duì)模型動(dòng)畫(huà)剪輯進(jìn)行播放,組合和混合的所有功能,它從Behavior類(lèi)派生而來(lái),因此包含我們??吹降囊恍┖瘮?shù),變量。在Unity中一個(gè)給定游戲?qū)ο笊纤锌梢允褂玫膭?dòng)畫(huà)都會(huì)被賦予一個(gè)圖層,默認(rèn)為0,優(yōu)先級(jí)高的圖層能夠覆蓋低優(yōu)先級(jí)圖層的動(dòng)畫(huà)。

      通常一個(gè)角色都會(huì)有一個(gè)空閑動(dòng)畫(huà),它會(huì)在玩家沒(méi)做任何事情時(shí)播放,同時(shí)可能也會(huì)有奔跑和攻擊動(dòng)畫(huà),一個(gè)良好的圖層順序是空閑動(dòng)畫(huà)位于圖層0,奔跑動(dòng)畫(huà)位于圖層5,攻擊動(dòng)畫(huà)位于圖層10,這樣一來(lái)玩家如果進(jìn)行攻擊,攻擊動(dòng)畫(huà)的優(yōu)先級(jí)就會(huì)比奔跑動(dòng)畫(huà)高,同時(shí)也會(huì)阻止空閑動(dòng)畫(huà)的播放企圖。

      要設(shè)置圖層順序,需要在動(dòng)畫(huà)腳本開(kāi)始出初始化這段動(dòng)畫(huà),方法如下:

      annimation[“此處為要設(shè)置的動(dòng)畫(huà)名稱(chēng)”].layer=10;

      一般情況下,一個(gè)良好的圖層次序會(huì)將空閑動(dòng)畫(huà)置為0,將彈跳動(dòng)畫(huà)置為5,攻擊動(dòng)畫(huà)置為10,這樣如果玩家進(jìn)行攻擊,攻擊動(dòng)畫(huà)的優(yōu)先級(jí)會(huì)比基本的奔跑動(dòng)畫(huà)高,它會(huì)覆蓋對(duì)彈跳和空閑動(dòng)畫(huà)的任何播放企圖。

      3.2 APK文件發(fā)布

      在Unity3D中完成游戲設(shè)計(jì)后,需要導(dǎo)出APK格式完成觸屏類(lèi)手機(jī)游戲的發(fā)布。本文以Android手機(jī)為例進(jìn)行說(shuō)明。具體如下:

      首先配置JDK和SDK環(huán)境,將下載好的JDK文件安裝在C:Program FilesJava路徑下。安裝完畢后,設(shè)置環(huán)境變量為:

      PATH=C:Program?FilesJavajdk1.7.0_40in

      CLASSPATH=C:ProgramFilesJavajdk1.7.0_40libdt.jar;C:ProgramFilesJavajdk1.7.0_40\lib ools.jar;

      JAVA_HOME=C:Program FilesJavajdk1.7.0_40

      然后將解壓好的SDK文件放在D盤(pán)根目錄下,并在path環(huán)境變量中添加

      D:adt-bundle-windows-x86sdk ools;D:adt-bundle-windows-x86sdkplatform-tools;

      最后在Unity3D中打開(kāi)Unity Preference,設(shè)置好android sdk目錄為D:adt-bundle-windowsx86,打開(kāi)File>Build settings,選擇平臺(tái)為Android,完成APK文件的發(fā)布。具體游戲?qū)崿F(xiàn)如圖1~圖2。

      圖1 游戲開(kāi)機(jī)界面

      圖2 游戲運(yùn)行畫(huà)面

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

      結(jié)合Unity3D游戲引擎實(shí)現(xiàn)了觸屏類(lèi)手機(jī)游戲的應(yīng)用實(shí)現(xiàn),討論了快速完成自定義地形場(chǎng)景、模型動(dòng)態(tài)顯示及人工智能等關(guān)鍵技術(shù),設(shè)計(jì)了模型間的鏈接與控制,最后完成APK文件的發(fā)布,提出了行之有效的技術(shù)措施,具有一定的應(yīng)用價(jià)值。

      [1]WANG S, MAO Z, ZENG C, et al.A new method of virtual reality based on Unity3D[C]//Geoinformatics, 2010 18th International Conference on IEEE, 2010: 1-5.

      [2]CREIGHTON R H.Unity 3D game development by example: Beginner's guide[M].[s.l.]Packt Publishing, 2010.

      [3]INDRAPRASTHA A, SHINOZAKI M.The investigation on using Unity3D game engine in urban design study[J].ITB Journal of Information and Communication Technology, 2009,3 (1):1-18.

      [4]JIE J, YANG K, HAIHUI S.Research on the 3D game scene optimization of mobile phone based on the Unity 3D engine[C]//Computational and Information Sciences(ICCIS), 2011 International Conference on IEEE, 2011: 875-877.

      [5]PENG Q I,LINA Y U,JING W.The research and application of products virtual exhibition technology base on unity 3D[J].Digital Technology and Application, 2010(9):1314-1318.

      [6]LABSCHTZ M, KRSL K, AQUINO M, et al.Content creation for a 3D game with Maya and Unity 3D[J].Institute of Computer Graphics and Algorithms, Vienna University of Technology, 2011.

      [7]陳洪,馬欽,朱德海.基于 unity3d的交互式虛擬農(nóng)業(yè)仿真平臺(tái)研究[J].農(nóng)機(jī)化研究,2012(3):49.

      猜你喜歡
      觸屏搖桿手機(jī)游戲
      街機(jī)、格斗游戲更暢爽
      曲柄搖桿機(jī)構(gòu)的急回程度分析與探討*
      觸屏玻璃的數(shù)控成型磨削工藝研究與設(shè)計(jì)
      曲柄與搖桿擺角的關(guān)系
      讓手機(jī)游戲成為傳統(tǒng)文化的傳播新渠道
      手機(jī)游戲?qū)Υ髮W(xué)生的負(fù)面影響及對(duì)策分析
      曲柄搖桿行星系取苗機(jī)構(gòu)參數(shù)匹配與優(yōu)化
      全手掌觸屏手套
      在干什么
      第三季度臺(tái)灣地區(qū)觸屏筆記本市場(chǎng)份額將增至40%
      投資與合作(2013年7期)2013-04-29 00:04:12
      孟津县| 宁蒗| 谷城县| 都昌县| 柳林县| 北票市| 秭归县| 固阳县| 玛沁县| 宁波市| 军事| 平定县| 大方县| 义马市| 乌拉特前旗| 昌江| 文昌市| 买车| 鹤山市| 台山市| 茂名市| 乌鲁木齐县| 枞阳县| 上高县| 分宜县| 阿图什市| 伊金霍洛旗| 诸城市| 巫溪县| 铁力市| 定襄县| 盘山县| 离岛区| 油尖旺区| 炉霍县| 杭锦旗| 大英县| 华容县| 石河子市| 黑河市| 浦北县|