簡體   English   中英

Pygame:角色無敵受到2點傷害而不是1點

[英]Pygame: Charachter invincibility taking 2 damage instead of 1

所以,我正在 Pygame 為學校項目制作游戲。 現在,我的角色與敵人相撞。 一旦玩家被擊中,我就會無敵,但由於某種原因,第一次擊中玩家會受到 2 點傷害,然后計時器開始工作,他們的玩家暫時無敵。

播放器 Class 代碼:

vec = pg.math.Vector2

class Player(pg.sprite.Sprite):
        def __init__(self, Game,bullet):
            pg.sprite.Sprite.__init__(self)
            self.Game = Game
            self.image = pg.image.load('idle.png')
            self.rect = self.image.get_rect()
            self.rect.center = (screenWidth / 2, screenLength / 2)
            self.pos = vec(screenWidth / 2, screenLength / 2)
            self.vel = vec(0, 0)
            self.acc = vec(0,0)
            self.health = 3
            self.ammo = 10
            self.cooldown = 700
            self.bullet = bullet
            self.timer = pg.time.get_ticks()
            self.itimer = pg.time.get_ticks()
            self.left = False
            self.right = False
            self.invincin = False
            self.invincinCoolDown= 1300

敵人等級(忽略結束變量):

class enemy(pg.sprite.Sprite):
    def __init__(self,x,y,end):
        pg.sprite.Sprite.__init__(self)
        self.image = pg.image.load("enemy.png")
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y
        self.alive = True
        self.health = 3
        self.end = end
        self.speed = 1
        self.timer = pg.time.get_ticks()

這是我的代碼當玩家被擊中時(Invincin 是 incibility):

if pHits:
     if self.player.invincin == False:
     self.health -= 1
     self.player.invincin = True

這是我的無敵代碼:

        if self.player.invincin == True:
            inow = pg.time.get_ticks()
            if inow - self.player.itimer >= self.player.invincinCoolDown:
                self.player.itimer = inow
                self.player.invincin = False

這是我的碰撞代碼:

pHits = pg.sprite.spritecollide(self.player,self.all_enemy, False, False)

任何人都可以幫忙嗎?

請提供完整代碼。 但也許我看到了可能的問題。 在您的代碼中:

if pHits and self.player.invincin == False:

我得出的結論是,當兩者都為 False 時,您希望此條件通過,但當pHits == Trueself.player.invincin == False時,此條件通過。 如果我假設正確,也許可以先嘗試改變這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM