亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Unity3D開發(fā)Survival shooter的實(shí)現(xiàn)

        2018-01-15 09:52:06王濤王曉博
        智富時(shí)代 2018年11期

        王濤 王曉博

        【摘 要】本文闡述了一個(gè)基于Unity3D開發(fā)的射擊類游戲,重點(diǎn)實(shí)現(xiàn)了碰撞檢測、敵人智能跟蹤、動(dòng)畫設(shè)置、聲音播放等功能,UI搭建方面實(shí)現(xiàn)了界面的制作、玩家血量條、玩家分?jǐn)?shù)記錄和音量界面的制作。

        【關(guān)鍵詞】Unity3D軟件;射擊類游戲;UI界面

        1.引言

        小游戲作為電子游戲家族中的一個(gè)獨(dú)特成員,在其中扮演著重要的角色。通常以休閑益智類為主,主要分為單機(jī)版和網(wǎng)絡(luò)版。本次開發(fā)的噩夢射手就是屬于休閑小游戲,正是迎合了當(dāng)前游戲產(chǎn)業(yè),具備良好的發(fā)展前景。

        2.游戲系統(tǒng)設(shè)計(jì)

        2.1 場景搭建

        游戲素材來自于Unity引擎中自帶的資源商店,在搜索界面輸入Survival shooter就可以搜索到本題的素材,通過下載導(dǎo)入就可將游戲素材導(dǎo)入到Unity資源文件中。根據(jù)原場景進(jìn)行場景搭建,搭建場景的所有游戲?qū)ο蠖紩?huì)在Hierarchy視圖中顯示出來,方便開發(fā)者對場景隨時(shí)進(jìn)行更改與調(diào)整。

        2.2 場景中的物理檢測設(shè)置

        游戲中能夠發(fā)生碰撞的物理引擎是Collider組件,受到重力、摩擦力和角摩擦力的是Rigidbody組件,當(dāng)給游戲中的對象加上這些組件的時(shí)候,他們就會(huì)模擬出現(xiàn)實(shí)世界中的一些物理現(xiàn)象。

        在物理引擎中,兩個(gè)物體發(fā)生碰撞的條件是:兩個(gè)物體都具有碰撞器,并且一個(gè)物體必須帶剛體,而且兩個(gè)物體發(fā)生相對運(yùn)動(dòng),這是在Unity的物理引擎中產(chǎn)生物理碰撞的必要條件。

        2.3 UI界面的制作

        在本題中游戲界面中顯示的有玩家的血量和得到的分?jǐn)?shù)記錄,當(dāng)按下ESC鍵會(huì)彈出聲音控制面板和結(jié)束暫停重新開始界面。

        3.游戲功能實(shí)現(xiàn)

        3.1 主角的移動(dòng)

        通過獲取虛擬軸來實(shí)現(xiàn)主角的移動(dòng),水平虛擬軸和垂直虛擬軸,水平虛擬軸對應(yīng)了鍵盤上的A、D,垂直虛擬軸對應(yīng)了鍵盤的W、S。獲取到他們,將它們賦值給主角的位置,這樣就可以在按下W、A、S、D讓主角移動(dòng)了,其本質(zhì)就是改變了主角在三維世界中的位置來達(dá)到移動(dòng)的目的。

        3.2 主角的轉(zhuǎn)向

        主角的轉(zhuǎn)向是通過鼠標(biāo)來控制的,由于鼠標(biāo)是在屏幕上的,因此首先要將鼠標(biāo)的位置轉(zhuǎn)換到世界坐標(biāo)中,在本題中通過射線檢測的方法與四元數(shù)的轉(zhuǎn)向的方法來讓主角轉(zhuǎn)向并且很自然的轉(zhuǎn)向。

        3.3 主角的動(dòng)畫播放

        通過直接拖拽的方式將主角的動(dòng)畫添加到這個(gè)面板中,在游戲剛開始時(shí),不移動(dòng)主角時(shí),我們就會(huì)讓主角執(zhí)行一個(gè)閑置的狀態(tài),當(dāng)按下W、A、S、D中的任何一個(gè)時(shí),主角就會(huì)播放移動(dòng)的動(dòng)畫,此時(shí)在主角的這個(gè)游戲?qū)ο蟮膶傩悦姘迳霞由弦粋€(gè)Animator組件,然后將我們創(chuàng)建的這個(gè)動(dòng)畫狀態(tài)機(jī)添加給Animator組件,這樣就這兩個(gè)組件連接在一起了,最后在主角的這個(gè)腳本中將這個(gè)組件拿到,加上一些判定,在適當(dāng)?shù)臅r(shí)候來播放這個(gè)動(dòng)畫就可以了。

        3.4 主角的射擊

        主角的射擊是通過鼠標(biāo)來控制的,當(dāng)玩家按下鼠標(biāo)左鍵的時(shí)候,主角會(huì)對敵人進(jìn)行射擊,在本題中,主角射出是一條線段,這個(gè)線段有一個(gè)最遠(yuǎn)距離,也會(huì)給場景中的所有對象添加一個(gè)層(ShootableMask),也會(huì)將敵人添加這個(gè)層中,當(dāng)主角打到這個(gè)層中的任何一個(gè)對象是,這個(gè)線段就會(huì)以這個(gè)對象作為終點(diǎn),否則射線就會(huì)打到最遠(yuǎn)的距離。

        4.敵人的產(chǎn)生、移動(dòng)和動(dòng)畫播放

        4.1 敵人的產(chǎn)生

        先在已經(jīng)搭建好的場景中創(chuàng)建三個(gè)空的游戲?qū)ο?,將它們放置在想要敵人生成的地方,然后再?chuàng)建一個(gè)空的游戲?qū)ο髞砉芾磉@三個(gè)位置,將在這個(gè)空的游戲?qū)ο髵煸谝粋€(gè)實(shí)例化敵人的腳本,其次要將素材中的敵人設(shè)置好做成預(yù)設(shè)體,在腳本中拿到預(yù)設(shè)體和將要產(chǎn)生敵人的位置,這樣敵人的生成就可以了。

        4.2 敵人的移動(dòng)是通過自動(dòng)尋路來尋找主角的。

        使用Unity中自帶的導(dǎo)航系統(tǒng),可以讓敵人自動(dòng)尋路,只要在一開始的時(shí)候給敵人一個(gè)主角位置,之后就會(huì)跟著主角的移動(dòng)來移動(dòng)。

        4.3 敵人的動(dòng)畫播放

        敵人的動(dòng)畫的邏輯是,當(dāng)游戲開始時(shí),給敵人加上移動(dòng)的動(dòng)畫,動(dòng)畫參數(shù)選擇Trigger類型的參數(shù),這是從移動(dòng)的動(dòng)畫到閑置狀態(tài)的動(dòng)畫之間的切換,它的觸發(fā)條件就是當(dāng)玩家死亡的時(shí)候,而敵人死亡的動(dòng)畫是無論是在移動(dòng)狀態(tài)下還是閑置狀態(tài)都會(huì)觸發(fā),所以要將死亡的動(dòng)畫加在任何狀態(tài)的狀態(tài)上,這樣就可以隨時(shí)觸發(fā)這個(gè)動(dòng)畫了。

        4.4 主角與敵人攻擊邏輯的實(shí)現(xiàn)

        主角攻擊與主角的健康,在前面提到過主角的射擊,而主角攻擊就是用槍來射擊敵人,并且給槍設(shè)置的每發(fā)子彈是20點(diǎn)傷害,玩家的血量設(shè)置的是100點(diǎn)血量,在實(shí)現(xiàn)開始前記錄一個(gè)當(dāng)前玩家的血量和初始血量。

        敵人的攻擊與健康,每一個(gè)敵人的游戲?qū)ο笊砩隙紩?huì)具有一個(gè)觸發(fā)器,當(dāng)敵人接近主角的一定范圍時(shí),敵人就會(huì)對玩家發(fā)起攻擊,本題中,敵人的攻擊是10點(diǎn)傷害,血量也是100點(diǎn)上限,在開始前也記錄一個(gè)當(dāng)前敵人的血量和初始血量。

        4.5 UI界面的搭建與代碼之間的關(guān)聯(lián)

        UI界面的搭建也是游戲制作的重要部分,首先我們先創(chuàng)建一個(gè)Panel,并且將它的大小設(shè)置與畫布大小一樣,它有一個(gè)Image組件,里面有一個(gè)Color的屬性,將顏色改變?yōu)榧t色,然后將它的透明度設(shè)置為0,這樣我們在游戲開始時(shí)就會(huì)看不到。顏色的改變我們就通過主角的健康腳本用代碼來實(shí)現(xiàn),首先我們先獲取到這個(gè)能改變這個(gè)Panel顏色的組件Image組件,并且要給這個(gè)組件賦一個(gè)初始值,就是主角受到攻擊以后,顏色顯示為這個(gè)初始值,如果沒有受到攻擊,我們就讓顏色通過一個(gè)Color.Lerp()的方法漸變?yōu)橥该?,其中,這個(gè)方法有三個(gè)參數(shù),第一個(gè)參數(shù)就是主角受到攻擊時(shí)的顏色,第二個(gè)參數(shù)就是Color.clear,第三個(gè)參數(shù)我們會(huì)給一個(gè)這個(gè)顏色從主角受到攻擊時(shí)的顏色到透明的一個(gè)漸變的速度,因此我們會(huì)在剛開始的時(shí)候給一個(gè)漸變速度,讓這個(gè)速度在乘以一個(gè)Time.deltaTime,這樣就是顯得很平滑,不至于突兀。

        接下來是主角的血條制作,我們使用的一個(gè)是叫Slider的游戲組件,他是一個(gè)滑動(dòng)條,這個(gè)組件上有Interactable、Min Value、Max Value、Value屬性,其中第一個(gè)屬性是是否可交互,默認(rèn)為True,如果將其改為False將不能與代碼鼠標(biāo)完成交互,第二個(gè)是這個(gè)滑塊的最小值,第三個(gè)是這個(gè)滑塊的最大值,第四個(gè)是這個(gè)滑塊的值,默認(rèn)是0到1,在本題中,我們將主角的值設(shè)置為了100,因此我們將這個(gè)滑塊的最大值改為100,用來現(xiàn)實(shí)主角的血量。

        在主角健康的腳本中將主角當(dāng)前的血量賦值給這個(gè)Slider組件,這樣在游戲開始時(shí)主角受到攻擊時(shí),那個(gè)血量就會(huì)根據(jù)敵人的攻擊來減少。

        主角所得分?jǐn)?shù)的計(jì)算,寫一個(gè)腳本掛載到顯示分?jǐn)?shù)的文本上,通過這個(gè)腳本來獲取每個(gè)敵人死亡后的分?jǐn)?shù)。

        最后就是我們的音量面板和游戲暫停面板,跟上面的做法一樣,在畫布上選擇一些Slider游戲,不過在這又用了兩個(gè)新的游戲?qū)ο螅粋€(gè)Button游戲?qū)ο?,一個(gè)Toggle游戲?qū)ο螅珺utton游戲?qū)ο笫强牲c(diǎn)擊的按鈕,在這通過ESC鍵可以呼出這個(gè)面板,最下方有一個(gè)繼續(xù)游戲(Resume)按鈕,一個(gè)離開游戲按鈕(Quit Game),在上面就是一個(gè)是否開關(guān)聲音的Toggle游戲組件,當(dāng)取消這個(gè)按鈕時(shí),我們的游戲界面將沒有聲音,在上面就是通過我們的Slider游戲?qū)ο髞韺?shí)現(xiàn)的。通過與代碼的交互,我們就可以實(shí)現(xiàn)以上所說的這些。

        5.總結(jié)

        本次設(shè)計(jì)的第一人稱射擊的休閑類小游戲,功能單一,后期會(huì)逐步完善。

        【參考文獻(xiàn)】

        [1]吳志達(dá).基于Unity3D游戲引擎的游戲研究與實(shí)現(xiàn)[D].中山大學(xué),2012.

        [2]李錦榮,郭磊,譚忠揚(yáng).基于Unity3D平臺(tái)的射擊游戲的開發(fā)[J].福建電腦,2015(02)171-173.

        午夜少妇高潮在线观看| 欧美性猛交xxxx乱大交3| 国产精品欧美成人| 台湾佬综合网| 成年女人毛片免费观看97| 欧美在线三级艳情网站| 亚洲永久精品ww47永久入口| 91成人午夜性a一级毛片| 风韵丰满妇啪啪区老老熟女杏吧 | 91华人在线| 亚洲一区二区三区在线更新| 亚洲无人区乱码中文字幕| 极品少妇一区二区三区| 国产偷国产偷亚洲高清视频 | 国产精品一区二区久久乐下载| 国产青草视频在线观看| 亚洲五月天综合| 久久精品国产亚洲av大全相关| 久久久人妻一区精品久久久| 亚洲av成人波多野一区二区| 亚洲色图视频在线免费看| 亚洲国产精品无码av| 午夜射精日本三级| 国产午夜三级一区二区三| 日本韩国三级aⅴ在线观看| 亚洲男人的天堂色偷偷| 久久精品熟女亚洲av麻豆永永| 国产av综合网站不卡| 久久久久亚洲精品无码网址蜜桃 | 欧洲女人与公拘交酡视频| 18黑白丝水手服自慰喷水网站| 性生交大全免费看| 欧美国产成人精品一区二区三区| 超清无码AV丝袜片在线观看| 色婷婷亚洲精品综合影院| 国产日产精品_国产精品毛片| 国产精品免费看久久久8| 精品国产一区二区三区亚洲人| 手机av男人天堂免费网址| 国产精品高清免费在线| 偷拍综合在线视频二区日韩 |