2016-04-14 46 views
0

理貨浩傢伙,計算角度,XYZ +旋轉和我的敵人他的XYZ +旋轉[線性代數]

這個問題考慮了線性代數的領域中數學一個地方,我功虧一簣,以解決這個問題。所以我希望你們能幫助我:D。

我想創建一個單人自動踢球者的作弊遊戲稱爲安裝和刀片。這個自動踢球者的目標是始終用數學的力量成功踢出球員。由於互聯網的幫助(aimbot,esp,...),我設法實現了許多目標,但現在我有點被卡住了,因爲我不知道足夠的線性代數來獲取角度等等。這些是我擁有的東西

  • 我的XYZ(播放位置)

  • 旋轉從座標開始(0,0)弧度轉換爲度(-180; 180)

  • 敵人XYZ和旋轉

如果距離小於 1浮標且玩家位於另一位玩家的前方,則玩家可以成功踢出另一名玩家。因此,爲什麼我需要計算我所看到的方向與敵人XYZ之間的角度。我會在油漆畫什麼I want to achieve.

enter image description here http://i.stack.imgur.com/0SVfW.png

These are the values displayed in game首先是計算的下一個距離敵人旋轉和最後一個是我的旋轉。我認爲輪換是在0,0現場完成的

任何幫助表示讚賞和獎勵與一個巨大的讚許:D!

float Distance(D3DXVECTOR3 vector1, D3DXVECTOR3 vector2) 
{ 
    return sqrt(pow((vector1.x - vector2.x), 2) + pow((vector1.y - vector2.y), 2) + pow((vector1.z - vector1.z), 2)); 
} 

bool AutoKick() 
{ 
    for (size_t i = 0; i < cPlayerBase.size(); i++) 
    { 
     float DistanceToLocalPlayer = Distance(cPlayerBase[i]->vec, mainPlayer.vec); // vec is X Y Z 
     float number = Rad2Deg(atan2(cPlayerBase[i]->vecRotation[1], cPlayerBase[i]->vecRotation[0])); // X Y rotation 

     if(cPlayerBase[i]->address == mainPlayer.pointer) 
     std::cout << "My degree -- " << number; 
     if (DistanceToLocalPlayer != 0.0f) 
     { 
      std::cout << "Enemy Distance -- " << DistanceToLocalPlayer << "Enemy degree -- " << number; 
     } 
     std::cout << std::endl; 
    } 

    return true; 
} 
+0

本主題將在遊戲或數學交換團隊中獲得更多的關注。 –

+0

試過數學沒有人迴應:(我不認爲遊戲開發者對於作弊是非常有幫助的,即使對於單人遊戲 –

+1

對於我而言,你並不完全清楚你在問什麼,但它聽起來像你想計算兩個3d向量之間的角度。使用餘弦的[幾何定義]](https://en.wikipedia.org/wiki/Dot_product#Geometric_definition)。 – Praxeolitic

回答

3

將點積視爲捕獲兩個向量的「相似性」。兩個完全平行的向量的點積等於它們幅度的乘積,在相同方向上「有點」指向的向量具有正點積,恰好垂直向量沒有公共分量並且具有點乘積0,向量點相反方向上的「有點」具有負的點積,並且兩個正好反平行的矢量具有等於其幅度的負積的點積。

要查看一個玩家是否在另一個玩家的前面,請創建一個指向第一個玩家正在查看的方向的矢量,並指定另一個矢量指向第一個玩家的方向。如果他們的積分是積極的,則第二個玩家在第一個前面。也就是說,第一個玩家正在看的方向上的矢量類似於從第一個玩家到第二個玩家的矢量。

沒有必要明確計算角度。

+0

就是這樣。 @Mercenary_Frank一旦你得到它的工作,一定要迅速取締,騙子;) – MichaelHouse

+0

我討厭騙子,我不使用這個破壞其他人的樂趣,但簡單地笑起來,當我對我的一個隊友。我的享受在於建立這樣的程序,而不是將它用作服務器中的混亂。製作這樣的程序確實能幫助我在數學上取得更好的成績,否則我完全不會擅長用魔法貓來回答這個問題:D!也這個作弊是開源的github https://github.com/FrancescoVentura/Mount-and-Blade-Internal-ESPCheat –

+0

@Praxeolitic你能給我一個公式我試過'長度(球員)*長度(敵人)* COS (Rad2Deg(rotation))'就像它在wikipage上說的那樣,但它不會給出正確的結果:( –