微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

视差滚动弄乱了射弹位置

如何解决视差滚动弄乱了射弹位置

我每 3 秒将激光附加到一个列表中,以便绘制。

    if event.type == pygame.USEREVENT:
            timer += 1
            print(timer)
            if timer%3 == 0:
                for enemy in enemies:
                    lazers.append(Projectile(enemy.x-enemy.width//3,enemy.y-enemy.height//2,scroll))

在 pygame 事件循环之外,我绘制了所有的激光:

for lazer in lazers:
        lazer.draw_rect(screen)
        lazer.x += lazer.veLocity

projectile 类很简单,它只在提供的 x,y 坐标处绘制矩形:

class Projectile():
    def __init__(self,x,y,scroll,color=(255,0)):
        self.scroll = scroll
        self.x = x-self.scroll[0]
        self.y = y-self.scroll[1]
        self.color = color
        self.veLocity = -4
        self.width = 20
        self.height = 5
        
        
    def draw_rect(self,screen):
        pygame.draw.rect(screen,self.color,pygame.Rect(self.x,self.y,self.width,self.height))

它按照我编程的方式工作。在 x 和 y 处绘制矩形,但当屏幕向左、向右或向上滚动时,它无法正确绘制。我能想到的唯一解决方案是找到某种方法将屏幕上的激光绘制到敌人的 x 和 y 位置,包括滚动偏移。

What the problem looks like

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。