tower shooting function
This commit is contained in:
@@ -46,6 +46,34 @@ class Tower:
|
|||||||
self.tower_start = pygame.time.get_ticks()
|
self.tower_start = pygame.time.get_ticks()
|
||||||
return True
|
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