【发布时间】:2020-04-20 05:41:16
【问题描述】:
所以,我正在 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
Enemy Class(忽略结束变量):
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)
谁能帮忙?
【问题讨论】: