libGDX - 从SpriteBatch中删除/减去纹理的区域?

时间:2014-03-23 23:36:11

标签: libgdx spritebatch

我的游戏画面中有许多方形区域,当演员穿过这些区域时,我希望背景图像从后面显示。

那么,是否可以绘制到一个SpriteBatch,以便从纹理中减去/删除一个区域(实际上"在一个洞中打出一个洞")?

我无法想到如何实现这一目标......剪刀对于我的目的来说似乎非常不切实际,因为我想剪切多个正方形内的区域。这是剪刀的反面 - 剪切剪刀外面的区域'界限。计算数十个剪刀区域以填充各种方形区域之间的反向区域的想法似乎太不切实际而不是解决方案......特别是如果区域正在移动。

任何帮助或建议表示赞赏!

更新:已附加图片。

我希望背景始终在用虚线标记的区域中可见。虚线区域将移动,因此我宁愿不从背景创建更多精灵以放置在顶部,而是让部分演员与虚线正方形相交而不是绘制。 (或任何能达到同样效果的方法。)

https://imagizer.imageshack.us/v2/596x523q90/842/8xp1.png

1 个答案:

答案 0 :(得分:0)

我认为最好的黑客是不要试图剪裁你的演员,而只是重新画出演员的背景(以及剪辑)。

具体做法是:

  1. 绘制整个背景
  2. 画出你的演员/精灵
  3. 使用一个cliprect绘制背景,一个部分“显示通过”
  4. 为另一部分“透过”
  5. 绘制另一个剪裁的背景
  6. 在剪裁区域周围绘制虚线框
  7. 顺便说一句,很棒的形象。轻松值1000字。 :)