使用 pygame 放大某个区域?
Zooming in on an area with pygame?
我昨天做了一个放大功能,作为对我将要开发的游戏的测试。看起来不错,但我更愿意只放大透过玻璃看到的区域。
有人知道如何使用 python/pygame 放大 动态 半径吗?我是否必须对我的图像进行 tileset 或使用某种密集层 blit 对其进行暴力破解?我不确定这是否是这里要问的问题。
这里有一个视频演示来展示我在说什么 - https://youtu.be/_pVyb0bns3k
我认为这里没有任何捷径。我建议像往常一样绘制未缩放的屏幕,在缩放区域中以圆圈形式绘制,然后在上方的放大镜中绘制。您显然已经知道如何做的第一位和最后一位,所以让我们看看缩放区域中的 blitting。
为此,我会
- 将图片中要放大的部分作为一个正方形,复制到一个新的Surface中。 (请记住,这将小于结果区域。)
- 使用pygame.transform.smoothscale将其扩大到足以覆盖整个放大镜区域
- 使用蒙版将其从正方形变成圆形。有关详细信息,请参阅 Pygame - is there any way to only blit or update in a mask。
- Blit 结果。
不要太担心性能。你每帧只做一次。
我昨天做了一个放大功能,作为对我将要开发的游戏的测试。看起来不错,但我更愿意只放大透过玻璃看到的区域。
有人知道如何使用 python/pygame 放大 动态 半径吗?我是否必须对我的图像进行 tileset 或使用某种密集层 blit 对其进行暴力破解?我不确定这是否是这里要问的问题。
这里有一个视频演示来展示我在说什么 - https://youtu.be/_pVyb0bns3k
我认为这里没有任何捷径。我建议像往常一样绘制未缩放的屏幕,在缩放区域中以圆圈形式绘制,然后在上方的放大镜中绘制。您显然已经知道如何做的第一位和最后一位,所以让我们看看缩放区域中的 blitting。
为此,我会
- 将图片中要放大的部分作为一个正方形,复制到一个新的Surface中。 (请记住,这将小于结果区域。)
- 使用pygame.transform.smoothscale将其扩大到足以覆盖整个放大镜区域
- 使用蒙版将其从正方形变成圆形。有关详细信息,请参阅 Pygame - is there any way to only blit or update in a mask。
- Blit 结果。
不要太担心性能。你每帧只做一次。