FPS遊戲的方框透視 自瞄原理

2021-10-06 21:12:39 字數 2260 閱讀 8357

一,自瞄

準備工作:

計算工作:

二,方框透視

準備工作:

計算工作:

一,自瞄

基於所有的fps遊戲,都有乙個人物結構,包含人物在地圖上的三維座標,人物的準心資料。

而實現記憶體自瞄就是通過查詢自己和敵人之前的三維座標資料,將三維座標資料轉換為二維的準心資料。

準備工作:

1.查詢人物的三維座標資料:

以cs為例子,進入遊戲搜尋未知的初始值,一般找乙個有箱子或者地勢有高低差的位置,先查詢z座標資料(在遊戲中一般x,y,z座標是挨著一起的+0,+4,+8的關係),跳到箱子上或走向更高的位置,搜尋增加的數值,減少高度搜尋減少的數值(浮點型),重複最後找到座標的基址。

2.查詢滑鼠的準心座標資料:

一般遊戲鼠標準心y座標向上會減少,遊戲鼠標準心向下會增加,這樣就可以搜尋到滑鼠的準心y座標,-4一般就是x座標。

3.遊戲的俯仰角,偏轉角,翻滾角:

俯仰角:用cs舉例就是抬頭或者低頭的時候角度變換,轉換到遊戲的準心資料就是準心y,一般遊戲為-90° — 90°的範圍

偏轉角:cs中就是人物視角轉動,比如打轉,這個便是遊戲的準心資料的x,一般遊戲是0° — 360°

翻滾角:這個舉例就是吃雞裡面的左右搖頭角度變換

計算工作:

計算出敵我的x差值 x,以及y和z的差值y,z。

1.計算出準心的x偏轉角度:

通過arctan(y / x)就可以計算出角α的大小,這裡可能會想到α的角度在一三和二四象相的tan都一樣的情況:

那麼在2象相:

用反正切函式計算出的角度是乙個負數,這個時候就應該加上乙個180°,得到正確的角度值。

同樣在三象限得到的α值是乙個整數,但是應該加上180°才能得到β的正確角度。

2.計算出準心的y 偏轉角度:

因為這是乙個三維空間,所以就拿正方體求斜邊一樣,要先求到二維距離(sqrt(x²+y²))在根據z求到角度值:

通過arctan(z / 二維距離)可以求得α角大小,這個時候要判斷遊戲向上俯仰角是減少還是增加,在cs中向上為負數,向下為整數,所以這個α就是乙個負的角度

3.移動鼠標準心

求得了以上的兩個角度資料之後,修改準心資料為求得的角度資料,就可以實現自瞄。

二,方框透視

方框透視同樣需要敵人與自己的座標資料以及準心資料,只是將這些資料進行轉換為二維的螢幕座標資料。

準備工作:

1,攝像機視角概念:

在3d遊戲中攝像機視角:

遊戲中攝像機的作用就是移動將攝像機視角中的三維空間中的內容投影到乙個平面上,然後顯示給玩家**。

2,fov視場角:

就是攝像機和螢幕的夾角,為fov,視場角,我們比如cs遊戲中準心在螢幕中心起始就是在fov角的一半位置。

而攝像機對應的螢幕大小就是顯示給我們的解析度大小,比如1024*768就是長和寬的大小,而當fov為90°時候,準心中間與螢幕的垂線構成等邊45°直接三角形,這個時候攝像機到螢幕的距離就是一半螢幕長度的大小,要實現方框透視就要將求得的x,y,z座標資料以及準心資料轉換為在螢幕上的座標,從而實現畫方框。

計算工作:

1,計算出在螢幕上的方框x座標:

由圖分析可以知道:

x / b = y / a ----》 b = x / y * a

而 x / y就是tan α 的值,a就是一半螢幕長度的值 * 90 / fov,所以重點就是求α。

α角是鼠標準心x角度和自己和敵人的夾角β的差值(在fov的左邊應該為負數,這樣算出來的tan才是負數,最後加上一半距離才是正確的螢幕座標x),這個很容易就求得。最後還應該加上螢幕的另一部分,結果就是在螢幕上的x座標,最後的公式如下:

x_pos = tan α * (螢幕座標長度一半)* (90° / fov)

1,計算出在螢幕上的方框y座標:

α角就是滑鼠的y角度資料,這裡要和遊戲中的相反,向上應該是正,因為這裡要求長度。

a還是攝像機和螢幕的距離:

則有:(c+z) / high = c / tan α / a + 一半的螢幕高度 ( a就是一半螢幕長度的值 * 90 / fov )

最後可以求得:

座標y = (tan α + tan β)* a + 一半螢幕的高度

通俗一點的理解就是:

座標y = (tan 滑鼠y角度(向上為正,向下為負) + tan 敵我y夾角)* 一半螢幕長度 * 90 / fov + 一半螢幕高度

最後:求得了螢幕的x,y座標,就能繪製三角形了,至於方框縮放問題,距離越遠方框越小,所以我用反函式來實現,自己遊戲中取兩組三維距離和方框長度匹配的資料,計算一下k就行。

FPS 遊戲自瞄原理

經常玩遊戲的朋友,應該知道fps遊戲,例如 穿越火線,逆戰等等,他們的特點就是以第一人稱視角進行操作人物,螢幕中間會有乙個準星,通過準星瞄準敵人進行攻擊以達到擊殺效果和遊戲體驗。由於fps遊戲的特殊遊戲體驗,所以使得很多不法分子利用逆向知識開發了很多自動瞄準的工具,破壞了遊戲平衡。具體的原理如下 1...

FPS遊戲通用自瞄與透視演算法詳解!!

1 首先我們要找到乙個敵人的三維座標。2 我們還要找到自己的三維座標。3 我們還要找到自己的滑鼠座標x與y 這裡的滑鼠座標x與y是角度,x為360,y正中間為0向上減少到負90度,向下增加到90度 第一步 首先我們要計算自己與敵人座標之間的差值,這裡我們首先不考慮z座標 這裡的i代表自己的位置,e代...

FPS遊戲通用準星修正實現自瞄

fps遊戲內的十字瞄準視角其實就是乙個視角攝像機這個應該不難理解吧,如何調整攝像機的視角就要用到乙個叫 姿態角 euler角 的資料,即 yaw pitch roll。這3個值的解釋如下 pitch是圍繞x軸旋轉,也叫做俯仰角 yaw是圍繞y軸旋轉,也叫偏航角 roll是圍繞z軸旋轉,也叫翻滾角 用...