搜索
查看: 1370|回复: 4
收起左侧

[综合讨论] FPS雷达绘制思路详解

[复制链接]

签到天数: 75 天

[LV.6]常住居民II

发表于 2020-10-24 17:51:50 | 显示全部楼层 |阅读模式
本帖最后由 UPX1 于 2020-10-24 17:53 编辑


FPS雷达绘制思路详解

传统的绘制只能看清视野范围内的敌人,很容易忽略身后的敌人而被偷袭,这时候雷达就可以解决这一问题了,从上帝视角看清所有敌人的站点 √ 非常实用。

5d328bef-66ad-4d45-9154-06ac07daa750.jpg

那么改如何实现呢?其实很简单~

从内存中我们可以获得敌人的三维坐标xyz 以及 自身的三维坐标xyz,用来计算雷达绘制位置的话需要用到的信息只有:自身xy & 敌人xy,两坐标相减即可求得坐标差,重点就在于求出游戏坐标转屏幕像素的比值,如下图所示:

4db77199-dd6d-405c-8069-699a3937d733.jpg

假设设定的雷达长宽像素为500px,可视范围为100m

那么即可求得游戏坐标转屏幕像素比例为:

100/(500/2) = 0.4 : 1

基于游戏坐标的单位为毫米,所以我们还要乘以100 (1m=100mm),即游戏坐标转屏幕像素的比值为:40:1

然后可以就可以求出雷达绘制屏幕坐标啦!~

假设自身坐标为(1,1),敌人坐标为(5000,2500)

则屏幕坐标(x,y)为:

(5000-1)/40 ,(2500-1)/40

即 ≈ (+125px,+62.5px)

公式为:
X:(敌人x-自身x) / 游戏坐标转屏幕像素比值
Y:(敌人y-自身y) / 游戏坐标转屏幕像素比值

因为算出来的像素坐标是相当于雷达中心远点的坐标,所以我们绘制的时候还要加上远点的坐标。

即:假设雷达原点像素位置为 1000x1000

那么敌人红点坐标则为:1000+125 x 1000+62.5

然后问题来了,假设敌人不在我们设定的雷达视野范围之内,计算出来的坐标超出雷达边框范围,那么又该如何进行红点贴边运算呢?如下图所示:

423732b3-8e1b-400a-b815-7894bd10f767.jpg

其实很简单,从图中可知交叉点y为正方形长度的一半:250px,然后即可y从600变成250的比值为2.4,这时候x再处于这个比值即可求出√

500/2.4 ≈ 208

即交点坐标为:208 x 250

关键就是求出交叉的点在正方形的哪条变,如果在上下两条边,那么y固定为250,如果是左右两条边,则x固定250,那么该如何求出交叉点在正方形的哪条边上呢?

很简单,求x,y这两个值的绝对值哪个最大(因为计算过程存在负数,所以要先绝对值再比大小)

如果x>y,则x固定250。
如果y>x,则y固定250。

这样,即可求出超出视野范围内的雷达红点坐标啦!~

8980ee13-9b99-445c-8781-e1b4cf23792d.jpg

然后你还可以在上面加上距离,绘制样式也根据自己的喜好随意绘画,好看的雷达就这么出来了 √
4db77199-dd6d-405c-8069-699a3937d733.jpg
423732b3-8e1b-400a-b815-7894bd10f767.jpg
8980ee13-9b99-445c-8781-e1b4cf23792d.jpg




上一篇:V二ray 89个节点
下一篇:PC百度网盘破解版下载地址,以及我要说的话
头像被屏蔽

该用户从未签到

发表于 2020-10-24 18:29:56 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-10-24 21:04:51 | 显示全部楼层
和平有可以用的雷达了吗
回复 支持 反对

使用道具 举报

签到天数: 91 天

[LV.6]常住居民II

发表于 2020-10-28 14:28:10 | 显示全部楼层
这不是雪花发的么
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册用户

本版积分规则

快速回复 返回顶部 返回列表