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

?

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

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

林 劍,張 帥,伍傳敏

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

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

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

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

在游戲開(kāi)發(fā)過(guò)程中經(jīng)常需要獲得用戶的輸入過(guò)程如觸控動(dòng)作相關(guān)的各個(gè)參數(shù),按鍵的情況等。Unity3D在設(shè)計(jì)平臺(tái)時(shí)專門提供了兩個(gè)輸入對(duì)象:Touch和Input對(duì)象。通過(guò)這兩個(gè)對(duì)象可以方便地獲取用戶輸入的各個(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方法可以方便的獲取用戶輸入的各種參數(shù),用于記錄一個(gè)手指觸摸在屏幕上的狀態(tài),變量說(shuō)明如表1。

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

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

1.2 Joystick事件處理類

Joystick類是一個(gè)專門處理虛擬搖桿事件的類,內(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ī)觸屏類游戲關(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ì)話框顯示導(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)致依賴于此的所有細(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類獲取主角和場(chǎng)景模型的位置信息,通過(guò)計(jì)算它們之間的距離來(lái)判斷該模型是否應(yīng)該被渲染出來(lái)。這樣手機(jī)就只需要渲染出離主角近的模型而不必將場(chǎng)景中所有的模型都渲染出來(lái)。提高了游戲運(yùn)行的流暢度。RenderSwitch類算法如下:

2.3 人工智能技術(shù)

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

表3 Unity3D中關(guān)于AI設(shè)計(jì)中常用類

當(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è)類可以很好地將敵人以time.deltatime*speed的速度向當(dāng)前目標(biāo)平滑旋轉(zhuǎn)追擊。

當(dāng)距離大于某個(gè)值時(shí),則判定玩家不在自己周圍,從而進(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類負(fù)責(zé)對(duì)模型動(dòng)畫(huà)剪輯進(jìn)行播放,組合和混合的所有功能,它從Behavior類派生而來(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à)名稱”].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格式完成觸屏類手機(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)了觸屏類手機(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ī)構(gòu)的急回程度分析與探討*
觸屏玻璃的數(shù)控成型磨削工藝研究與設(shè)計(jì)
曲柄與搖桿擺角的關(guān)系
基于ANSYS的曲柄搖桿機(jī)構(gòu)的仿真分析及優(yōu)化設(shè)計(jì)
觸屏學(xué)習(xí)是孩子的生活常態(tài)
觸屏
讓手機(jī)游戲成為傳統(tǒng)文化的傳播新渠道
手機(jī)游戲?qū)Υ髮W(xué)生的負(fù)面影響及對(duì)策分析
曲柄搖桿行星系取苗機(jī)構(gòu)參數(shù)匹配與優(yōu)化
全手掌觸屏手套