首页 > 技术文章 > 007根据矩阵基地址绘制方框

xeclass 2020-03-17 12:47 原文

1

有了矩阵的基地址以后就可以读取矩阵的值放入数组中
ReadProcessMemoryWorld (进程句柄, 矩阵基地址, ViewWorld [1] [1], 64, 0)

2

有了ViewWorld数组就可以吧世界坐标转换为屏幕坐标

相机Z = ViewWorld [3] [1] × 其他人坐标.X + ViewWorld [3] [2] × 其他人坐标.Y + ViewWorld [3] [3] × 其他人坐标.Z + ViewWorld [3] [4]
缩放比例 = 1 ÷ 相机Z
相机X = 视角宽 + (ViewWorld [1] [1] × 其他人坐标.X + ViewWorld [1] [2] × 其他人坐标.Y + ViewWorld [1] [3] × 其他人坐标.Z + ViewWorld [1] [4]) × 缩放比例 × 视角宽
相机Y = 视角高 - (ViewWorld [2] [1] × 其他人坐标.X + ViewWorld [2] [2] × 其他人坐标.Y + ViewWorld [2] [3] × (其他人坐标.Z - 3) + ViewWorld [2] [4]) × 缩放比例 × 视角高
相机Y2 = 视角高 - (ViewWorld [2] [1] × 其他人坐标.X + ViewWorld [2] [2] × 其他人坐标.Y + ViewWorld [2] [3] × (其他人坐标.Z + 80) + ViewWorld [2] [4]) × 缩放比例 × 视角高

3

有了相机X和相机Y以后,我们就可以绘制出方框了

.版本 2

    .如果真 (其他人血量 > 1)
        方框高度 = 相机Y - 相机Y2
        方框宽度 = 方框高度 × 0.5
        其他人距离 = 取整 (取_其他人距离 (本人坐标, 其他人坐标) ÷ 10)
        绘制矩形 (相机X - 方框宽度 ÷ 2, 相机Y2, 方框宽度, 方框高度, #红色, 2)
        方框坐标数据.左边 = 相机X - 方框宽度 ÷ 2
        方框坐标数据.顶边 = 相机Y2
        方框坐标数据.宽度 = 方框宽度
        方框坐标数据.高度 = 方框高度
        竖向血条 (方框坐标数据, 其他人血量, #绿色)
        绘制文本 (方框坐标数据.左边, 相机Y, “距离:” + 到文本 (其他人距离), #红色, 21, 255)
        绘制直线 (视角宽, 0, 相机X, 相机Y2, 2, #红色)

4

但是这里有一个问题就是你的视角前面有一个方框,视角后面也有一个方框,如何过滤掉它呢
在算出相机Z的数值以后进行一个判断

.版本 2

    ' 干掉出现两个方框的情况
    .如果真 (相机Z < 0)
        到循环尾 ()  ' break

推荐阅读