from Setup import *
class Actor:
- width, height = 50, 100
+ width, height = 25, 50
colour = (76, 82, 92)
speed = 0.2
- jump_strength = 1
+ jump_strength = 0.5
gravity = 0.098
friction = 0.9
self.health = 100
+ self.crouching = False
+ self.crouch_timer = None
+
self.areas = dict()
def update(self, delta):
+
+ if self.crouching and self.crouch_timer == 0:
+ self.position.y -= self.height/2
+ self.crouching = False
+ if self.crouch_timer is not None:
+ self.crouch_timer -= delta
+ self.crouch_timer = max(0, self.crouch_timer)
+
for area in self.areas.values():
area.update(delta,self.position)
+
def follow_target(self, node):
target = node.position
if target.y < self.position.y:
self.jump()
+ def crouch(self, time=None):
+ self.crouching = True
+ self.position.y += self.height/2
+ if time is not None:
+ self.crouch_timer = time
+ else:
+ self.crouch_timer = None
+
+
def jump(self):
if self.on_ground:
self.velocity.y = -self.jump_strength
if collision_rect.colliderect(thing.get_collision_rect()):
for area in self.areas.values():
if area.is_colliding(thing):
+ print('b')
area.signal(thing)
if vel.y > 0:
pos.y = thing.position.y - self.height
def get_collision_rect(self, pos=None):
if pos is None:
pos = self.position
- return pg.Rect(pos, (self.width, self.height))
+ if self.crouching:
+ return pg.Rect(pos, (self.width, self.height/2))
+ else:
+ return pg.Rect(pos, (self.width, self.height))
def draw(self, surf):
- pg.draw.rect(surf, self.colour, self.get_collision_rect(), border_radius=15)
+ pg.draw.rect(surf, self.colour, self.get_collision_rect(), border_radius=8)
# Uncomment for debugging area hitboxes
- # for area in self.areas.values():
- # area.draw(surf)
+ for area in self.areas.values():
+ area.draw(surf)
self.position = pos
def is_colliding(self,node):
+ print("a", node)
if isinstance(node, self.target):
+ print('c')
if self.get_collision_rect().colliderect(node.get_collision_rect()):
+ print('d')
return True
return False
return pg.Rect(self.position + self.offset, (self.width, self.height))
def draw(self, surf):
- pg.draw.rect(surf, (255,0,0),self.get_collision_rect())
\ No newline at end of file
+ pg.draw.rect(surf, (255,0,0),self.get_collision_rect())
from Actors import Actor
class Enemy(Actor):
- width, height = 50, 100
+ width, height = 25, 50
colour = (235, 64, 52)
speed = 0.2
- jump_strength = 1.1
+ jump_strength = 0.75
gravity = 0.098
friction = 0.9
def __init__(self, pos, collision_layer, collision_mask):
super().__init__(pos, collision_layer, collision_mask)
- self.areas = {"head":Area(self.position,pg.Vector2(0,-15), self.width, 25, Player, self.knockout)}
+ self.areas = {"head":Area(self.position,pg.Vector2(0,-25), self.width, 25, Player, self.knockout)}
self.dizzy_time = 0
self.position, self.velocity = self.move_and_collide(self.position, self.velocity, delta)
def knockout(self, node):
- self.dizzy_time = 10000
-
+ self.dizzy_time = 5000
+ print(node)
+ node.on_ground = True
+ node.jump()
+ # self.crouch(1000)
def update(self, delta):
self.player.update(delta)
- self.pet.update(delta, self.player)
+ # self.pet.update(delta, self.player)
for enemy in self.enemies:
enemy.update(delta, self.player)
self.player.draw(surf)
self.pet.draw(surf)
-
from Actors import Actor
class Pet(Actor):
- width,height = 75,50
+ width,height = 35,25
+ speed = 0.25
def __init__(self, pos, collision_layer, collision_mask):
super().__init__(pos, collision_layer, collision_mask)
self.follow_target(target)
self.position, self.velocity = self.move_and_collide(self.position, self.velocity, delta)
-
from Actors import Actor
class Player(Actor):
- width, height = 50, 100
+ width, height = 25, 50
colour = (52, 94, 235)
- speed = 0.3
- jump_strength = 1.5
+ speed = 0.2
+ jump_strength = 0.9
gravity = 0.098
- friction = 0.9
+ friction = 0.7
def __init__(self, pos, collision_layer, collision_mask):
super().__init__(pos, collision_layer, collision_mask)
- self.areas = {"body":Area(self.position, pg.Vector2(0, self.height/2),self.width, self.height/2,Actor)}
+ # self.areas = {"body":Area(self.position, pg.Vector2(0, self.height/2),self.width, self.height/2,Actor)}
def update(self, delta):
current_health = str(self.health) + "/100"
current_health_display = font.render(current_health, True, (255, 255, 255))
surf.blit(current_health_display, foreground_rect)
-