gpt4 book ai didi

c++ - 使用 X、Y 和 Z 查找 Y 角度

转载 作者:太空狗 更新时间:2023-10-29 21:11:55 24 4
gpt4 key购买 nike

我目前正在使用这段代码:

struct vec3_t
{
public:
float x, y, z;
};

vec3_t Subtract(vec3_t src, vec3_t dst)
{
vec3_t diff;
diff.x = src.x - dst.x;
diff.y = src.y - dst.y;
diff.z = src.z - dst.z;
return diff;
}
float Magnitude(vec3_t vec)
{
return std::sqrt(vec.x * vec.x + vec.y * vec.y + vec.z * vec.z);
}
float Distance(vec3_t src, vec3_t dst)
{
vec3_t diff = Subtract(src, dst);
return Magnitude(diff);
}
vec3_t CalcAngle(vec3_t src, vec3_t dst)
{
vec3_t angles;
angles.x = (-(float)std::atan2(dst.x - src.x, dst.y - src.y)) / PI * 180.0f + 180.0f;
angles.y = (std::atan2(dst.z - src.z, Distance(src, dst))) * (180.0f / PI);
angles.z = 0.0f;

printf("%f - %f\n", src.z - dst.z, angles.y);


return angles;
}

但是,当 z 值的增量增加时,我的角度无法完全发挥作用。角度缺乏陡度,瞄准目标位置上方。

但是,当 Z 轴的 delta 小于 20 时,角度会起作用并瞄准我想要的玩家。

我这里有一些例子:

当增量非常小时

Pic of aiming of bot

当增量很大时

Pic of missing bot

P.S 我从下面调用这一切

vec3_t CurrentPos;
CurrentPos.x = x.ReadMemory<float>(LocalPlayer + PlayerOffsetList["PosX"]);
CurrentPos.y = x.ReadMemory<float>(LocalPlayer + PlayerOffsetList["PosY"]);
CurrentPos.z = x.ReadMemory<float>(LocalPlayer + PlayerOffsetList["PosZ"]);

vec3_t EnemyPos;
EnemyPos.x = Enemy.Posx;
EnemyPos.y = Enemy.Posy;
EnemyPos.z = Enemy.Posz;

vec3_t Result;
Result = AimbotMath.CalcAngle(EnemyPos, CurrentPos);

x.WriteMemory<float>(AddrList["ViewX"], (Result.x + 90.0f));
x.WriteMemory<float>(AddrList["ViewY"], Result.y);

最佳答案

假设,在您的 CalcAngles 方法中,x 是偏航角,y 是俯仰角:

vec3_t CalcAngle(vec3_t src, vec3_t dst)
{
vec3_t angles;
vec3_t delta = Subtract(dst, src);
angles.x = -(float)std::atan2(delta.x, delta.y) / PI * 180.0f + 180.0f;
//zero out the z to get the *horizontal* distance
vec3_t horizontal = delta;
horizontal.z = 0;
angles.y = std::atan2(delta.z, Magnitude(horizontal)) * (180.0f / PI);
angles.z = 0.0f;

printf("%f - %f\n", delta.z, angles.y);


return angles;
}

请注意,我留下了您的 xy 的顺序,以及 180.0f 的偏移量,因为我认为它是正确的供您引用观点。通常 atan2 采用 (y, x)

关于c++ - 使用 X、Y 和 Z 查找 Y 角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48930606/

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