在iOS上使用SpriteBatch平铺Texture2D

本文关键字:SpriteBatch 平铺 Texture2D iOS | 更新日期: 2023-09-27 18:14:44

现在我正在用2个for循环平铺一个Texture2D,类似于《MonoGame》样本中的例子。

我正在做一些阅读,我看到使用两个纹理(2,4,8,16,32等)的宽度&高度)可以平铺一个SpriteBatch。画的电话。

这是支持在iOS上的一夫一妻制?

我试了几次,不管怎样,它只是拉伸图像而不是平铺。

我正在使用SamplerState。在我的SpriteBatch.Begin()上进行线性换行,并尝试使用2048 × 128的png,并尝试将其大小设置为512x32,但没有运气。(使用大尺寸,b/c我们的游戏运行在2400像素,b/c你可以用相机放大2.5倍)

在iOS上使用SpriteBatch平铺Texture2D

您可以在绘制方法中使用SourceRectangle参数。定义你想要显示的纹理的哪一部分。假设你有一个128x128的纹理。如果你提供Rect(0, 0, 128, 128),你告诉绘制方法使用整个纹理,如果你将null传递给绘制方法,情况也是如此。如果你提供Rect(0, 0, 64, 64),你将使用纹理的左上角。无论精灵本身有多大,你的精灵都会显示这部分内容。所以如果你的精灵是用128x128的尺寸绘制的,那么64x64的纹理部分将被缩放。

现在你可以用它来制作动画。如果你像这样在纹理中存储一个动画序列,你只需要在每次想要显示序列中的下一个图像时重新调用源矩形。

除此之外,你可以传入一个比源纹理更大的值。XNA现在需要包裹或夹紧纹理。这样你就可以实现一个简单的平铺。如果您需要更多,我的猜测是您需要使用手动方法,如foreach循环。请注意,只有当你使用两个纹理的力量时,才支持Wrap。