999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Unity3D的手機游戲開發

2017-03-06 20:14:26陳雪梅
電子技術與軟件工程 2016年23期

摘 要

介紹了一款基于unity開發的輕量級手機游戲開發過程,探討在Unity3D平臺下完成游戲關卡,場景以及功能模塊的設計過程,提出實現Unity3D手機游戲開發采用的核心技術及核心代碼,可供開發人員提供解決游戲開發問題的思路。

【關鍵詞】Unity3d Vector 手機游戲

1 引言

Unity3d是由Unity Technologies 公司開發的跨平臺專業游戲引擎,是如今市場上一款全面整合的專業游戲引擎,軟件其編輯器可運行在Windows 和Mac OS X雙系統下,利用其所開發的游戲可發布至Windows、Mac、Wii、iphone、Windows phone 8和Android平臺。Unity游戲引擎作為一款跨平臺的游戲開發工具,其具有開發快速,易上手,跨平臺發布,可擴展性強等特點。這里論述開發了一款3D格斗類手機游戲的過程,著重解決了屏幕自適應,屏幕滑動模式,美術資源管理,手柄控制,角色動畫狀態機,敵人AI交互設計,動態數據讀取刷新,攻擊技能成長系統設計,場景七大攻擊技能釋放與控制,單機副本以及廂房挑戰關卡設計與實現等一系列問題,對其它類型的游戲開發具有一定的借鑒與學習參考的意義。

2 手機游戲開發關鍵技術

基于Unity的手機游戲開發,手機游戲主要包含主屏幕滑屏,界面刷新,技能成長系統,虛擬桿控制,場景技能釋放,怪物AI設計等多大功能模塊設計,實現并開發游戲,設計主要的關鍵技術及過程有:

(1)通過數值計算,設計屏幕自適應技術。

(2)初步研究實現PC端和手機端的觸屏控制,通過Touch類和Input類設計實現在不同平臺的“十字架”滑屏技術。

(3)通過把二維空間向量轉三維空間向量的方法,實現游戲手柄的功能控制技術。

(4)使用Mecanim動畫系統設計玩家的移動狀態機,結合狀態機設計手機手柄控制玩家移動技術。

(5)設計玩家七大攻擊技能模塊的成長技能系統,配置游戲道具數據創建XML表,讀取XML表信息使用字典來刷新統一管理游戲數據技術。

(6)完成UI界面設計排版,打包做成預制件,控制游戲界面的加載和銷毀技術。

(7)設計實現三類敵人AI(蜘蛛,機器人,大boss)人工智能,使用大量的射線碰撞檢測,向量(例如點乘,叉乘)知識完成交互式攻擊技術。

(8)實例化各類技能(火系,水系,千里眼,螺旋轉,保護,法寶,瞬移),通過協程,視線追逐算法控制技能的移動方式以及攻擊方式技術。

(9)完成游戲的C#腳本的邏輯算法實現,內容涉及到游戲玩法,關卡邏輯,數據刷新,怪物的人工智能。

3 手機游戲客戶端的設計與實現過程

3.1 手機滑屏控制模式的實現

實現在PC端與手機端的滑屏效果,通過屏幕上下左右中間的虛擬十字架的坐標,控制移動和定位相機位置,屏幕滑動的運動方式分為兩部分:

(1)手指(鼠標)拖動相機帶動屏幕移動。

(2)當移動的距離超過一定距離時候同時釋放手指(鼠標)相機將會自動彈簧式的移動到定位目的地,實現了上下左右滑動屏幕。手機上下左右滑動屏幕可以攝像機照射的位置彈簧式的移動到指定位置。

算法分析

//當鼠標按下的時候

if(input.GetMouseButtonDown)

//記錄手指按下的位置

posDown = input.GetMouseButtonDown

//當鼠標按住的時候

if(input.GetMouseButton)

//判斷是水平滑動還是左右滑動 , System.Math.Abs()獲取絕對值;

xValue = System.Math.Abs(input.MousePosition.x–posDown.x)

Value = System.Math.Abs(input.MousePosition.y–posDown.y)

//左右移動的值大于上下移動的值

if(xValue>yValue)

//左右水平滑動,固定射線機位置的垂直分量的值

//左右移動的值小于上下移動的值

elseif(xValue

//上下垂直滑動,固定射線機位置的水平分量的值

//鼠標抬起時刻

if(input.GetMouseButtonUp)

//判斷鼠標滑動的值,有沒有超過的滑動sliderValue

if(xValue>sliderValue)

//使射線機移動指定位置

else

//滑動值太小,使攝像機移動起始位置

3.2 游戲虛擬桿控制的實現

通過繼承NGUI中Drawdropitem類實現鼠標和手指可拖動圓球狀態。根據虛擬桿的大小,設計限制虛擬桿的移動圓球移動范圍離中心點的距離小于100,當距離大于100時,限制距離為100。接著中心圓球的位置到虛擬桿中心位置的向量方向控制玩家角色的移動方向,緊接著根據中心可移動圓球離虛擬桿中心位置的距離長度控制玩家角色的移動速度,整個二維平面的虛擬桿360度旋轉移動,映射到玩家在三維空間的移動。最后根據鼠標和手指的狀態控制中心圓球的初始狀態,當鼠標和手指離開時候,中心圓球將會重新回歸虛擬桿的中心位置,此時玩家將處于休閑不移動的狀態,當鼠標或者手指拖動中心圓球時候,將啟動控制玩家角色的移動狀態。

算法分析

//拖動小球,限制可拖動最大距離 //繼承NGUI的DrawDropItem類可實現拖動一個UI控件(小球) //記錄小球的位置//使用input.MousePositon記錄小球位置posBall//計算小球到底盤的向量,記錄向量方向和大小。

vec = posBall–posOriginal;//記錄的方向映射到三維空間(x,y)平面上,360度控制角色的方向

Vector3 playerPos = new Vector3();

playerPos = Player.GetCompoent().localPosition; playerPos.forward = vec.normarlized;//記錄的向量大小控制角色移動速度 float speedRate = Vector3.distance(vec);

3.3 游戲敵人AI功能的實現

蜘蛛的人工智能控制是由Unity中物體的觸碰器觸發,每個蜘蛛都有一個立方體觸碰器,玩家如果進入這個范圍,將由OnColliderEnter()觸發進入函數,蜘蛛將進入攻擊狀態,采取視線追逐算法調整蜘蛛的朝向和移動,當距離玩家到一定距離的時候就會釋放攻擊技能。相反,如果玩家不在攻擊范圍,或者逃離到攻擊范圍之外,將由OnColliderExit()觸發離開函數,此時蜘蛛將回歸到休閑巡邏狀態。

機器人AI是比蜘蛛更具智能,機器人具有巡邏狀態,只不過加入了模糊概率算法,提高了不確定性,增加了機器人的智能的真實性。機器人將在一個圓圈范圍巡邏,變走變看周圍環境的變化,判斷是否有玩家進入攻擊范圍。當玩家進入攻擊范圍,且玩家是在機器人的視線前方,此時機器人將采取開槍的技能。當玩家進入攻擊范圍,但玩家在機器人的視線后方,此時判斷玩家與機器人之間的距離,如果足夠近的話,機器人將會發現玩家采取掉頭攻擊,如果距離比較遠,那么玩家不會被機器人發現可以蒙混過關。

3.4 游戲動畫系統技術分析

unity引擎有自帶的動畫系統,Mecanim動畫系統,通過狀態機來控制角色的移動。邏輯及算法分析:

//當虛擬桿啟動時,角色開啟移動動畫狀態

//獲取1.4.3的vec方向和大小,賦值給玩家

Vector3 playerPos = new Vector3();

playerPos = Player.GetCompoent().localPosition;

playerPos.forward = vec.normarlized; playerAni.SetBool(runBool,true); playerAni.SetFloat(speedFloat,speedRate);//當虛擬桿關閉時,角色動畫恢復休閑狀態

Animator playerAni = player.getcomponent();

playerAni.SetBool(idleBool,true);

//當點擊釋放技能時,動畫狀態跳轉到釋放技能狀態的動畫

playerAni.SetBool(skillBool,true);

3.5 游戲物理引擎射線技術分析

射線檢測主要是從某個物體(攝像機),發出一條射線,然后進行判斷射線是否碰撞到指定物體,然后在相對于的接口函數編寫出相應的反應事件,算法分析:

//定義一條從攝像機發射到鼠標點擊位置的射線

Ray ray = Camera.ScreenPointToRay(Input.MousePosition); //使用RaycastHit hit來存儲碰撞物體信息 //如果發出射線碰撞成功 if(Physics.RayCast(Ray,outhit))

3.6 游戲技能釋放分析

3.6.1 火系技能

實例化出來的位置是處于敵人的上方,利用協程IEnumerator的程序知識控制其實例化出來的順序,前后一共實例化八個火炮,當其被實例化出來的時候,火炮將自動尋找靠近玩家的敵人進行攻擊,采取的攻擊方式是視線追逐。

3.6.2 水系技能

實例化的位置比較講究,因為其方向和位置總要面向敵人,所以其實例化的位置應該處于玩家的上方,而且四個水系技能炮所處的平面是與玩家和敵人的直線垂直,實例化之前需要先計算從敵人到玩家的方向向量的垂直向量,得出垂直的單位向量后再乘以距離大小,得出火系技能的左右距離,最后加上向上的方向向量的距離就可以得出實例化位置,實例化出來將采取視線追逐的方式對敵人進行追擊。

3.6.3 瞬移技能

在釋放技能的時候,玩家將會向前方發射一條被規定好距離的射線來確定前方是否有物體,射線進行碰撞檢測,當有碰撞到物體的時,瞬移技能無法釋放,當射線檢測不到有物體的時候,玩家可以向前瞬間移動,移動方法是累加玩家自身的Forward向量。

3.6.4 千里眼技能

玩家一共有三種狀態,正常的狀態,千里眼狀態,保護狀態,啟動此狀態時候,只需要切換玩家的狀態到千里眼的狀態,然后改變手柄的控制,此時手柄的控制將會發生改變,第一控制的對象由玩家到攝像機,移動范圍由一個圓圈范圍到一個圓環范圍,也就是手柄的中心圓球其移動的是50到100的可移動范圍。而當啟動千里眼狀態時,游戲界面將會增加一個控制攝像機前后左右移動的界面。玩家可以變旋轉攝像機邊移動攝像機的位置。

3.7 游戲數據配置與刷新的實現

游戲數據存儲在XML表中,而數據的提取刷新也是在XML表中進行的,而提取出來的一條Item數據將被存儲在Dictionary字典里面,根據鍵對值的方式進行讀取和存儲數據,從而刷新游戲數據。

4 結束語

本文著重介紹了基于unity開發的輕量級手機游戲包含主屏幕滑屏,界面刷新,技能成長系統,虛擬桿控制,場景技能釋放,怪物AI設計等多大功能模塊設計及采用的開發技術算法分析,研究在Unity3D平臺下完成游戲關卡,場景以及功能模塊的設計過程,提出實現Unity3D手機游戲開發采用的核心技術及核心代碼,以供游戲開發技術人員提供解決游戲開發問題的一種新思路。

參考文獻

[1]游戲核心算法編程內幕[M].北京希望電子出版社,2005.

[2]游戲發展現狀分析報告:86訊息網.

[3]SIKI Unity教程:泰課網.

[4]蠻牛游戲論壇:游戲蠻牛.

作者簡介

陳雪梅(1978-),女,廣東省人,碩士學位。研究方向為計算機程序設計、移動開發、數據庫設計。

作者單位

廣東技術師范學院 廣東省廣州市 510310

主站蜘蛛池模板: 亚洲无线国产观看| 欧美日韩中文字幕在线| 无码国产偷倩在线播放老年人| 18禁高潮出水呻吟娇喘蜜芽| 国产午夜福利在线小视频| 久久精品国产精品青草app| 天堂中文在线资源| 欧美视频二区| 欧美成人综合视频| 九九久久精品国产av片囯产区| 欧美一级高清视频在线播放| 亚洲成人手机在线| 四虎国产成人免费观看| 精品综合久久久久久97| 久久视精品| 国产精品女主播| 国产精品中文免费福利| 免费一级全黄少妇性色生活片| 国产农村精品一级毛片视频| 凹凸精品免费精品视频| 永久免费无码日韩视频| 91在线视频福利| 国产精品永久久久久| 日本精品αv中文字幕| 2020最新国产精品视频| 国产美女91视频| 欧美日韩福利| 亚洲欧美综合精品久久成人网| 国产成人无码播放| 亚洲国产天堂久久综合226114| 九色视频线上播放| www.91在线播放| 热思思久久免费视频| 欧美 国产 人人视频| 亚洲v日韩v欧美在线观看| 亚洲三级片在线看| 亚洲精品在线影院| 欧美激情视频在线观看一区| 亚洲成a∧人片在线观看无码| 色综合日本| 国产激情无码一区二区APP| 91综合色区亚洲熟妇p| 亚洲欧美精品日韩欧美| 免费在线视频a| 久久精品中文字幕少妇| 精品国产99久久| 波多野结衣中文字幕一区| 看你懂的巨臀中文字幕一区二区 | 久草青青在线视频| 天天色综网| 就去色综合| 日本欧美精品| 国内a级毛片| 亚洲日韩国产精品无码专区| 黄色片中文字幕| 欧美在线一级片| 国产高清毛片| 亚洲欧美在线综合图区| 免费国产高清精品一区在线| 国产91视频免费观看| 国产激爽大片高清在线观看| 无码一区中文字幕| 人禽伦免费交视频网页播放| 91小视频在线| 成人久久精品一区二区三区| 三上悠亚在线精品二区| 亚洲精品图区| 国产精品私拍99pans大尺度| 成人精品区| 在线精品亚洲一区二区古装| 91免费观看视频| 亚洲精品无码AV电影在线播放| 亚洲视频四区| 五月丁香伊人啪啪手机免费观看| www.狠狠| 呦系列视频一区二区三区| 国产精品视频免费网站| 特级精品毛片免费观看| 亚洲精品不卡午夜精品| 无码中字出轨中文人妻中文中| 国内99精品激情视频精品| 国产网友愉拍精品|