天天看點

FPS遊戲初開發--邏輯分析總結

FPS遊戲初開發--邏輯分析總結

(圖檔來自網絡,侵權可删)

FPS遊戲,即First-person Shooting Game,第一人稱射擊遊戲,說到FPS遊戲,相信大家第一個想到都是經典的CS,近幾年優秀的FPS遊戲也是不少,比如CS續作CSGO,騰訊搞的CODOL,育碧的彩虹六号,暴雪的守望先鋒,以及藍洞的絕地求生(糾正一哈,這個應該來說是第三人稱,嚴格來說不算FPS遊戲)。

FPS遊戲的玩法大多都是一把槍,對敵人進行射擊,沒有太多的動作,行為方式看起來都比較簡單(這裡小編再吃一哈書,守望先鋒的行為方式可太多太難了),于是抱着這種心情,小編也開始自己開發簡單的FPS遊戲,結果在開發的過程中發現其實也沒那麼簡單,最後也是花了近一個月時間才算是完成。

那我們先來簡單的分析一下FPS遊戲有哪些需要我能完成的動作:

1.射擊:

射擊是這種遊戲的最核心的玩法,當然是必不可少的。

2.換彈:

射擊消耗的是子彈,那麼也就是說我們再彈夾内子彈消耗殆盡的時候,我們需要做的操作就是換彈夾,這也是必不可少的。

3.換槍:

小編這裡開發的項目複刻的是CS這個遊戲,也就是說我們可能手上不止一把槍,那麼換槍操作也是必不可少的。

4.死亡:

我們的血量不是無限的,是以在被命中受傷的時候如果血量到0以下了我們就會死亡,這也是必不可少的。

好了,可能用心的朋友發現我們上面每說一條都會說必不可少這個詞語,對,沒錯,其實完成一個FPS遊戲我們還可以對其 加入一些更多的操作,比如跳躍,甚至是像COD和絕地求生一樣貼近牆面時的翻牆動作,這些小編這裡就不再對其邏輯進行贅述了,有興趣的小夥伴可以自己去試試。

現在我們就開始進行開發,這幾個動作我們要如何進行處理呢?其實很簡單,給我們每個角色兩個變量,一個血量,一個子彈數,然後當角色開始射擊的時候,消耗子彈,當子彈打完的時候進行換彈操作,被命中後角色開始減血量,當減到0以下就死亡,之後角色就不能做任何動作,過一會兒銷毀角色。

聽起來是不是很簡單?小編一開始就是這樣想的,因為是自己開發,小編也沒有做寫文案,做測試,備份,版本控制這些開發正常操作,提着鍵盤就開始幹……然後一運作,一萬個BUG……

這裡我們先說下射擊,小編在對射擊的處理時,命中的判定是看準心位置的,換個說法,其實命中判定是看目标是否在我角色攝像頭的真中心,而不是看目标是否在我槍前面。其實這個問題是很多遊戲中都有,我們射擊時子彈到底應該是從槍口出還是從攝像頭中心出,這個問題當我們在牆邊時尤為展現的突出,有時候在角色面前有一個和搶高度等高的牆面,但是我們第一人稱的視角的準心并沒有被牆面擋住,那麼這時要怎麼處理呢?這裡我們可以看看目前一些比較優秀的FPS是如何處理的,首先是彩虹六号,這個遊戲很多網友都在調侃它是用瞄具在射擊,隻要我們能瞄到的地方就能達到,不管是否槍口被牆面堵住;再來就是絕地求生,這個遊戲當我們在牆體前面時,也就是準心和槍不在同一個位置的時候,會有一個收槍的動作,是以我們在牆體前時,會出現我們能看見目标,卻不能射擊的情況。

舉這兩個例子,小編就是想說明對這個子彈出點的說明,當然出于真實,小編更傾向于後者,這個小夥伴可以根據實際情況進行調整。

講完射擊我們再來看下另外兩個操作,換彈和換槍,因為沒有做過多的考慮,小編的這兩個操作也就完成了動作,結果……我在射擊的時候按了一下換彈,發現居然槍還在開槍……按理來說我們一按換彈,開槍就應該會停止才對,不止如此,在換槍的時候也是這樣……

當然這還算比較好解決的,我們隻需要在換槍和換彈的時候調用一下我們開發的松開左鍵的操作,也就是停止射擊。

這兩個操作這就好了嗎?我們再仔細分析,換槍操作是随時都能按的,但是換彈操作是随時都能按的嗎?當然不是,如果我們正在換彈或者正在換槍,這個過程肯定是不能再進行換槍操作的,否則一直按R就會一直播放換彈的鬼畜動畫……行吧,小編又加上了對換槍和換彈的時間判斷來處理這個問題,說到換槍可以随時按這裡,小編又發現了一個BUG,因為小編在對換彈的操作編寫的時候的邏輯是先把子彈換好再進行換彈的動作,那麼當我們用換槍的動作終止換彈時應該就沒有換好子彈,行吧,這其實也算比較好解決的,隻需要把子彈這個變量更新填滿這個操作換到動畫放完時就行了。

繼續閱讀