13323765173 发表于 2018-7-21 12:37:51

《天涯明月刀》狩猎百发百中


天涯明月刀狩猎玩法及其类似于FPS游戏即3D射击所以同样拥有 自动瞄准功能和爆头功能想达到百发百中我们就要精准的计算出3D朝向值http://gslab.qq.com/data/attachment/portal/201711/29/160132uq2tv5q2zkevm7b5.png 读取人物坐标遍历怪物,读取怪物坐标比较简单,不过多陈诉 朝向自然而然一定是我们和敌人的坐标计算出来的那么怎么计算的呢?我们抓取射击封包(3个封包 都需要朝向值)http://gslab.qq.com/data/attachment/portal/201711/29/160137g44f4dqhdnh6pyfd.png发现封包里面有3个朝向值x,y,z都是浮点型的   都是-1 到1 的值 3个朝向值表示3D朝向的话并且都是-1到1那么这3个值不可能是X,Y,Z的3方向角度 只有两种可能(当然我们也可以追踪封包参数来源 也会发现同样的算法)第一种 角度-π 到π换算成 -1 到1 经过多次 测试发现不是第二种 以自己为球心画一个半径为1的球   我们和怪物连线和球的交点 即为这3个朝向值这是由于2D游戏多采用半径1圆交点的算法我们才会想到 当然直接理解3D的过于抽象我们可以先看看以往2D游戏惯用的1半径的圆交点朝向算法http://gslab.qq.com/data/attachment/portal/201711/29/160132bi9zae5i115vih24.png 3D游戏不过是在这个基础上增加Z坐标系    圆变成球而已当然正常PFS游戏一般朝向值是两个   即数学上常用 的   俯冲角和摇摆角 ,而旋转角对于射击是不影响的,我们人物也不可能 头朝下脚朝天。 知道了这些 计算出3个朝向值直接填入封包即可自动瞄准,百发百中了 首先 距离=sqrt((X人物-X怪物)*(X人物-X怪物)+(Y人物-Y怪物)*(Y人物-Y怪物)+(Z人物-Z怪物)*(Z人物-Z怪物))然后通过相似三角形计算出交点的3个坐标1/距离=X朝向/(X怪物-X人物)X朝向=(X怪物-X人物)/距离Y朝向=(Y怪物-Y人物)/距离Z朝向=(Z怪物-Z人物)/距离 ps: 封包中和逆向的算法中发现Z值填写的是Z朝向/2   为了起到简单加密?不得而知

页: [1]
查看完整版本: 《天涯明月刀》狩猎百发百中