在2D中渲染等距文本

时间:2013-01-29 11:38:41

标签: c# xna rendering isometric

如何以等轴投影的形式呈现文字?我理解这个原理,但我不确定如何以编程方式实际转换SpriteFont来实现这一目标。

我的意思是:

enter image description here

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

有什么想法吗?

2 个答案:

答案 0 :(得分: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'指向相反的方向,因为XNA的SpriteBatch在“客户”坐标中工作(左上角为(0,0),Y +为向下)。

答案 1 :(得分:0)

您可以使用矩阵转换和精灵批处理来实现此目的。您可以阅读有关矩阵翻译的更多信息here