【问题标题】:Drawing a sprite from a spritesheet using XNA/Monogame使用 XNA/Monogame 从 spritesheet 中绘制一个 sprite
【发布时间】:2018-03-14 04:10:34
【问题描述】:

我有一个包含 2 个精灵的精灵表。每个精灵是 40x60。图像的总尺寸为 40x120。 它看起来像这样(红线是第一个精灵的一部分)。稍后我会告诉你我为什么添加它。

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

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

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();

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

任何想法我做错了什么?

注意:在本例中,我使用的是 scale=6。我这样做是因为似乎当 scale > 1 时这个问题总会发生。如果 scale = 1,它似乎不会一直发生。

【问题讨论】:

  • 在选择第二个精灵时,您是否尝试过在 Rectangle Y 位置使用 61?
  • 那行不通。精灵重叠得更多。
  • 这里讨论了这个问题并提供了一些可能的解决方案:gamedev.stackexchange.com/questions/45764/…
  • 您是否尝试使用destinationRectangle 而非缩放来使用spriteBatch 进行绘制?不保证修复,只是建议您尝试一下,看看它是否有效。
  • Monacraft,感谢您的链接和建议。它提供了一些新的想法来尝试,但似乎作者从未找到解决方案。我已经尝试过其中的大部分。使用 PointClamp 改善了很多,但问题仍然时有发生。我最终添加了一些瓷砖空间,问题就消失了。不是最好的解决方案,但我现在修好了。

标签: xna sprite monogame sprite-sheet


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 2013-02-27
    • 2016-01-13
    • 2013-12-07
    • 2021-12-29
    • 1970-01-01
    • 2012-04-21
    相关资源
    最近更新 更多