瞎说一下易语言FPS游戏透视外部绘制(猜测加瞎说)

一直想学透视可惜学生党 穷 没钱买系统的教程 东凑西凑明白了点(记录一下省的忘了)这个涉及到了计算机图形学问题(当然我也不是相关专业的,不对的别喷 我是外行,又是东凑西凑自学成才的) 最后说一句谁留言骂我死妈!!!!!!!!!!!!!

说一下 行大矩阵和列大矩阵一般游戏就这两种把(我只说4x4其他的没看过

4x4行大矩阵就是 4行X4列 最后一行数值的绝对值 比前三行大很多 人物不转动鼠标走动时只有最后一行会动

(4x4行大矩阵代表游戏cs1.6)易语言代码说起那个矩阵转换 这是cs1.6部分代码C++自己找把毕竟易语言就是写挂的

ReadProcessMemory_小数型 (进程句柄, 矩阵基址, ViewWorld [1] [1], 64, 0)
视角宽 = 窗口宽 ÷ 2 视角高 = 窗口高 ÷ 2 相机Z = ViewWorld [1] [3] × 敌人X + ViewWorld [2] [3] × 敌人Y + ViewWorld [3] [3] × 敌人Z + ViewWorld [4] [3] ' 输出调试文本 (相机Z) ' 相机Z = -相机Z .如果真 (相机Z ≤ 0.01) 返回 () .如果真结束 缩放比例 = 1 ÷ 相机Z ' 相机x输出相对于游戏屏幕的人物x坐标(貌似是游戏屏幕左边距离人裤裆的x距离) , 相机y相当于游戏屏幕头顶坐标y 相机y2相当于输出电脑屏幕到人脚底坐标 相机X = 视角宽 + (ViewWorld [1] [1] × 敌人X + ViewWorld [2] [1] × 敌人Y + ViewWorld [3] [1] × 敌人Z + ViewWorld [4] [1]) × 缩放比例 × 视角宽 相机Y = 视角高 - (ViewWorld [1] [2] × 敌人X + ViewWorld [2] [2] × 敌人Y + ViewWorld [3] [2] × (敌人Z + 28) + ViewWorld [4] [2]) × 缩放比例 × 视角高 × 1 ' 相机的Y对于坐标而言就是Z ‘整体大小 相机Y2 = 视角高 - (ViewWorld [1] [2] × 敌人X + ViewWorld [2] [2] × 敌人Y + ViewWorld [3] [2] × (敌人Z - 55) + ViewWorld [4] [2]) × 缩放比例 × 视角高 × 1 - 20 ' 方框高度调整 方框宽高 = 相机Y2 - 相机Y ' 计算出方框高度 调试输出 (相机Z) 绘制矩形2 (相机X - 方框宽高 ÷ 4, 相机Y, 方框宽高 ÷ 2, 方框宽高, 1, #绿色) 绘制文本 (相机X - 方框宽高 ÷ 4, 相机Y, Name + “距离:” + 到文本 (取整 (Dis ÷ 100)), #红褐, ) 超级优化_ (6, )

ReadProcessMemory_小数型 (进程句柄, 矩阵基址, ViewWorld [1] [1], 64, 0) 这段代码是读入矩阵64是你矩阵的长度(应该是按字节算的,我觉得这个填大点也没关系,小了会出事)
ViewWorld [1] [1] 是你矩阵中第一行第一列内容的值 同理ViewWorld [1] [2] 第一行第二列的值

窗口高和窗口宽  是你游戏窗口的高宽度 

相机z    不知道怎么回事 (应该是根据你距离跟敌人远近导致敌人会缩小放大的)

相机Z = ViewWorld [1] [3] × 敌人X + ViewWorld [2] [3] × 敌人Y + ViewWorld [3] [3] × 敌人Z + ViewWorld [4] [3]  

缩放比例 = 1 ÷ 相机Z   不知道怎么回事

相机X 【是游戏屏幕到人物方框左边水平距离x,没到的话进行加减值使其达到】 (屏幕到裤裆的x坐标)
相机y 【是游戏顶端到人物方框顶部距离 ,没到的话进行加减值使其达到】 (屏幕到人物头顶y坐标)
相机y2 【是游戏顶端到人物方框地部距离,没到的话进行加减值使其达到】 (屏幕到人物脚底y坐标)

方框宽高 = 相机Y2 - 相机Y (这里计算的是方框高度)
绘制矩形2 ("左[小数型]", "顶[小数型]", "宽[小数型]", "高[小数型]", "px[小数型]", "Colour[整数型]")
绘制矩形2 (相机X - 方框宽高 ÷ 4, 相机Y, 方框宽高 ÷ 2, 方框宽高, 1, #绿色)
这里为什么要这么写?
第一个参数 (人是一个长方形!)我猜测方框高度除以4 左边的坐标减去他很合适 线跑到他的左边 你除以别的值也可以但是左边线的位置可能偏左或者右(大多数游戏一般线都很准)
第二个参数 明显是相机y
第三个参数 方框宽高/2 作为那个人的宽度(现实中人长成这样就有点丑了)
第四个个参数 就是你的方框有多高那就是方框宽高

--------------------------------------------------------------我的分割线-------------------------------------------------------------------

下面是4x4列大矩阵(代表游戏csgo)听说现在大多数游戏都是4x4列矩阵,毕竟我玩透视玩的少 (发现这个游戏行矩阵没法用  只能列矩阵也许是我找错了!!!)

不一样的就是一个矩阵怎么写矩阵代码如下

.版本 2

        ViewW = viewworld [3] [1] × 对象坐标.x + viewworld [3] [2] × 对象坐标.y + viewworld [3] [3] × 对象坐标.z + viewworld [3] [4]

        .如果真 (ViewW < 0.01)
            到循环尾 ()
        .如果真结束
        ViewW = 1 ÷ ViewW
        BoxX0 = SightX + (viewworld [1] [1] × 对象坐标.x + viewworld [1] [2] × 对象坐标.y + viewworld [1] [3] × 对象坐标.z + viewworld [1] [4]) × ViewW × SightX
        BoxY0 = Sighty - (viewworld [2] [1] × 对象坐标.x + viewworld [2] [2] × 对象坐标.y + viewworld [2] [3] × (对象坐标.z + 76) + viewworld [2] [4]) × ViewW × Sighty
        BoxY1 = Sighty - (viewworld [2] [1] × 对象坐标.x + viewworld [2] [2] × 对象坐标.y + viewworld [2] [3] × (对象坐标.z - 4) + viewworld [2] [4]) × ViewW × Sighty
        绘制矩形2 (BoxX0 - (BoxY1 - BoxY0) ÷ 4, BoxY0, (BoxY1 - BoxY0) ÷ 2, BoxY1 - BoxY0, 2, 转换颜色 (#黄色, ))

  哪里不一样呢?就是矩阵全部反过来了其他绘制图像还是相同的!自己观察

[那个算法世界坐标转屏幕坐标最早应该是个专业的人写的,算法感觉不用理解应该也可以写的出来!!主要是矩阵不好找  就这两种把应该????不求甚解]

猜你喜欢

转载自www.cnblogs.com/xuexidememeda/p/10282796.html
今日推荐