gpt4 book ai didi

c++ - 用 XYZ + 旋转计算角度,我的敌人用他的 XYZ + 旋转计算角度 [线性代数]

转载 作者:行者123 更新时间:2023-11-30 02:32:15 27 4
gpt4 key购买 nike

Tally-ho 小伙子们,

这个问题认为线性代数的艺术是数学中我无法解决的地方。所以我希望你们能帮助我 :D。

我正在尝试为一款名为《骑马与砍杀》的游戏创建单人自动踢球作弊。这个 autokicker 的目标是始终使用数学的力量成功地踢玩家。多亏了互联网(aimbot,esp,......)的帮助,我设法实现了很多事情,但现在我有点卡住了,因为我不知道足够的线性代数来获得角度等。这些是我拥有的东西

  • 我的 XYZ(玩家位置)

  • 从坐标(0,0)开始的旋转弧度转换为度数(-180;180)

  • 敌人 XYZ 和旋转

如果距离小于,一名球员可以成功踢另一名球员1 个 float ,玩家在另一个玩家的前面。因此,为什么我需要计算我正在看的方向和敌人的 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;
}

最佳答案

将点积视为捕获两个 vector 的“相似性”。完全平行的两个 vector 的点积等于它们的大小的乘积,“稍微”指向同一方向的 vector 具有正点积,完全垂直的 vector 没有公共(public)分量并且点积为 0, vector 点相反方向上的“有点”具有负点积,而两个完全反平行的 vector 的点积等于它们大小的负积。

要查看一个玩家是否在另一个玩家的前面,请创建一个指向第一个玩家注视方向的 vector ,并创建一个从第一个玩家指向第二个玩家的 vector 。如果他们的点积为正,则第二个玩家在第一个玩家前面。也就是说,第一个玩家注视方向的 vector 类似于从第一个玩家到第二个玩家的 vector 。

无需明确计算角度。

关于c++ - 用 XYZ + 旋转计算角度,我的敌人用他的 XYZ + 旋转计算角度 [线性代数],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36633667/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com