Fail 发表于 2020-10-24 17:51:50

FPS雷达绘制思路详解

本帖最后由 UPX1 于 2020-10-24 17:53 编辑


FPS雷达绘制思路详解

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



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

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



假设设定的雷达长宽像素为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

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



其实很简单,从图中可知交叉点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。

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



然后你还可以在上面加上距离,绘制样式也根据自己的喜好随意绘画,好看的雷达就这么出来了 √

   发表于 2020-10-24 18:29:56

优秀 发表于 2020-10-24 21:04:51

和平有可以用的雷达了吗

风替我代劳 发表于 2020-10-28 14:28:10

这不是雪花发的么
页: [1]
查看完整版本: FPS雷达绘制思路详解