如何制造“战争迷雾” Android 中的位图叠加

发布于 2024-12-02 15:19:21 字数 205 浏览 2 评论 0原文

我有一个简单的 2D 游戏,其中有一些在屏幕上移动的角色。我想创建一个战争迷雾,只有每个角色周围的背景可见。

希望这是清楚的(不要太模糊?!?!)。我的想法是创建一个黑色位图,然后绘制一个以每个字符为中心的“透明”圆盘。然后我可以绘制背景,绘制字符,最后在顶部绘制覆盖位图。

只是不确定如何将“透明”磁盘绘制到黑色位图上。

有什么想法或替代设计吗?

I have a simple 2D game with a handful of characters which move around the screen. I'd like to create a fog of war, whereby only the background around each character is visible.

Hopefully that's clear (not too foggy?!?!). My thoughts were to create a black bitmap, then draw a 'transparent' disk centered on each of the characters. Then I can draw the background, draw the characters and finally draw this overlay bitmap over the top.

Just not sure how to draw the 'transparent' disks on to the black bitmap.

Any ideas, or alternative designs?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风吹过旳痕迹 2024-12-09 15:19:21

使用 Canvas.drawCircle()Paint 对象,其 alpha 设置为 0。或者,您可以使用位图创建一个透明圆圈,然后像另一个位图一样绘制它。如果您想要强烈控制淡入黑色,基于位图的圆圈会更有利。

  1. 创建一个位图来保存黑色覆盖层
  2. 用黑色填充位图
  3. 在要打孔的位置上绘制一个透明圆圈
  4. 在游戏画布上绘制覆盖层
  5. 重复。

Use Canvas.drawCircle() with a Paint object whose alpha is set to 0. Alternatively you could create a transparent circle with a Bitmap and draw it just like another bitmap. The Bitmap based circle would be more advantageous if you wanted strong control with a fade to black.

  1. Create a bitmap to hold the black overlay
  2. Fill bitmap with black
  3. Paint a transparent circle over it of where you whant to punch holes
  4. Paint the overlay over your game canvas
  5. Repeat.
旧时浪漫 2024-12-09 15:19:21

实际上,由于战争迷雾需要持久,我不得不选择不透明的平铺解决方案,而不是直接的位图,因为位图太大并且在激活之间加载/保存花费的时间太长。

Actually, since the fog-of-war needs to be persistent, I've had to go for an opaque tiled solution, rather than a straight bitmap, as the bitmap was too large and took too long to load/save between activations.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文