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

?

基于移動定位的AR精靈游戲設(shè)計

2024-11-06 00:00:00張璘董錦陶琳
數(shù)字通信世界 2024年10期

摘要:增強(qiáng)現(xiàn)實(Augmented Reality)AR游戲應(yīng)用的核心是將現(xiàn)實場景虛擬進(jìn)游戲世界,實現(xiàn)所處環(huán)境在虛擬世界的地理映射,給玩家?guī)砹己玫某两泻突有?。為了提高游戲的體驗感,該文基于移動定位設(shè)計了一款A(yù)R精靈游戲。游戲?qū)PS坐標(biāo)值作為游戲角色在地圖中的顯示坐標(biāo),利用GoogleMap進(jìn)行地圖映射,采用Haversine公式實時計算角色與精靈的間距,實現(xiàn)抓取捕獲精靈的過程。游戲以Unity3D為開發(fā)平臺,采用MonoDevelop作為游戲編輯器,應(yīng)用C#語言編寫游戲腳本,實現(xiàn)虛擬AR精靈在現(xiàn)實場景中的捕獲過程。

關(guān)鍵詞:增強(qiáng)現(xiàn)實AR;全球衛(wèi)星定位系統(tǒng)(GPS);移動定位

doi:10.3969/J.ISSN.1672-7274.2024.10.001

中圖分類號:TP 391.41 文獻(xiàn)標(biāo)志碼:A 文章編碼:1672-7274(2024)10-000-03

Design of AR Elf Game Based on Mobile Positioning

Abstract: The core of augmented reality (AR) game applications is to virtualize real scenes into the game world, achieve geographical mapping of the environment in the virtual world, and bring players a good sense of immersion and interactivity. In order to improve the gaming experience, this article designs an AR sprite game based on mobile positioning. The game uses GPS coordinate values as the display coordinates of the game character on the map, uses GoogleMap as the map mapping, and uses Haversine formula to calculate the real-time distance between the character and the sprite, achieving the process of grabbing and capturing sprites. The game is developed using Unity3D as the development platform, MonoDevelop as the game editor, and C # language to write game scVkm1YXBgvcLvYPTjOlOknw==ripts, achieving the capture process of virtual AR sprites in real scenes.

Keywords: augmented reality (AR); GPS; mobile positioning

增強(qiáng)現(xiàn)實類手機(jī)游戲市場的增長主要是由移動設(shè)備的迅速崛起推動的,它可以將數(shù)字虛擬信息與現(xiàn)實世界巧妙地融合在一起[1,2],其中,基于位置移動的虛擬現(xiàn)實游戲近年來占據(jù)主流,例如,Niantic在2016年發(fā)行的精靈寶《Pokémon Go》允許玩家通過智能手機(jī)的GPS和GIS運營商提供的服務(wù)在現(xiàn)實世界中發(fā)現(xiàn)精靈,巧妙地利用移動地理信息完成精靈的捕捉和戰(zhàn)斗[3-4];另一款整合了AR技術(shù)的手機(jī)游戲是《鯊魚手指3D水族館》,它使用移動設(shè)備的攝像頭鏡頭把現(xiàn)實世界變成危險的水世界,鯊魚會試圖咬球員的手指,所以球員必須通過傾斜移動設(shè)備來避開鯊魚的攻擊[5]。因此,通過使用真實地理信息實現(xiàn)虛擬增強(qiáng)現(xiàn)實的游戲已經(jīng)成為非常流行的趨勢,可提供無縫的交互體驗,給人身臨其境的沉浸式感受。

1 游戲設(shè)計思路

本款增強(qiáng)現(xiàn)實游戲在Unity3D平臺上完成全部制作,使用Unity3D平臺自帶的MonoDevelop作為游戲開發(fā)環(huán)境進(jìn)行各個腳本的編寫,采用Android SDK(Android Software Development Kit)和JDK(Java SE Development Kit)進(jìn)行游戲打包,并安裝在Android手機(jī)上運行。本游戲采用了多場景切換模式,調(diào)用GPS服務(wù)、CUDLR服務(wù)、SQLite數(shù)據(jù)儲存服務(wù)的控制和管理,從而完成玩家與游戲之間的互動。

2 各場景功能實現(xiàn)

2.1 游戲地圖的添加

市面上的GIS服務(wù)商很多,如國內(nèi)的百度地圖、高德地圖等,他們通常會將現(xiàn)實世界地圖縮放到一定比例制作成地圖,并將地圖分割成為靜態(tài)地圖瓦片提供給使用者。之所以使用谷歌靜態(tài)地圖,是因為在本游戲中我們只需要將現(xiàn)實世界中的街道映射到游戲地圖上,而不需要其他多余的數(shù)據(jù)如地名、地標(biāo)建筑物等,這樣可避免場景界面的混亂。

2.2 游戲角色與精靈的添加及相對距離測算

2.2.1 游戲角色在玩家地圖場景中的添加

基于移動定位的AR游戲使得玩家對角色移動的操控并不能通過屏幕觸摸來實現(xiàn),而是需要通過GPS定位獲取玩家在現(xiàn)實世界中的地理映射,也就是游戲角色在虛擬地圖中的經(jīng)緯度是玩家在真實世界中GPS測得的經(jīng)緯度值。通過導(dǎo)入Unity的跨平臺輸入模塊,為游戲角色添加GPS羅盤控制腳本,以實現(xiàn)游戲角色的移動。添加該腳本需要以下幾個步驟。

(1)通過綁定游戲角色羅盤方向:將手機(jī)指南針的正北向綁定為游戲角色的面部朝向,當(dāng)玩家水平轉(zhuǎn)動手機(jī)時,游戲角色也會隨之在背景地圖上轉(zhuǎn)動朝向,確保轉(zhuǎn)向能夠平滑完成。

(2)設(shè)置游戲角色的GPS定位:當(dāng)啟用手機(jī)GPS服務(wù)時,將GPS定位得到的經(jīng)緯度設(shè)置為角色的坐標(biāo)值,當(dāng)玩家移動手機(jī)時,游戲角色隨著GPS坐標(biāo)的變化也會隨之在游戲地圖上開始移動,這樣就能實現(xiàn)映射玩家真實地理位置的初衷。

(3)刷新游戲地圖:背景地圖的加載是以游戲角色的GPS坐標(biāo)為中心,向谷歌云平臺發(fā)送靜態(tài)地圖圖像請求來不斷獲取新的地圖背景的。當(dāng)游戲角色的GPS坐標(biāo)移動出中心位置坐標(biāo)邊界時,便向谷歌云平臺發(fā)送當(dāng)前新的GPS坐標(biāo),請求更新谷歌靜態(tài)地圖并重新加載進(jìn)游戲地圖中。這樣游戲角色將始終置于新的游戲地圖中心點位置,保證了游戲地圖空間的不斷擴(kuò)展,而不是僅局限于最初請求得到的空間區(qū)域。

2.2.2 精靈在玩家地圖和捕獲場景中的添加

AR精靈在玩家地圖場景中添加位置需要滿足所處位置的隨機(jī)性,調(diào)用Unity的隨機(jī)生成函數(shù)Random.value,將其疊加在當(dāng)前獲取的GPS經(jīng)緯度上即可得到精靈本身在虛擬地圖中的坐標(biāo),繼而調(diào)用Unity中的3D模型生成一個隨機(jī)精靈。同時使用Unity 3D自帶的SQlite輕型數(shù)據(jù)庫,用以存放每個精靈生成時的虛擬經(jīng)緯度坐標(biāo),用以實現(xiàn)后續(xù)精靈與游戲角色相對距離的計算。由于游戲角色隨著玩家的移動在虛擬地圖上的位置將發(fā)生變化,因此精靈顯示的位置也同樣需要相應(yīng)變化,才能反映出角色與精靈兩者之間距離的相對變化,這種變化同樣通過加載背景地圖的方式更新,這里更新幀速率為60 FPS。

精靈在捕獲場景中實現(xiàn)了虛擬物體與真實世界的疊加,作為增強(qiáng)現(xiàn)實的技術(shù)核心,強(qiáng)調(diào)把現(xiàn)實場景中的信息展現(xiàn)在虛擬世界當(dāng)中,這種虛擬與現(xiàn)實場景的疊加通過Unity 3D平臺自帶的相機(jī)渲染模式,首先將UI界面創(chuàng)建成一個空白的畫布,設(shè)置屏幕空間將整個屏幕滿屏覆蓋,繼而啟動攝像機(jī)模式,將畫布放置到攝影機(jī)前方,畫布看起來繪制在一個與攝影機(jī)固定距離的平面上,渲染速率為60 FPS,這樣就可以為AR精靈與玩家捕獲過程提供現(xiàn)實交互背景。

2.2.3 游戲角色與精靈兩者之間相對距離的測算

游戲角色在虛擬地圖中的三維空間中計算相對距離可以模擬精靈動態(tài)位置的調(diào)整。這里設(shè)置一個可視距離閾值,當(dāng)兩者相對距離小于可視距離閾值時,表示精靈離玩家在允許范圍內(nèi),可以出現(xiàn)在游戲屏幕上,因此在地圖上構(gòu)建一個實體化3D精靈模型;反之當(dāng)兩者相對距離超出了可視距離閾值時,表示精靈距離玩家尚遠(yuǎn),此時精靈就會在游戲地圖上消失。

為了幫助玩家找到精靈的位置,這里設(shè)置了探索范圍,探索范圍設(shè)置為可視距離閾值的1~2倍,精靈雷達(dá)會時刻判斷游戲角色與周圍的虛擬精靈是否在這個探索范圍之內(nèi),若處于范圍內(nèi)會在游戲窗口左上角出現(xiàn)腳印,預(yù)示著玩家正在接近某個虛擬精靈??紤]到虛擬地圖經(jīng)緯度坐標(biāo)的空間距離,可以通過Haversine公式對經(jīng)緯度和弧度的轉(zhuǎn)變得到地球上任意兩點間距[6],從而得到游戲角色與精靈三維空間的相對距離,如式(1)所示:

式中,、分別表示兩點緯度值;、分別表示兩點經(jīng)度值;表示三維空間中兩點的最短距離。精靈與角色相對距離測算流程圖如圖1所示。

圖1 精靈與角色相對距離測算流程圖

2.3 精靈的捕獲與逃跑

AR精靈手游主要通過玩家對精靈發(fā)現(xiàn)、捕獲的過程提高游戲趣味性,采用投擲精靈球?qū)`進(jìn)行捕獲。精靈球在相機(jī)拍攝的現(xiàn)實背景中移動,當(dāng)投擲到精靈身上時,精靈的運動速度減慢直到最后靜止不動,完成捕獲過程。在這個算法中,添加了精靈動畫速率和精靈隨機(jī)屬性兩個參數(shù):設(shè)置精靈的動畫速率初始值為1,使得精靈在捕獲場景中能一直以該速率運動,當(dāng)精靈球碰撞到精靈后,會產(chǎn)生碰撞反饋,CollionReaction腳本中的碰撞函數(shù)調(diào)用精靈遞減速率函數(shù),重新計算精靈當(dāng)前速度:

因此每次碰撞過后,精靈速度都會減慢,當(dāng)多次成功擊中精靈后,精靈就會停止運動,捕獲場景也會出現(xiàn)精靈被捕獲成功的標(biāo)記,并在數(shù)秒后切換回玩家地圖場景。為了增加捕獲難度,添加了精靈隨機(jī)屬性參數(shù)Power和逃跑概率區(qū)間參數(shù)Level,每只精靈都會隨機(jī)從0~10中隨機(jī)生成這兩個參數(shù)值,其中Power用于設(shè)定精靈的動畫恢復(fù)速率,表示為補(bǔ)償精靈球碰撞而減掉的部分速率值,計算表達(dá)式為

因此隨機(jī)屬性參數(shù)Power值越高的精靈,捕獲時需要成功投擲精靈球的次數(shù)也越多。逃跑概率區(qū)間參數(shù)Level用于計算精靈的逃跑概率為:

腳本會每20 s隨機(jī)在0~80范圍內(nèi)生成隨機(jī)數(shù),該數(shù)值與逃跑概率進(jìn)行一次比較,也就是每20 s判斷一次精靈是否會逃跑:若逃跑概率大于隨機(jī)數(shù),則精靈就會逃跑,也就是突然消失在游戲地圖中;否則精靈無法實現(xiàn)逃跑狀態(tài),將被繼續(xù)捕獲。精靈捕捉與逃跑流程圖如圖2所示。

3 App測試結(jié)果

對該款游戲性能進(jìn)行測試,將Android SDK平臺下開發(fā)的APK裝載進(jìn)手機(jī),圖3(a)是玩家虛擬地圖場景,該地圖上有玩家角色與地圖場景之間的切換,玩家也可通過觸碰精靈,進(jìn)入精靈捕捉場景,如圖3(b)所示,在此界面內(nèi)能夠?qū)崿F(xiàn)精靈球向精靈的動態(tài)投擲過程。圖3(c)是當(dāng)精靈球被多次投擲,精靈運動速率降低到0時,完成捕獲,圖3(d)為某種場景下精靈在捕獲過程中發(fā)生了逃跑。

4 結(jié)束語

本文利用Unity3D游戲開發(fā)平臺制作了一款基于移動定位的增強(qiáng)現(xiàn)實AR精靈游戲,使用UnityStore上提供的3D人物和精靈模型,本款游戲的優(yōu)點是能讓玩家利用智能終端GPS定位及GIS服務(wù)商提供的地理信息數(shù)據(jù),在手機(jī)端體驗精靈與現(xiàn)實場景的結(jié)合,感受AR特效體驗與游戲樂趣。

參考文獻(xiàn)

[1] Peter Brown.增強(qiáng)現(xiàn)實:為現(xiàn)實世界加持超越游戲的酷炫體驗[J].中國集成電路,2018,27(12):19-22.

[2] Youm D.H.,Seo S.H.,Kim J.-Y.Design and development methodologies of Kkongalmon, a location-based augmented reality game using mobile geographic information[J].Eurasip Journal on Image and Video Processing,2019 (1):1-11.

[3] Patrick Helmholz, Michael Meyer, Susanne Robra-Bissantz.Catch them all again! – Eine pokémon go vergleichsstudie[C].Communities in New Media: Research on Knowledge Communities in Science, Business, Education and Public Administration - Proceedings of 21th Conference GeNeMe,2018.

[4] Paavilainen J., Korhonen H., Alha K., Stenros J., Koskinen E., Mayra F. The Pokémon go experience: A location-based augmented reality mobile game goes mainstream[C].2017 Conference on Human Factors in Computing Systems - Proceedings, 2017.

[5] Ulrike Spierling, Antonia Kampa. An Extensible System and Its Design Constraints for Location-Based Serious Games with Augmented Reality[C].Serious Games -3rd Joint International Conference, JCSG 2017.

[6] 樊東衛(wèi),何勃亮,李長華,等.球面距離計算方法及精度比較[J].天文研究與技術(shù),2019,16(1):69-76.

永仁县| 安新县| 乌拉特后旗| 贡觉县| 桐柏县| 蛟河市| 玛曲县| 湖南省| 沁源县| 新宁县| 绥江县| 临漳县| 邵阳市| 榕江县| 页游| 扎赉特旗| 玉山县| 江北区| 莱芜市| 凤阳县| 玉屏| 天水市| 湾仔区| 蒙山县| 顺昌县| 外汇| 德钦县| 衡阳县| 上高县| 阜平县| 阳朔县| 姜堰市| 花莲市| 莱西市| 江口县| 承德县| 固始县| 乐业县| 廉江市| 五河县| 高阳县|