如何以等轴投影的形式呈现文字?我理解这个原理,但我不确定如何以编程方式实际转换SpriteFont来实现这一目标。
我的意思是:
我甚至不确定我应该搜索什么。我似乎可以通过使用等距投影矩阵和3D网格字体来实现这一目标,但考虑到我在2D工作,这似乎过于复杂。
有什么想法吗?
答案 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。