tower shooting function
This commit is contained in:
+29
-1
@@ -32,7 +32,7 @@ class Tower:
|
||||
self.field_rect = rect
|
||||
return
|
||||
|
||||
def try_build(self, player_rect: pygame.Rect, keys: pygame.key.ScancodeWrapper, ects):
|
||||
def try_build(self, player_rect: pygame.Rect, keys: pygame.key.ScancodeWrapper, ects):
|
||||
|
||||
# Baut Tower wenn Spieler E drückt, auf Feld steht und genug ects hat
|
||||
if not self.field.rect or self.tower.rect:
|
||||
@@ -46,6 +46,34 @@ class Tower:
|
||||
self.tower_start = pygame.time.get_ticks()
|
||||
return True
|
||||
|
||||
def update(self, player_rect: pygame.Rect, keys: pygame.key.ScancodeWrapper, ects, monster_rect: pygame.Rect, room_rect: pygame.Rect, blocked_rects: list[pygame.Rect]):
|
||||
|
||||
# ruft jeden Frame auf und gibt den Schaden auf Monster zurück
|
||||
now = pygame.time.get_ticks()
|
||||
total_damage = 0
|
||||
|
||||
self.try_build(player_rect, keys, ects)
|
||||
|
||||
# schießen dann, wenn Tower und Monster vorhanden sind
|
||||
if self.tower_rect and monster_rect:
|
||||
if now - self.last_shot >= fire_interval:
|
||||
dx = monster_rect.centerx - self.tower_rect.centerx
|
||||
dy = monster_rect.centery - self.tower_rect.centery
|
||||
distance = math.sqrt(dx * dx + dy * dy) or 1
|
||||
self.projectiles.append({
|
||||
"x": float(self.tower_rect.centerx),
|
||||
"y": float(self.tower_rect.centery),
|
||||
"vel_x": (dx / distance) * PROJECTILE_SPEED,
|
||||
"vel_y": (dy / distance) * PROJECTILE_SPEED,
|
||||
})
|
||||
|
||||
self.last_shot = now
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user