2

如何以等距投影的形式呈现文本?我了解原理,但我不确定如何以编程方式实际转换 SpriteFont 来做到这一点。

我的意思的例子:

在此处输入图像描述

我什至不确定我应该寻找什么。似乎我可以通过使用等距投影矩阵和 3D 网格字体来实现这一点,但考虑到我在 2D 中工作,这似乎过于复杂。

有任何想法吗?

4

2 回答 2

2

SpriteBatch.Begin接受一个Matrix参数,将您绘制的精灵(包括SpriteFont)转换到您想要的任何平面上。

不幸的是Matrix,没有提供Create*创建偏斜矩阵的方法。但是手动创建这样的矩阵很简单。以下代码经过测试,非常接近您想要的:

Matrix skew = Matrix.Identity;
skew.M12 = (float)Math.Tan(MathHelper.ToRadians(36.87f));
Matrix rotate = Matrix.CreateRotationZ(MathHelper.ToRadians(270+26.565f));

sb.Begin(SpriteSortMode.Deferred, null, null, null, null, null, skew * rotate);
// ... draw your sprites here ...
sb.End();

与您的图表的唯一区别是 Y 和 Y' 指向相反的方向,因为 XNASpriteBatch在“客户端”坐标中工作(左上角的(0,0),Y+ 向下)。

于 2013-01-30T02:19:25.997 回答
0

您可以将矩阵变换与精灵批处理一起使用来实现此目的。您可以在此处阅读有关矩阵转换的更多信息。

于 2013-01-29T11:58:44.157 回答