王功利 鐘健麒
摘要
本文介紹一款基于Unity3D引擎的射擊游戲。針對游戲市場上射擊游戲的相關(guān)調(diào)查和分析,著重介紹開發(fā)射擊游戲中人工智能與攝像機(jī)模塊的設(shè)計(jì)運(yùn)用。人工智能在射擊游戲中的運(yùn)用體現(xiàn)在敵人動作行為,射擊行為中。攝像機(jī)模塊會在瞄準(zhǔn)鏡,小地圖雷達(dá)功能等方面有所運(yùn)用。這些功能的運(yùn)用能夠完善一款射擊游戲的細(xì)節(jié),給玩家?guī)砀憬?,更刺激的游戲體驗(yàn)。
【關(guān)鍵詞】Unity3D 人工智能 虛擬攝像機(jī)
1 引言
射擊游戲根據(jù)游戲視角不同,可劃分為第一、第三人稱、俯視以及平面射擊游戲等。其中第一人稱視角是射擊游戲的主流,相比其它游戲視角,第一人稱視角會帶給玩家身臨其境的感受,真實(shí)感和交互感會大大增強(qiáng),讓游戲給玩家?guī)硪曈X刺激感。
人工智能目前成為很多高新技術(shù)產(chǎn)品開發(fā)過程中的核心技術(shù),同樣也是數(shù)字媒體游戲作品中的重要技術(shù),成為游戲產(chǎn)品創(chuàng)新的核心動力,給游戲玩家?guī)砀呖赏嫘院蜐M足感的體驗(yàn),使游戲在市場競爭中占據(jù)主導(dǎo)地位。本文將以制作第一人稱射擊游戲的過程中人工智能和攝像機(jī)的相關(guān)問題展開介紹,為開發(fā)者在Unity3D游戲引擎中相關(guān)技術(shù)的設(shè)計(jì)具有一定指導(dǎo)作用。
2 相關(guān)工作
玩家視角切換設(shè)計(jì)與運(yùn)用是第一人稱射擊游戲的重點(diǎn)。游戲過程中時刻要使用視角,例如玩家使用武器瞄準(zhǔn)鏡,小地圖偵查等。
人工智能具有多變性,健壯性和平衡性的特點(diǎn)。射擊游戲中,多變性體現(xiàn)在敵人的戰(zhàn)術(shù)動向的多變,讓玩家無法完全預(yù)知敵人行動;健壯性體現(xiàn)在算法在程序中的健壯性和游戲邏輯合理性;平衡性表現(xiàn)在算法會給玩家?guī)淼牟僮餍院腿の缎灾g的平衡感。射擊游戲運(yùn)用好人工智能算法。不僅能激發(fā)玩家的游戲興趣,又能讓玩家愿意挑戰(zhàn)自己的操作實(shí)力。
3 人工智能與攝像機(jī)的運(yùn)用
3.1 AI在敵人行為中的實(shí)現(xiàn)
射擊游戲很多情節(jié)中,玩家想完成任務(wù)就要擊敗敵人。而作為敵人就需要有一定的“能力”去阻止玩家完成任務(wù)。這需要開發(fā)者給敵人賦予人工智能算法,讓敵人通過算法執(zhí)行某些智能操作。對于玩家,想要擊敗敵人就要知道敵人會在那里出現(xiàn),會如何組織對玩家的進(jìn)攻。
3.1.1 尋找玩家
敵人生成后,需要在場景中尋找玩家對象。通過物體對象在Inspector編輯的Tag屬性,根據(jù)不同標(biāo)簽判斷物體是否為“玩家”。腳本中定義游戲?qū)ο笞鳛閿橙俗兞?,利用GameObject.FindGamcObjectWithTag()方法尋找?guī)в小癙layer”標(biāo)簽的對象,從而認(rèn)定這類對象就是玩家目標(biāo)。
3.1.2 追蹤與撤離
敵人接近玩家需要時刻改變其旋轉(zhuǎn)角度和位置。腳本利用三維向量的MoveTowards方法控制敵人走位。獲取任意時刻敵人位置、玩家位置以及敵人的移動速度。讓敵人在單位時間內(nèi)以玩家位置為目的地移動;利用Quatemion.LookRotation獲取面向玩家的旋轉(zhuǎn)朝向,Quatemion.Slerp對敵人的旋轉(zhuǎn)進(jìn)行控制。
敵人追趕玩家進(jìn)行圍攻與否同樣要借助人工智能進(jìn)行判斷。定義腳本控制敵人追擊行為。當(dāng)敵人距離玩家太近時就不再靠近玩家,距離太遠(yuǎn)時則進(jìn)行追趕;對于玩家,在主動追擊敵人時,敵人需要躲避。這些需要通過判斷玩家與敵人的間距是否到達(dá)某個限定值。腳本中定義浮點(diǎn)型變量規(guī)定停止和繼續(xù)追趕的距離。運(yùn)行中對敵人和玩家之間距離與這些變量進(jìn)行比較,根據(jù)比較結(jié)果來控制追擊,停止或撤退動作。
3.2 Unity攝像機(jī)屬性運(yùn)用
3.2.1 小地圖
小地圖用于判斷場景中玩家與敵人之間的相對位置,通過給敵人的正上方加上標(biāo)記,讓標(biāo)記在小地圖中以二維形式顯示出來而不在玩家視圖中展現(xiàn)。
敵人模型的標(biāo)記中需要調(diào)節(jié)Layer屬性,在Inspector的“Layer”選項(xiàng)中調(diào)節(jié)敵人模型和標(biāo)記的層屬性使其互不相同。在場景中添加攝像機(jī)并固定在玩家正上方,在層次結(jié)構(gòu)上附屬于玩家對象,使相機(jī)與玩家位置綁定。用該相機(jī)的繪制畫面作為小地圖展示內(nèi)容,最后在UI玩家界面中添加RawImage,顯示小地圖相機(jī)實(shí)時繪制渲染出的畫面。最后在相同位置加上小地圖的背景圖片。
相機(jī)屬性的Culling Mask表示攝像機(jī)要繪制的層。在這里將小地圖相機(jī)繪制層選項(xiàng)中,只選擇代表敵人標(biāo)記的“Mad”,而在玩家主相機(jī)的選項(xiàng)中,將除了Mark以外的所有其他層進(jìn)行勾選。這樣在游戲運(yùn)行中主視圖不會繪制出敵人標(biāo)記而正常繪制出其他內(nèi)容,而小地圖只會把敵人的標(biāo)記繪制出來并顯示在主相機(jī)UI中,達(dá)到預(yù)期效果。
3.2.2 瞄準(zhǔn)鏡功能
瞄準(zhǔn)鏡實(shí)現(xiàn)利用了攝像機(jī)視圖變換功能。場景中新建攝像機(jī)用于制作瞄準(zhǔn)鏡視圖。添加腳本用于控制玩家在點(diǎn)擊瞄準(zhǔn)按鍵時切換到瞄準(zhǔn)視圖。定義GameObject并綁定場景中的瞄準(zhǔn)鏡相機(jī),再定義 Camera對象并使用其中的FieldOfView屬性調(diào)整視圖的放大倍數(shù)。最后界面中添加Image并附著瞄準(zhǔn)鏡的背景圖片。當(dāng)玩家瞄準(zhǔn)時,既切換了攝像機(jī)視圖,又能讓瞄準(zhǔn)鏡背景可視化。
4 總結(jié)
人工智能技術(shù)的發(fā)展在基于Unity3D引擎的射擊游戲設(shè)計(jì)中被廣泛運(yùn)用。射擊游戲中玩家對視角功能的依賴性與需求,要求開發(fā)者對攝像機(jī)功能設(shè)計(jì)有較好的掌握。本文在對Unity3D引擎的射擊游戲進(jìn)行基本設(shè)計(jì)的基礎(chǔ)上,對人工智能算法,攝像機(jī)功能的技術(shù)在開發(fā)過程中的運(yùn)用繼續(xù)深入探討,并簡述相關(guān)設(shè)計(jì)的流程。該游戲目前在開發(fā)階段,在關(guān)卡設(shè)計(jì),敵人和場景的內(nèi)容仍然需要繼續(xù)完善與探究。
參考文獻(xiàn)
[1]李錦榮,郭磊,譚忠揚(yáng).基于Unity3D平臺的射擊游戲的開發(fā)[J].福建電腦,2015,31(02):8-9+11.
[2]劉丹奕.淺談人工智能在游戲開發(fā)中的應(yīng)用[J].黑龍江科技信息,201406):128+69.
[3]鄭銘楷,吳子朝.基于unity3d的射擊游戲設(shè)計(jì)與實(shí)現(xiàn)lil.電腦迷,2018(04):29.
[4]孫可言,陳根.基于Unity射擊游戲的人工智能與碰撞檢測的研究[J].科技風(fēng),2016(24):11+18.