From 2fd199612b8ceb4b97f7f364214133aa0264aa31 Mon Sep 17 00:00:00 2001 From: Michael Campbell Date: Wed, 4 Mar 2026 02:27:43 -0500 Subject: [PATCH] bugfix enemy spawner --- buildings/building.gd | 1 - levels/enemy_spawner.gd | 11 +++++++---- player/player.gd | 1 - 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/buildings/building.gd b/buildings/building.gd index e214f00..e957ad4 100644 --- a/buildings/building.gd +++ b/buildings/building.gd @@ -24,7 +24,6 @@ func _process(delta: float) -> void: func hit(_proj: PlayerProjectile, damage: float) -> bool: health -= damage if health <= 0.: - print("boom!") SignalBus.building_destroyed.emit(self) collision_layer = 1 # World collision only diff --git a/levels/enemy_spawner.gd b/levels/enemy_spawner.gd index 36c1c86..e8810b0 100644 --- a/levels/enemy_spawner.gd +++ b/levels/enemy_spawner.gd @@ -30,11 +30,12 @@ func _process(_delta: float) -> void: var col_mask := 16 # floor collision layer var params := PhysicsRayQueryParameters3D.create( - v, v + Vector3.DOWN * 100., col_mask + v, v + Vector3.DOWN * 100., 1 # detect any level geometry ) var raycast := get_world_3d().direct_space_state.intersect_ray(params) - if not raycast.is_empty(): + # if the raycast hit and the hit was the floor... + if not raycast.is_empty() and raycast.collider.collision_layer & col_mask: var hitpos: Vector3 = raycast.position if points.size() < MAX_CACHED_POINTS: @@ -45,13 +46,15 @@ func _process(_delta: float) -> void: doomed_point_idx = doomed_point_idx % MAX_CACHED_POINTS func _on_timer_timeout() -> void: - if points.is_empty(): return + if points.is_empty(): + push_warning("tried to spawn enemy, but can't find a point!") + return var pos: Vector3 = points.pick_random() pos += Vector3.UP * 0.02 var scene := preload("res://enemies/police_car/police_car.tscn") var car: Node3D = scene.instantiate() - car.global_position = pos + car.position = pos get_tree().current_scene.add_child(car) diff --git a/player/player.gd b/player/player.gd index 053d767..a99c1ed 100644 --- a/player/player.gd +++ b/player/player.gd @@ -116,7 +116,6 @@ func _process_cam_shake(delta: float) -> void: camera_transform.basis.x * x + \ camera_transform.basis.y * y - print("v = ", v) %Camera3D.position += v * .5 func _process(delta: float) -> void: