使用XNA / Monogame从spritesheet中绘制一个sprite

时间:2017-10-03 02:50:14

标签: xna sprite monogame sprite-sheet

我有一个有2个精灵的spritesheet。每个精灵都是40x60。图像的总大小为40x120。 它看起来像这样(红线是第一个精灵的一部分)。我会在一秒钟内告诉你为什么我加上了。

enter image description here

似乎由于某种原因,在尝试绘制第二个精灵时,它总是占用前一个精灵的最后一行。我画了那条红线来说明这一点。

这是我绘制第二个精灵的代码:

Rectangle rect = new Rectangle(0, 60, 40, 60); // Choose 2nd sprite
Vector2 pos = new Vector2(100, 100);
Vector2 origin = new Vector2(0, 0);

spriteBatch.Begin();
spriteBatch.Draw(mSpriteTexture, pos , rect, Color.White, 0.0f, origin, 6, SpriteEffects.None, 0.0f);
spriteBatch.End();

这就是我运行程序时的样子:

enter image description here

任何想法我做错了什么?

注意:对于此示例,我使用scale = 6。我这样做是因为看起来当比例> 1这个问题总会发生。如果scale = 1,它似乎不会一直发生。

1 个答案:

答案 0 :(得分:1)

有同样的问题。在我的spriteBatch.Begin中使用了SamplerState.PointClamp - 调用它来修复它

看起来像这样:( MonoGame 3.6 tho)

SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, SamplerState.PointClamp, null, null, null, viewMatrix);