前情回顾
FPS方框透视辅助开发教学1:数据挖掘和基本绘制
https://www.52xuejishu.com/forum-post/337.html
FPS方框透视辅助开发教学2:编写代码读取玩家数据
https://www.52xuejishu.com/forum-post/339.html
想学习游戏辅助开发没地方?
来这里,我们有基础版299和专业版2024
【基础版】包含4套教学,赠送价值158过检测过保护CE
B站平台可直达下单,手机访问效果最佳
包含:
学习游戏安全,加入游戏安全逆向基础版社区,现在优惠价299
游戏安全逆向:入门科普大全解
https://study.163.com/course/courseMain.htm?courseId=1212474809&share=2&shareId=1020678503
游戏安全逆向工程师:CE基础
https://study.163.com/course/courseMain.htm?courseId=1209141829&share=2&shareId=1020678503
C语言0基础入门游戏辅助开发实践
https://study.163.com/course/courseMain.htm?courseId=1213365801&share=2&shareId=1020678503
易语言0基础游戏辅助电脑脚本开发(正在更新ing)
https://study.163.com/course/courseMain.htm?courseId=1213780852&share=2&shareId=1020678503
优惠下单链接,学习游戏修改作弊、辅助脚本开发、飞天遁地透视自瞄辅助技术,您的最佳选择:
平台下单地址https://mall.bilibili.com/neul-next/detailuniversal/detail.html?isMerchant=1&page=detailuniversal_detail&saleType=10&itemsId=11262567&loadingShow=1&noTitleBar=1
下单后承诺以上四套内容全部开通在网易云课堂、永久观看时效、指导答疑
下单后即赠送过网络游戏检测保护的CE游戏修改器一套(价值158)
【专业版】包含12套教学,内容更多,工具更丰富,详情联系i-xiaodi
算法分析
2D 平面数据分析
我们站在游戏中,想象我们第三人称从天上看
做如下的连线,我们可求得的数据:
a 边、b 边、c 边
同时由于 tanα = 对边/临边 = b/a
所以通过求反正切 α₀ = arctan(tanα) 求得α
由于我们有鼠标的角度,所以鼠标角度 β-敌人 x 轴偏角 α = 自身和敌人的夹角 γ
同时 sinγ = d / c(已知)
cosγ = 临边 / c(已知)
此时,几乎 2D 平面下的所有数据我们都拿到了
3D 坐标到二维屏幕
由于我们现在找到的坐标都是基于上帝视角的 3D 坐标运算的
所以现在我们要建立起一个和屏幕的长宽的联系
我们从屏幕下方中心向前看去,构建一个和屏幕长度一致的三角形
红色线构成的角,看似不是 90 度,实则是 90 度,这个概念叫做视场角FOV (field of view) ,大部分游戏都是 90 度的视场角
所以右边的三角形是一个等腰直角三角形
此时可以设想一个比值关系 x/y * 512 = 1 * 512 = 512
由于 d 边/e 边对应的就是 x/y 的关系
所以 d/e * 512 就可以得到 d 边对应到屏幕上的长度
最终 512 + d/e * 512
== 敌人在屏幕上的横坐标
测试代码
//计算相关
float 敌我相对X, 敌我相对Z, 二维距离;
敌我相对X = enemyX - myX;
敌我相对Z = enemyZ - myZ;
二维距离 = sqrt((敌我相对X*敌我相对X)+(敌我相对Z*敌我相对Z));
float 敌人偏角;
float 鼠标朝向和敌人夹角;
//判断象限
if (敌我相对X > 0 && 敌我相对Z > 0)
{
//第一象限
敌人偏角 = atan(fabs(敌我相对Z/敌我相对X)) * 180 / 3.14;
鼠标朝向和敌人夹角 = Angle_me_X - 敌人偏角;
printf("[data]:敌人偏角->:%.3f 鼠标朝向和敌人夹角->:%.3f \n\n", 敌人偏角, 鼠标朝向和敌人夹角);
float 敌人屏幕粗略坐标边长 = sin(鼠标朝向和敌人夹角 * 3.14 / 180) * 二维距离;
float 敌人屏幕粗略敌我相对Z = cos(鼠标朝向和敌人夹角 * 3.14 / 180) * 二维距离;
DrawString(512 + 敌人屏幕粗略坐标边长 / 敌人屏幕粗略敌我相对Z * 512, 384, TextCOLOR, "敌人在第一象限");
}
测试图
测试视频
结语
至此,我们完成了一个极简版本的方框透视,只绘制出敌人的X坐标在屏幕上
其他未完成的工作:
1.敌人纵坐标的绘制
2.其他象限的坐标分析
例如第二象限,此时敌人偏角 > 自身鼠标角度,又该如何计算呢?
且听下回分晓
没有回复内容