Python 我如何使我的爆炸附加在我的敌人x和y上?皮加梅

Python 我如何使我的爆炸附加在我的敌人x和y上?皮加梅,python,pygame,Python,Pygame,正如你在视频中看到的,烟雾出现在其他地方,而不是敌人x和y。如果我滚动并杀死另一个,烟雾会回到原来的位置 在我的重画窗口中,我说如果我的敌人生命值大于-3,则显示爆炸 但是我怎样才能让它出现在敌人的x和y中呢 for enemys in enemying: if enemys.health < -3: for explode in explodes:

正如你在视频中看到的,烟雾出现在其他地方,而不是敌人x和y。如果我滚动并杀死另一个,烟雾会回到原来的位置

在我的重画窗口中,我说如果我的敌人生命值大于-3,则显示爆炸 但是我怎样才能让它出现在敌人的x和y中呢


            for enemys in enemying:
                if enemys.health < -3:
                    for explode in explodes:
                        explode.draw()


这是我全部的爆炸课


class explode:
        
        def __init__(self,x,y,height,width,color):
            self.x = x
            self.y = y
            self.height = height
            self.width = width
            self.explode = [
            pygame.image.load("smoke1.png"),
            pygame.image.load("smoke2.png"),
            pygame.image.load("smoke3.png"),
            pygame.image.load("smoke4.png"),
            pygame.image.load("smoke5.png"),
            pygame.image.load("smoke6.png"),
            pygame.image.load("smoke7.png"),
            pygame.image.load("smoke8.png"),
            pygame.image.load("smoke9.png"),
            pygame.image.load("smoke10.png"),
            pygame.image.load("smoke11.png"),
            pygame.image.load("smoke12.png"),
            pygame.image.load("smoke13.png"),
            pygame.image.load("smoke14.png"),
            pygame.image.load("smoke15.png"),
            pygame.image.load("smoke16.png"),
            pygame.image.load("smoke17.png"),
            pygame.image.load("smoke18.png"),
            pygame.image.load("smoke19.png"),
            pygame.image.load("smoke20.png"),
            pygame.image.load("smoke21.png"),
            pygame.image.load("smoke22.png"),
            pygame.image.load("smoke23.png"),
            pygame.image.load("smoke24.png"),
            pygame.image.load("smoke25.png")]

            self.explode = [pygame.transform.scale(image,(image.get_width()//2,image.get_height()//2)) for image in self.explode]

            self.rect = pygame.Rect(x,y,height,width)
            self.direction = "blobright"
            self.anim_index = 0
        def draw(self):
             
            self.rect.topleft = (self.x,self.y)
            if self.direction == "blobright":
                window.blit(self.explode[self.anim_index], self.rect)
                self.anim_index += 1
                if self.anim_index == len(self.explode):
                    self.anim_index = 0
            



    black = (0,0,0)
    explode1 = explode(400,450,50,50,black)
    explodes = [explode1]

问题就在您的代码中:

    black = (0,0,0)
    explode1 = explode(400,450,50,50,black)
    explodes = [explode1]
创建要绘制的爆炸时,立即设置其爆炸位置。无论敌人死后在哪里,爆炸将始终在该点(400450)处绘制,因为这是您设置其爆炸的位置

当敌人死亡时,你需要告诉爆炸把自己拉到哪里,而不是当爆炸被实例化时。我要做的不是给explode类它自己存储的x和y,而是将x,y参数添加到draw()函数中,并传递敌人死亡时的坐标。它看起来像这样:

#Modified explode.draw() function:
        def draw(self,drawX,drawY):
             
            self.rect.topleft = (drawX,drawY)
            if self.direction == "blobright":
                window.blit(self.explode[self.anim_index], self.rect)
                self.anim_index += 1
                if self.anim_index == len(self.explode):
                    self.anim_index = 0

#Modified death loop
            for enemys in enemying:
                if enemys.health < -3:
                    for explode in explodes:
                        explode.draw(enemys.x,enemys.y)
#修改了explode.draw()函数:
def牵引(自身、牵引、牵引):
self.rect.topleft=(drawX,drawY)
如果self.direction==“blobright”:
blit(self.explode[self.anim_index],self.rect)
self.anim_索引+=1
如果self.anim_index==len(self.explode):
self.anim_索引=0
#改良死亡环
对于敌对行动中的敌人:
如果enemys.health<-3:
对于“在爆炸中爆炸”:
分解.绘制(enemys.x,enemys.y)

希望这有帮助

问题就在您的代码中:

    black = (0,0,0)
    explode1 = explode(400,450,50,50,black)
    explodes = [explode1]
创建要绘制的爆炸时,立即设置其爆炸位置。无论敌人死后在哪里,爆炸将始终在该点(400450)处绘制,因为这是您设置其爆炸的位置

当敌人死亡时,你需要告诉爆炸把自己拉到哪里,而不是当爆炸被实例化时。我要做的不是给explode类它自己存储的x和y,而是将x,y参数添加到draw()函数中,并传递敌人死亡时的坐标。它看起来像这样:

#Modified explode.draw() function:
        def draw(self,drawX,drawY):
             
            self.rect.topleft = (drawX,drawY)
            if self.direction == "blobright":
                window.blit(self.explode[self.anim_index], self.rect)
                self.anim_index += 1
                if self.anim_index == len(self.explode):
                    self.anim_index = 0

#Modified death loop
            for enemys in enemying:
                if enemys.health < -3:
                    for explode in explodes:
                        explode.draw(enemys.x,enemys.y)
#修改了explode.draw()函数:
def牵引(自身、牵引、牵引):
self.rect.topleft=(drawX,drawY)
如果self.direction==“blobright”:
blit(self.explode[self.anim_index],self.rect)
self.anim_索引+=1
如果self.anim_index==len(self.explode):
self.anim_索引=0
#改良死亡环
对于敌对行动中的敌人:
如果enemys.health<-3:
对于“在爆炸中爆炸”:
分解.绘制(enemys.x,enemys.y)
希望这有帮助