Итак, я делаю игру в Pygame для школьного проекта. Прямо сейчас у меня есть персонаж, который сталкивается с врагом. У меня непобедимость, когда игрок получает удар, но по какой-то причине при первом попадании игрок получает 2 урона, а затем срабатывает таймер, и у игрока временная неуязвимость.
Код класса игрока:
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 - это неспособность):
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)
Может кто-нибудь помочь?