世界坐标转屏幕x坐标还好 网上有大把教程 但是对y坐标要么是讲的笼统 要么是没讲
苦苦琢磨 算是搞懂了Y坐标的转换:
上图中∠a为玩家仰视角 (该图中假设该角为0°)
OB为视线 ∠BOA(coe) 为玩家仰角
D点为敌人
Z为敌人与玩家的Z轴差距
OD为敌人与玩家的二维距离(可由玩家和敌人的三维坐标xy相减 计算求得)
上图假设∠a为0° 那么ce的距离通过tan便可求得
ce:oe=tan(∠a)
oe可以通过fov角 和屏幕宽度计算求得
有tan(∠a) = ce\oe = ce = tan(∠a度数*PI/180)*oe ==>ce
在上图中假设∠a为0° 那么ce长度也为0
求ef:
已知OE Z(DA) OD 的长度 求ef
DA/OD=tan(∠eof)
ef = tan(∠eof)*OE
hf(屏幕Y) =hc(屏幕高度一半)+ ef+ce =hc(屏幕高度一半) + tan(∠eof)*OE + tan(∠coe(玩家仰角))*OE
然后看这张图就好看多了: