首页 > 解决方案 > 在 fps 多人游戏中如何处理摄像机视图?

问题描述

嗨,我正在我的爱好引擎中完成运动系统,我有一个 fps 相机,我很想知道多人游戏如何处理所有玩家的运动,我的意思是假设服务器上有 10 个人,8 个玩家在玩移动,2 观看,他们有 10 个不同的摄像机,每个玩家的鼠标移动对吗?还是我错过了什么?因此,例如,如果我死了,我想将我的相机切换到另一个正在玩的玩家,我只需将我的视图与他的视图切换?是否有意义?

标签: c3dcamera-view

解决方案


这是坐标系,转换的绝佳资源

相机只是一个矩阵(或组合),它通过将三角形的坐标乘以自身,将宇宙弯曲成一个盒子(恰好在视野之外),然后将其绘制成它的 xy 角是屏幕的角落(实际上是视口),z 是深度(如果需要的话)。

只有 16 个数字,4x4 矩阵被传递给渲染引擎(或者更多,如果你分别传递视图和投影矩阵),这会将三角形放在它们最终在屏幕上的位置。在我自己的引擎中,我预乘了视图矩阵(一个旋转和移动坐标,因此相机是原点,0;0;0 点,到视图空间)和投影矩阵(一个将东西打包在查看屏幕框,剪辑空间)。

显然,如果您想要不同的相机,您只需根据相机的位置、方向、FoV 等制作矩阵。


推荐阅读