[英]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 == True
和self.player.invincin == False
時,此條件通過。 如果我假設正確,也許可以先嘗試改變這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.