Ennemies respawn
This commit is contained in:
parent
1c25591197
commit
d452a015da
@ -8,26 +8,40 @@ class Ennemy(Movable):
|
|||||||
|
|
||||||
self.player = None
|
self.player = None
|
||||||
|
|
||||||
|
self.respawnmargin = 30
|
||||||
|
|
||||||
|
self.respawn = True
|
||||||
|
self.dead = False
|
||||||
|
|
||||||
self.dustparticles = game.getSpriteDir("particles/dust/")
|
self.dustparticles = game.getSpriteDir("particles/dust/")
|
||||||
|
|
||||||
def step(self):
|
def step(self):
|
||||||
|
|
||||||
super().step()
|
if not self.dead:
|
||||||
# Check for collision with player
|
super().step()
|
||||||
if not self.player:
|
# Check for collision with player
|
||||||
self.player = next(iter(self.game.gameloop.findname("Player")),None)
|
if not self.player:
|
||||||
else:
|
self.player = next(iter(self.game.gameloop.findname("Player")),None)
|
||||||
if self.player.canhit:
|
else:
|
||||||
if self.rect.colliderect(self.player.hitrect):
|
if self.player.canhit:
|
||||||
# Die
|
if self.rect.colliderect(self.player.hitrect):
|
||||||
self.game.gameloop.delid(self.id)
|
# Die
|
||||||
|
self.dead = True
|
||||||
|
# Add particles
|
||||||
|
self.game.addParticle(self.dustparticles,self.rect.center[0],self.rect.center[1])
|
||||||
|
# Boost the player vertically
|
||||||
|
if not self.player.fastfall:
|
||||||
|
if self.player.rect[1]>self.rect[1]:
|
||||||
|
direction = 1
|
||||||
|
else:
|
||||||
|
direction = -1
|
||||||
|
self.player.verspd = self.player.gravity/3*direction
|
||||||
|
elif self.respawn:
|
||||||
|
|
||||||
# Add particles
|
if self.rect.center[0] < self.game.globals["camerax"]-self.respawnmargin:
|
||||||
self.game.addParticle(self.dustparticles,self.rect.center[0],self.rect.center[1])
|
self.dead = False # Respawn
|
||||||
# Boost the player vertically
|
if self.rect.center[0] > self.game.globals["camerax"]+self.game.globals["cameraw"]+self.respawnmargin:
|
||||||
if not self.player.fastfall:
|
self.dead = False # Respawn
|
||||||
if self.player.rect[1]>self.rect[1]:
|
|
||||||
direction = 1
|
else:
|
||||||
else:
|
self.game.gameloop.delid(self.id)
|
||||||
direction = -1
|
|
||||||
self.player.verspd = self.player.gravity/3*direction
|
|
||||||
|
@ -15,7 +15,7 @@ class Robot(Ennemy):
|
|||||||
self.speed = 30
|
self.speed = 30
|
||||||
self.falling = 20
|
self.falling = 20
|
||||||
self.spriteindex = 0
|
self.spriteindex = 0
|
||||||
|
|
||||||
self.gravityway = 1 # Vertical flip
|
self.gravityway = 1 # Vertical flip
|
||||||
self.walkingway = 1 # Horizontal flip
|
self.walkingway = 1 # Horizontal flip
|
||||||
|
|
||||||
@ -31,30 +31,34 @@ class Robot(Ennemy):
|
|||||||
|
|
||||||
def step(self):
|
def step(self):
|
||||||
|
|
||||||
# Flipping vertically
|
if not self.dead:
|
||||||
if self.water and self.rect.center[1]>self.water.rect[1]:
|
|
||||||
self.gravityway = -1
|
|
||||||
else:
|
|
||||||
self.gravityway = 1
|
|
||||||
|
|
||||||
# Flipping horizontally
|
# Flipping vertically
|
||||||
if self.endpoints:
|
if self.water and self.rect.center[1]>self.water.rect[1]:
|
||||||
if self.rect.center[0]>self.endpoints[1]:
|
self.gravityway = -1
|
||||||
self.walkingway = -1
|
else:
|
||||||
if self.rect.center[0]<self.endpoints[0]:
|
self.gravityway = 1
|
||||||
self.walkingway = 1
|
|
||||||
|
|
||||||
speedmult = [1,0.5,0][int(self.spriteindex)%3]
|
# Flipping horizontally
|
||||||
|
if self.endpoints:
|
||||||
|
if self.rect.center[0]>self.endpoints[1]:
|
||||||
|
self.walkingway = -1
|
||||||
|
if self.rect.center[0]<self.endpoints[0]:
|
||||||
|
self.walkingway = 1
|
||||||
|
|
||||||
self.horspd = self.walkingway*self.speed*self.game.dt*speedmult
|
speedmult = [1,0.5,0][int(self.spriteindex)%3]
|
||||||
self.verspd = self.gravityway*self.falling*self.game.dt
|
|
||||||
|
self.horspd = self.walkingway*self.speed*self.game.dt*speedmult
|
||||||
|
self.verspd = self.gravityway*self.falling*self.game.dt
|
||||||
|
|
||||||
|
self.spriteindex += self.speed*self.game.dt*0.15
|
||||||
|
|
||||||
super().step() # Actually move
|
super().step() # Actually move
|
||||||
|
|
||||||
self.spriteindex += self.speed*self.game.dt*0.15
|
|
||||||
|
|
||||||
def draw(self):
|
def draw(self):
|
||||||
|
|
||||||
self.sprite = self.sprites[int(self.spriteindex)%len(self.sprites)]
|
if not self.dead:
|
||||||
drawnsprite = self.game.pygame.transform.flip(self.sprite,self.walkingway==-1,self.gravityway==-1)
|
self.sprite = self.sprites[int(self.spriteindex)%len(self.sprites)]
|
||||||
self.game.window.blit(drawnsprite,[self.rect[0]-self.game.globals["camerax"],self.rect[1]-self.game.globals["cameray"]])
|
drawnsprite = self.game.pygame.transform.flip(self.sprite,self.walkingway==-1,self.gravityway==-1)
|
||||||
|
self.game.window.blit(drawnsprite,[self.rect[0]-self.game.globals["camerax"],self.rect[1]-self.game.globals["cameray"]])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user