另一个答案非常好,但我认为一种不同的描述方式可能有助于它点击。
您通常在“世界空间”中处理您的游戏,这是一个类似于现实世界的坐标系。在线性代数中,通过将点的坐标乘以表示两个坐标系之间关系的矩阵,可以将空间中的点从一个坐标系转换为另一个坐标系。
将视图矩阵乘以一个点,以将其从世界空间转换为相机空间(相机的视角)。投影矩阵用于将点从相机空间转换为屏幕空间(设备屏幕的平面 2D 矩形)。当您在 Libgdx 中调用摄像机时,它会将您对位置、方向、视口大小、视场等的最新更改应用于其视图和投影矩阵,以便它们可以在着色器中使用。update()
您很少需要在2D中处理相机空间中的东西,因此SpriteBatch不需要单独的视图和投影矩阵。它们可以组合成一个矩阵,直接从世界空间转换为屏幕空间,这在相机中已经自动完成,因此矩阵。camera.combined
SpriteBatch 具有默认的内置着色器,可将此投影矩阵乘以精灵的所有顶点,以便将它们正确映射到平面屏幕。
每当您移动相机或调整屏幕大小时,您都应该打电话。setProjectionMatrix
还有第三种类型的矩阵,称为模型矩阵,用于3D内容。模型矩阵描述模型在世界空间中的方向、比例和位置。因此,乘以模型中的坐标,将它们从局部空间移动到世界空间。