关于pygame子弹发射的问题

我原本想做一个冒险游戏,但我发现关于子弹发射这里出了bug

from pygame import *



class Button(sprite.Sprite):
    def __init__(self,start,angle,camera):
        #继承父类Sprite
        super().__init__()

        #Sprite变量
        self.rect=(start[0],start[1]+16)
        self.image=image.load('./player/button/1.png')

        #自定义变量
        self.fps=1
        self.wt=0           #如果一直运行样子会鬼畜,设置一个等待时间
        self.speed=8*angle
        self.c=camera  #子弹也有相对位置

    def update(self,camera):
        self.c[0]+=self.speed
        s=[self.c[0]-camera[0],self.c[1]-camera[1]+16]
        k=((800-32)//2,(608-32)//2)
        self.rect=(k[0]+s[0],k[1]+s[1])

        self.wt+=1
        self.image=image.load('./player/button/'+str(self.fps)+'.png')

        if self.wt>40:
            self.fps+=1
            if self.fps>2:
                self.fps=1
            self.wt=0

        if self.rect[0]<-500 or self.rect[0]>1300:
            self.kill()



class Kid(sprite.Sprite):
    def __init__(self):
        #继承父类Sprite
        super().__init__()

        #Sprite的变量
        self.image=image.load('./player/action/wait/right/1.png')
        self.rect=((800-32)//2,(608-32)//2)

        #自定义的变量
        self.angle='right'
        self.action='wait'  #一共两个动作run和wait
        self.fps=0
        self.wt=0           #如果一直运行样子会鬼畜,设置一个等待时间
        self.camera=[96,96] #人的位置不变,背景变;用列表方便读取
        self.blood=100
        self.before=self.camera
        self.fire=False     #避免一直发射
        #子弹
        self.KidButton=sprite.Group()
        self.ButtonName=[]

        #加载音效
        self.shoot=mixer.Sound('./player/sound/shoot.wav')
        self.wound=mixer.Sound('./player/sound/wounded.wav')

    def move(self):
        e=key.get_pressed()
        self.before=self.camera

        #射击
        if e[K_z]:
            self.fire=True
        #实际开火
        if self.fire and not e[K_z]:
            self.fire=False
            # 播放音效
            self.shoot.play()
            # 这时需要一个Button类
            self.ButtonName.append(Button(self.rect,{'right':1,'left':-1}[self.angle],self.camera))
            # 加入精灵组
            self.ButtonName[len(self.ButtonName)-1].add(self.KidButton)

        # 基础的移动代码
        if e[K_RIGHT]:
            self.camera[0]+=4
            self.angle='right'
            self.action='run'
        if e[K_LEFT]:
            self.camera[0]-=4
            self.angle='left'
            self.action='run'
        if e[K_UP]:
            self.camera[1]-=4
            self.action='run'
        if e[K_DOWN]:
            self.camera[1]+=4
            self.action=='run'
        if not (e[K_RIGHT] or e[K_LEFT] or e[K_UP] or e[K_DOWN]):
            #没有移动
            self.action='wait'

    def update(self,screen):
        self.wt+=1
        screen.blit(self.image,self.rect)

        #等待是否刷新角色(防鬼畜)
        if self.wt==10:
            self.fps+=1
            flip={'run':5,'wait':4}
            if self.fps>flip[self.action]:
                self.fps=1
            self.wt=0
            self.surface='./player/action/'+self.action+'/'+self.angle+'/'+str(self.fps)+'.png'
            self.image=image.load(self.surface)

        for sprite in self.KidButton.sprites():
            sprite.update(self.camera)
        self.KidButton.draw(screen)

问个问题,这里运行之后按一下z,camera就会无缘无故增加,有谁能指点一下bug在哪?谢了!

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^