gpt4 book ai didi

c# - 如何将 Sprite 和顶点几何体平移相同的距离?

转载 作者:太空宇宙 更新时间:2023-11-03 14:21:08 24 4
gpt4 key购买 nike

我正在尝试使用 XNA 构建一个 2.5 引擎。基本上,我想在 3D 背景中显示 2D Sprite (主要英雄和其他怪物)。游戏将是一个平台。现在,在 Sprite 上使用平移矩阵不会产生与在世界空间中平移顶点几何体相同的结果。我的意思是,如果我申请

Matrix.CreateTranslation(new Vector3(viewportWidth / 2, viewportHeight / 2, 0));

Sprite 将在屏幕中间平移(从显示器左上角的原点开始)。但是,如果我对世界空间中的立方体应用相同的变换,它会平移很远。这并不让我吃惊,但我想知道将 Sprite 和 3D 对象平移相同的距离,而忽略所有项目/非项目坐标内容。

谢谢!

最佳答案

传统上存在三种矩阵:World、View 和 Project。

BasicEffect 和大多数其他 3D 效果都只是具有这些矩阵。您使用 Project 来定义点如何从 3D 世界投影到 2D 视口(viewport)(视口(viewport)左下角的 (-1,-1) 到右上角的 (1,1))。您将 View 设置为在世界空间中四处移动您的相机。您可以使用 World 在世界空间中四处移动您的模型。

SpriteBatch 有点不同。它有一个隐式项目矩阵,使您的世界空间与视口(viewport)的客户空间匹配(左上角的(0,0)和右下角的(宽度,高度))。您可以将 transformMatrix 矩阵传递给 Begin,您通常可以将其视为 View 矩阵。然后传递给 Draw 的参数(位置、旋转、缩放等)就像 World 矩阵一样工作。

如果您需要在 SpriteBatch 中对您的 World 或 Project 矩阵做一些“奇怪”的事情,您可以将这些转换构建到您的 transformMatrix 中。它可能只涉及一些数学来“撤销”内置转换。

在 XNA 4 中,您还可以直接在 SpriteBatch 中使用 Effect(如 BasicEffect),您可以为它提供任意矩阵(details ).

关于c# - 如何将 Sprite 和顶点几何体平移相同的距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5361305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com