二、Camera
在我入行之前,camera是我很難理解的一個概念,很難理解是怎么工作的,現在其實也沒玩明白,個人感覺這也是目前國內游戲行業和一線廠商差距最大的地方,震屏拆解雖然很抽象,但努把力大家也能做一下,可是更精致的鏡頭運用需要大量的影視化知識,學海無涯了屬于是。
在FPS游戲中,camera包含鏡頭本身和HUD兩大部分,鏡頭常用到的功能大概會有三類,鏡頭控制(偏移、旋轉、俯仰、推拉、縮放)、交互鏡頭/運鏡演出和后處理(景深、鏡頭特效等),HUD我們在這里只聊和打擊感有關的部分。
1. 鏡頭
1.1 鏡頭控制
1.1.1 偏移、旋轉與俯仰

爆炸震屏

Camera偏移、旋轉、俯仰
無論看起來多復雜的屏幕震動,小到槍械檢視時從上到下看槍,大到炸彈在身邊爆炸,都是由鏡頭X/Y/Z軸的偏移/旋轉曲線構成的,但每條曲線變化的頻次、振幅、衰減、剛性、是否疊加隨機噪波等,疊加出來的結果會千差萬別。
還會遇到兩個問題:
- 關鍵幀/小數幀對不齊:復刻某些端游表現的時候會出現,端游使用60幀動畫,而自己的編輯器只有30幀,部分關鍵幀丟失導致效果不好
- 引擎/編輯器曲線導入問題:3DMAX調試完畢進編輯器變成曲線,關鍵幀之間插值變化不可控或其他原因導致還原程度低,總覺得只是形似而神韻不在
設計上不直觀+參數多+工具易用性問題,導致震屏曲線是一個很難調好的技術活,salute to 所有3D動作兄弟。

開火震屏
鏡頭控制上需要注意的是,部分動作的鏡頭動畫是不能疊加偏移和俯仰的,例如開火動畫,因為子彈是從鏡頭中心射出,為了避免對子彈的彈道產生影響,開火的鏡頭動畫只能做XY軸平面的旋轉。
1.1.2 推拉與縮放

武器舉鏡的場景FOV變化
![]()
CODM持槍FOV0&100對比
FPS游戲中會將場景FOV和武器FOV相分離,避免某些情況下調整FOV影響武器表現的問題。
縮放也是通過調整FOV來實現的,通過調整場景FOV模擬出不同倍鏡的放大效果,圖示為舉鏡情況下場景FOV的變化和設置中手動調整武器FOV的變化。
![]()
鎖HFOV的和平精英
FOV還涉及到一個不同設備(手機/pad)的鏡頭顯示范圍規范,需要決定采用HFOV或是VFOV,個人建議是:
- 鎖定VFOV:保證不同設備上下視界一致,適用于存在大量高低差作戰的游戲,避免由于屏幕比例不同獲取更多高低差信息導致不平衡
- 鎖定HFOV:保證不同設備左右視界一致,適用于偏地面作戰高低差有限的游戲,方形屏幕的可見區域會更多,但相對畸變更嚴重
也有更暴力的法子,有些游戲為了限制平板的強度,同FOV的情況下會縮小平板的視野,這個看項目組需要。

跳躍過程的彈簧鏡頭變化
至于推拉,FPS游戲中,常規鏡頭沒辦法加搖臂,畢竟鏡頭模擬的是本人的視野,但有一些特殊情況下會切換,例如命運2當中的翻滾,不過這個不涉及鏡頭控制,更像是運鏡演出了,后面會提到。
圖示中的鏡頭搖臂的推拉效果,鏡頭拉遠再到拉近,能使整體的位移更加生動。
如果要做的更極致一些,還可以疊加FOV的變化,例如warframe的速度越快FOV越大的設計。
![]()
warframe的FOV與速度掛鉤
1.2 交互鏡頭/運鏡演出
純粹的運鏡演出往往是做沉浸感和場景敘事需要,舉個例子:

大家最喜歡的上泰坦
還有許多經典鏡頭,例如荒野之息開塔,圣歌上戰甲之類的,玩家按下按鈕之后播放一段流暢的運鏡演出(1P或者3P),能夠大幅增加游戲過程中的沉浸感,這類鏡頭做的時候注意記錄camera的狀態,計算好淡入淡出時間,做好插值即可,但播放的演出鏡頭需要下大功夫。
為了強化打擊感的運鏡演出,比較成功的例子是命運2處決和翻滾、COD系列的處決。

命運2處決

雙腳懸空的處決
順便提一下,類似于處決、翻滾或是一些帶位移的切換3P鏡頭的技能表演,需要考慮的除了相機位置朝向/狀態,淡入/淡出時間、表演鏡頭本身以外,還需要額外考慮位移因素、施放過程中的打斷條件、傷害上報等等邊際條件。
以COD的處決為例:
- 處決的觸發條件:玩家與敵方目標的位置判定,距離閾值/高度差閾值,敵方目標身后距離的限制
- 處決過程中人物會涉及到強制位移,位移的極限距離/插值時間,狀態的校驗何時進行
- 處決過程中受到傷害/震撼等是否打斷處決
- 處決過程中何時上報傷害完成擊殺
游戲交互中的鏡頭機制:這些特殊鏡頭技巧與運鏡方式,你了解嗎?
mp.weixin.qq.com/s/0QMuHjZgQot6dp6ZqzhTzA
如果對交互鏡頭和運鏡感興趣,還可以看看這篇文章,還列舉了一些其他的應用場景。
1.3 鏡頭處理
1.3.1 鏡頭遮罩
鏡頭遮罩是相對常見的類型,往往配合震屏一同出現,手雷爆炸、受擊、技能釋放之類的場景,能夠清晰構造打擊感和臨場感,COD低血量的黑屏、WZ被打碎裝甲的碎甲提示、APEX動力小子的針等等,很好用,但是很多時候提需求的時候會忘掉=。=。
![]()
戰地5瀕死鏡頭遮罩
1.3.2 鏡頭后處理
Post-processing是一個很強大的功能集合,這里只舉幾個和打擊感相關的實用范例。
射擊游戲通常會在玩家觸發某種狀態時,使用后處理來增強技能/狀態的表現,例如英雄的技能,或是使用夜視儀和其他道具。使用后處理的同時往往會對角色進行一定的強化,例如移速加成、射速變化之類的,清晰告知玩家“你變強了”。
目前國內的游戲用的還不多,大家都還在用后處理來表現功能差異,沒做打擊感相關的強化,也許是個突破口。
![]()
APEX惡靈/動力小子/尋血獵犬都有類似設計
![]()
PUBG夜視儀效果
![]()
賽博朋克2077掃描效果
還有一些游戲開啟技能后會產生弱化場景表現、高亮敵方目標之類的效果都能有效提升打擊感。
除了針對于關卡場景、角色做的統一處理,射擊游戲中還有一類相對獨特的處理形式,武器開鏡開火的情況下做景深處理,模糊掉照門位置,強化準心和準心周圍的目標,輔助玩家瞄準。
![]()
未做景深處理(照門、準心表現清晰)
![]()
景深處理(照門模糊、準心及目標清晰)
2. HUD
hud這個詞的來源是空軍的頭顯,常見的包含屏幕上的人物狀態提示、敵方狀態提示、命中提示、武器狀態提示、比分和地圖指示等,這部分內容也相當繁雜,工作過程中除了策劃,還有專業的UIUX同學一起來看。
這里討論打擊感相關的hud表現,所以純信息類的小地圖、挨打的受擊提示、任務指引、尋路等就不提了。
2.1 準心及動效
2.1.1 準心
準心hud主要提供兩個功能,協助玩家瞄準和武器狀態提示。
不同玩家瞄準過程中對于準心大小要求不同,點狀、十字、穩定/動態等等,射擊游戲發展到現在,準心自定義已經不再是什么新奇的功能。
![]()
valorant準心設置面板
在狀態提示上,絕大多數游戲,準心需要承擔告知玩家當前槍械散發的功能,從這個目的出發:
- 不同武器類型的準心需要有差異
- 準心在開火過程中的表現需要有差異
![]()
最小散發和最大散發的準心對比
![]()
手炮和火箭筒的準心對比
目前我印象里還沒有針對單把槍來設置準心的射擊游戲,將自定義+多種類結合,會更細致(試想一下瓦羅蘭特的警長可以設置圓形準心指示腰射范圍=。=)。
2.1.2 準心動效
涉及到打擊感相關,提最常見的兩類,命中反饋和彈量/換彈進度提示。
2.1.2.1 命中反饋
命中反饋上,我們簡單拆解下最經典的COD斜十字命中提示。
命中和擊殺分別為白色斜十字和紅色斜十字,同時會區分普通命中和爆頭。
![]()
逐幀截圖的斜十字準心
截圖的視頻是43幀/秒,總時長約0.37s,考慮到抽幀的可能,所以總時長約為0.4s,取24幀。
大致看來1——8幀為縮放旋轉階段、9——16幀為保持階段,17——24幀為淡化擴散階段。
比較有趣的是,在準心特效替換上,兩代MW使用了不同的解決方案。
![]()
兩代MW替換方式的差異(我拆的,不保真)
特效替換方式改變,最直觀的感受是MW2022的斜十字反饋更穩定,晃動表現基本由動效本身提供,不會像MW2019一樣不斷命中目標,動效不斷從頭播放,導致動效很難播完,反復在播前8幀。
(但是!我之所以喜歡玩COD,不就是圖打的爽么,圖一個每一發命中都有即時反饋么,我覺得這個改動不行)
2.1.2.2 彈量/換彈提示
![]()
APEXM彈量提示
我們在最近幾年看的彈量提示和換彈進度提醒大概是這樣的,準心右下角的弧形進度條:
- 66%以上時,顯示為白色
- 33%-66%時,顯示為黃色
- 33%以下時,顯示為紅色并伴隨閃爍特效
- 在換彈的過程中重播以上過程,進度條累計蓄滿的時間等同于邏輯換彈時間(換彈前搖)
我印象中很早之前在育碧的游戲見過之類的進度條設計,似乎是全境封鎖。
進度條這個東西肯定是有比沒有好,相對來說比純粹的數字彈量提示更直觀,但同時也有一個問題,即便做了換彈成功之后,進度條消失或是準心出現,整體的提示還是太弱了,玩家無法精確判斷完成換彈的時間節點。

換彈結束增加準心旋轉提示
同組的其他策劃大佬給我發過一個參考,在進度條消失基礎上,同時讓準心做了個動效提示,在顯隱邏輯的基礎上強化提示,圖示這個準心旋轉特效,甚至還拉了曲線的,不是插值的,真的細。
2.2 命中提示
除了準心位置的命中反饋,為了進一步強化命中體驗,可以新增命中跳字的設計。

CODM命中跳字
CODM是比較干凈的做法:
- 從子彈的命中位置出發,確定一個終點,播一個動畫;
- 命中弱點時字號和顏色做一個差異化
會有比較復雜的做法,文字上還可以帶更多信息和花樣,例如:
- 是否破甲
- 對方帶的什么甲
- 我命中的什么部位
- 武器屬性
- 疊加總傷害
- 跳字的動畫是否有區別/位置是否固定
項目組可以根據自己的需求來敲定。
![]()
APEX跳字
2.3 擊殺提示
![]()
CS1.5&CSGO擊殺提示
擊殺提示最早可以溯源到CS1.5時期右上角的擊殺信息提示,但即便到CSGO的年代,擊殺提示也沒有做花活,只在信息呈現、敵我處理上做了迭代,可能是為了使屏幕足夠干凈保障競技性。
目前HUD上常見的擊殺提示包括擊殺信息、勛章、文字提示。
![]()
瓦羅蘭特增加了頭像/底色等信息
![]()
要說瓦羅蘭特沒有參考過CF的勛章,我不太信
![]()
命運2日落擊殺/行為提示
COD系列的擊殺提示值得專門拎出來看,COD在勛章和擊殺文字信息上,都做了更深一步的迭代,從單純的擊殺信息告知,升級到了玩家行為的獎勵,從文字和勛章層面給足打擊感。

彈射黃字行為提示&角色連殺名片提示

COD:WWⅡ勛章
在不考慮畫面干凈程度,純粹讓玩家爽的程度來說,COD幾乎利用完了屏幕的任何一個邊邊角角。
2.4 人物信息/武器狀態顯示
![]()
APEXM底部狀態欄
這一塊內容其實比較固定,每款游戲都差不多,踩過兩個坑供大家參考下:
A. UE4的UI刷新會慢一幀,意味著當前幀你點擊開火,播放開火表現時,底部的UI狀態欄依然顯示是30發子彈,不要小看這一幀的差距,手感就是一幀兩幀的差異,需要客戶端做一個處理。
B. UI的幀率,盡可能在引擎支持的基礎上做高,提前預留好UI高幀率的性能空間。會有一些項目UI的幀率只有十幾幀,開火時你發現子彈是兩發三發這樣扣的,給人的感覺很差。
還有一個不算是坑了,算是個人建議:
盡量不要做幀數太長的UI特效。
例如某些從左到右刷新的光效,或者從點擊位置向四周擴散的光效,這類光效時間長了,玩家根本不清楚自己的點擊是否生效,何時生效,最后的體驗就是卡手,APEXM換彈子彈刷的這一下就很舒服,速度合適。
2.5 血條
血條涉及到兩塊內容:顯隱邏輯和增減表現。
2.5.1 顯隱邏輯
一般來說,血條的顯隱由以下三個因素決定:
- 槍械朝向的射線是否和敵方膠囊體重合,不建議用mesh做判斷,不然會有各種咯吱窩和胯下不顯示血條問題。
- 近期是否對該目標造成了傷害。
- 目標是否在視野范圍內。
在此基礎上,再去定血條出現和消失的表現,射線經過的殘留邏輯,受傷害的殘留邏輯就行。
預期是玩家掃過/對某個目標造成了傷害,只要在視野范圍內,就能及時顯示血條。
(把血條揭示距離作為屬性賣的,真的值得槍斃,哦他下一代沒血條了,那沒事了)
2.5.2 增減表現
增減表現更多和UI幀率、服務器傷害下發速度、客戶端能不能做預表現有關系。
我接觸到的主要卡點是,服務器下發傷害包的速度很慢,依賴于服務器傷害校驗的血條、命中跳字等都有延遲,處理起來很麻煩,還在想辦法。
核心訴求是保證玩家持續命中時,血條的下降是即時且流暢的,至于動效做成什么樣,要看UIUX爹怎么發揮。

泰坦隕落2血條表現
幀率高,表現好,我夢中的血條,泰坦隕落2永遠滴神。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.