萬政 李娟 羅宇飛 張海旭 李一帆



摘要:根據《中華人民共和國道路交通安全法》規定,摩托車駕駛過程中,駕駛者需佩戴好安全頭盔以保護自己的生命安全。然而實際生活中,駕駛者對于摩托車駕駛的交通安全意識不足,不了解頭盔的重要性,經常駕駛摩托車時不佩戴頭盔。為預防此類摩托車交通事故的發生,筆者開發了一款基于Unity 3D的摩托車安全駕駛游戲。該游戲利用Unity 3D的強大性能,模擬摩托車駕駛,讓駕駛人通過游戲強化安全意識,學習安全法規,自主佩戴安全頭盔,最終保護生命安全。
關鍵詞:游戲開發;佩戴頭盔;模擬現實;安全意識
中圖分類號:TP311.1? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)04-0074-03
Abstract: According to the Law of Peoples Republic of China on Road Traffic Safety, motorcyclists must wear helmets. But in reality, motorcyclists often fail to do that, which is caused by their poor awareness of traffic safety and insufficient recognition of helmets. In order to prevent the motorbike accidents caused by the above reasons, our team invents a motor driving game based on Unity 3D, helping to raise peoples awareness of traffic safety. This game absorbs the knowledge of traffic rules and reflects that in its virtual motor driving scenes supported by Unity 3D. In this way, the users can strengthen their awareness of traffic safety, developing the habit of wearing helmets, and eventually, saving lives of their own
Key words: game development; wearing helmets; virtual reality; awareness of safety
1 背景
安全頭盔即安全帽作為一種新型防具,可以緩沖對頭顱的傷害,能夠有效地將安全賦予駕駛員,是騎行者在交通事故中的最后的生命安全防線。然而,經過對交通安全事故的深度考察,發現大多數人對于摩托車駕駛的安全意識不足,在日常出行中都輕裝上陣,以至于當交通變故產生時,造成不可彌補的結果。事實上,交通法規是用一場場血與淚的教訓總結出的行車規范,是用來保護摩托車駕駛員以及正常行走路人的生命健康,而不是一群人根據自己的喜好而制定出來的,它的目的是保護大家的生命安全。
隨著信息技術的不斷發展,游戲產業也成為互聯網產業市場中增長速度最快的熱點,并已在計算機、移動設備等多個平臺得到普及[1]。而Unity 3D因其自帶的功能包含游戲制作、美術繪畫、3D建模、影視特效等功能,成為一款最流行的開發引擎。本游戲也是基于其強大的特性,采用Unity 3D技術,開發出的一款模擬摩托車安全駕駛的游戲,呼吁人們在騎摩托車時應當依照規定佩戴頭盔,恪守交通法規,保護自己的生命安全。
2 國內安全現狀
當代社會,代步工具種類繁多,摩托車以其體積較小、極具靈活性的特點風靡全國。然而,許多的安全隱患也伴隨而來。從交通部門獲悉,在最近一年的交通安全事故報告中,關于摩托車的死亡的人數就多達上萬人,他們當中極大一部分人都是由于頭部受到重傷而亡。因人體頭部結構比較特殊,輕微的撞擊就易造成腦震蕩,而對于交通事故,劇烈的撞擊必不可少,頭部的保護也就成為安全駕駛的必修課,安全頭盔成為必選的工具。對于相當一部分人來說,他們缺乏對安全帽功能的了解,當交通警察在對佩戴頭盔的駕駛員進行檢查時,都淺顯的認為該行為只是為了開罰單,而沒有意識到安全的重要性。
一名按照規范佩戴安全帽的摩托車司機,因意外而發生交通事故時,安全帽能很好保護好配戴者的頭部,頭盔內的緩沖層和內襯層有效緩解在碰撞瞬間產生力,從而抵消一部分外力對頭顱的沖擊。我們也發現,倘若我們去大力地宣傳安全意識,在各個路口掛上有關安全提示的標語,每時每刻告訴市民安全行車的必要性,牢記把我們的生命安全放在第一的原則,將有效地提升市民學會預防事故,不讓悲劇在自己的家庭上演。
綜上所述,一款能夠宣傳安全意識的模擬駕駛游戲能夠有效地幫助人們提升自我安全意識。
3 關鍵技術——Unity 3D引擎技術
Unity是由丹麥Unity公司開發的游戲開發工具,因包含整合的編輯器、跨平臺發布、地形編輯、著色器、腳本、網絡、物理、版本控制等一些特性[2],一舉成為當前國際開發引擎界的掌舵者,同時可視化編輯器作為其新的特性,深受開發者喜愛,倘若開發者有什么新穎的想法,可以立刻在引擎上實現,而這種實時的編輯,測試,運行功能,能有效地提升制作者與游戲項目的交流。它讓開發者能夠在一定學習的基礎上通過簡單的操作制作出簡易的小游戲,再加上其“免費+收費”相結合的運營模式,使之逐漸成為國內的主流游戲引擎。
在具體功能方面,Unity 3D不僅提供了2D與3D游戲制作所需要的功能,還包括地形系統、物理系統、剛體、碰撞器、光照、粒子系統在內的強大功能,這也是為什么它可以作為VR、AR游戲開發的首選引擎。Unity 3D集各功能于一體,讓開發人員僅通過一款程序內完成游戲開發的大部分工作,有效地降低程序的開發時長。
基于Unity 3D的跨平臺性和極其完善的深層技術結構,摩托車安全駕駛游戲便逐漸建立起來。
4 游戲總體設計
4.1 總體思路
《Go Home》作為一款3D摩托車跑酷類游戲,游戲的主體為下午五點,迎來了下班的高峰期,艾克斯也到了回家的時間,由于回家路途較遠,他需要駕駛自己的摩托車回家,為了自身的生命不受到威脅,他需佩戴好安全頭盔,恪守交通法規,最后平安的回到家中,而期間會出現各種突發情況,倘若在途中發生了交通事故,那么這個時候頭盔將取到關鍵性作用,它能夠有效地保護角色降低傷害,甚至在關鍵時刻起到保護生命的作用。
4.2 游戲流程
一款游戲的可玩性是該游戲可以長期運行的基礎。游戲的可玩性指的是玩家與游戲世界或者游戲世界對玩家所做出反應的方式[3]。該游戲以當前安全教育主題為大背景,游戲環境是我們所熟悉的城市,高樓林立,交通四通八達,路上車輛來來往往,過往的行人來來往往。玩家扮演一名下班后需要安全回家的角色,摩托車作為其代步工具,他得駕駛著自己的摩托車在不違反道路交通安全法的前提下,穿過一條條車水馬龍的街道,安全回家。在回家途中,他可能經過紅綠燈,可能碰見行人過斑馬線,或者道路上的路障,如此種種,他需要安全的規避,以達到安全回家的目的。除此之外,游戲當中還增設了大量的游戲道具,比如金幣、血包等,而金幣的收益可以在商城為角色購買道具,像更好的摩托車,更高級的頭盔等等。
5 游戲設計
5.1 游戲場景搭建
場景是Unity 3D程序的基本組成單位,任何一個Unity 3D程序都是由若干場景組合而成,程序通過腳本在這些場景之間轉換[4]。作為一款教育類游戲,其場景的搭建是整個游戲環節首要部分,Unity 3D以其完美的開發性能,極好的實現了游戲場景搭建。隨著該軟件的更新,從Unity 3D 5.0開始,項目開發所需要的資源便不再是軟件自帶,而需要國內的開發者到其官網或者軟件自帶的商店下載StandardAssets,下載完成后,找到Project面板下的Assets組件的面板位置,然后找到ImportPackage面板下的CustomPackage組件所在后點擊該組件即可將下載好后的資源包導入到unity中。導入時需要注意的是,資源包所含有的2D、Cameras、Characters等12個文件需全部導入,如果只導入項目所需文件可能會導一系列報錯,帶來不必要的麻煩。
創建一個Unity 3D項目,將其命名為Firstscence,場景會自動創建一個主相機(MainCamera)和方向燈(DirectionalLight)。前者用來記錄Game界面,對于后者,我們可以通過對其位置、角度、范圍大小的調整,來調整對游戲場景的渲染程度,從而使場景更加自然,虛擬現實的效果更加高效化。點擊菜單Game Object中的3D Object中的Plane,多次操作后,繼續通過調整所需Inspector面板當中的各類相關參數以達到所需效果,該游戲的場景便簡單搭建實現。如圖1場景搭建。
5.2 游戲設計
1)游戲障礙物的設計
由于該游戲是作為一個摩托車安全駕駛游戲軟件的示例,因此游戲中涉及一小部分的學習內容,學習內容包括法律知識和基本的道德準則,為實現以上內容,需建構相關的模型。Unity 3D以其能集各性能于一體的優秀性,3D建模是其基本功能,開發者可以通過該引擎進行建模,為了方便操作,可在網上下載相關的模型,但通過導入的模型通常情況下都是不適配的。為此,對于導入的模型,需對其Inspector面板中的Model、Rig、Animation、Materials中的相關參數進行調配,同時為了適配場景,模型的形狀和大小需要進行一定的調整,獲得最佳效果。汽車模型如圖2所示,為了給模型增設重力系統以獲得更好的逼真成果,需對其添加剛體組件,若多個對象添加,還可因為兩對象發生碰撞而產生位移,然后再給物體添加物理材質,從而達到兩個對象發生碰撞后所需的摩擦力和反彈效果。
2)碰撞檢驗
虛擬現實最重要的是為了體現真實物體的物理特性還需要在觸覺上進行設計,而觸覺上的設計需要虛擬世界中的物體對象可以相互接觸并存在著碰撞反應[5]。碰撞檢測是實現該效果的主要方法,從概念上來講,當一個實體與另一個實體接觸時,二者所產生的形狀、位移等的變化都可以稱作碰撞。在Unity 3D所含有的函數種類繁多,碰撞檢測在其中就有相對應的函數,其主要功能為實現游戲中碰撞的偵測,實現過程如下,對于兩個或多個將在某時刻需實現碰撞的實體,在其中一方添加Rigidbody,而碰撞產生時的雙方添加Colider,碰撞檢測函數如圖3所示,當發生碰撞時,便會瞬間實現碰撞檢測函數內的代碼,如銷毀物體,播放音樂,實現粒子效果等。
對于摩托車駕駛游戲,通過調取OnCollisionEnter()的方法來解決相關的碰撞檢測,當摩托車碰撞到汽車模型時便會被摧毀,游戲結束,資源中的相關動畫特效也在這一刻實現,游戲當中的道具拾取等功能也需通過觸發器實現。
5.3 摩托車玩家設計
摩托車在行駛過程中,為給玩家帶來駕駛摩托車的虛擬真實效果,開發者給玩家設置了兩個視角——兩個攝像機。在一個場景中,相機雖然能夠有多個共存,但玩家在游戲界面的視角僅能由一個攝像機提供。由于在游戲搭建部分已經創建了一個視角,但需將其位置調至摩托車后方,鏡頭視角為摩托車方向,同時還需在摩托車的駕駛位放置一個攝像機,兩個攝像機的鏡頭的切換可以用C#語言達到效果。在駕駛方面,通過鍵盤上的四個按鍵WASD來實現摩托車的前后左右的行駛,摩托車的加速功能通過按鍵e來實現,但其速度設置了一個上限,當達到該上限時速度便不再變化。摩托車駕駛展示如圖4所示。
5.4 調試與完善
一款優秀的游戲,需對其不斷地進行測試,發現其中漏洞和不足。游戲測試有多種方式,有第一階段的單元測試、第二階段的集成測試、采用黑盒法的系統測試、以及最后的驗收測試,每一階段都會產生相對應的測試報告,開發者再依據其相干數據對游戲進行改善,不斷地測試,不斷地修改,以達到最佳游戲效果。
6 結束語
本項目基于Unity 3D所具備的完善性能,以及C#語言的腳本的完美配合,成功地設計出一款教育玩家在摩托車駕駛時,需安全佩戴頭盔并且守法的游戲。本游戲在給玩家帶來娛樂的同時,也能夠幫助玩家提高安全意識,規避在實際操作中的低級錯誤,將佩戴頭盔作為摩托駕駛的前提要求,為了自己也為了家人,安全上路,最終起到寓教于樂的作用。雖然本項目通過Unity 3D實現了摩托車虛擬駕駛的基礎性功能,但由于筆者在Unity 3D引擎的研究時間和目前自身的研究水平有限,在虛擬駕駛的實現方面還有很多的不足,隨著對其研究的深入和特性的挖掘和自身的學習,相信這都將會得到改善,游戲中的虛擬化場景將更加豐富和更具趣味性,人機交互系統也會大幅度的提升。
參考文獻:
[1] 李莉,曾曉燕,李鍇,等.基于unity3d的模擬駕駛游戲[J].計算機產品與流通,2020(9):117-118.
[2] 徐敏,童強.一種基于Unity3D+Vuforia的增強現實交互App的開發[J].現代計算機(專業版),2016(12):71-75.
[3] 吳志達.一個基于Unity3d游戲引擎的體感游戲研究與實現[D].廣州:中山大學,2012.
[4] 朱柱.基于Unity3D的虛擬實驗系統設計與應用研究[D].武漢:華中師范大學,2012.
[5] 曾林森.基于Unity3D的跨平臺虛擬駕駛視景仿真研究[D].長沙:中南大學,2013
【通聯編輯:謝媛媛】