You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pygame动态缩放图片后中心坐标失效,图片偏移至左上角的问题

Pygame缩放精灵后位置偏移的问题解决

问题出在每次缩放图片后,你没有同步更新精灵的rect属性。

当你调用pygame.transform.scale生成新的缩放图片时,新图片对应的rect默认是从左上角(0,0)开始的。你在__init__里设置的rect.center只对初始图片生效,缩放后旧的rect没有和新图片关联,导致绘制时用了新图片默认的左上角位置。

解决方法很简单,在update方法里缩放图片后,重新设置rect并保持中心位置不变:

修改Fireball类的update方法:

def update(self):
    self.w += 2
    self.h += 2
    # 先保存当前的中心坐标
    current_center = self.rect.center
    # 缩放图片
    self.image = pygame.transform.scale(self.img,(int(self.w),int(self.h)))
    # 更新rect为新图片的尺寸
    self.rect = self.image.get_rect()
    # 把rect的中心恢复到之前的位置
    self.rect.center = current_center
    self.image.set_alpha(10+ self.h * 5)

这样每次缩放后,精灵都会以原来的中心(300,300)为基准放大,不会跑到左上角了。

内容的提问来源于stack exchange,提问作者Joachim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 11:25:18