godot-shooter / commit
Slight reworking of the spawning code.
World.gd | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/World.gd b/World.gd index ed3ce68..39d2be9 100644 --- a/World.gd +++ b/World.gd @@ -21,22 +21,19 @@ func create_enemy(): enemy.add_to_group("enemies") enemy.connect("enemy_killed", self, "enemy_killed") enemy.connect("tree_exiting", self, "create_enemy") - $Environment.add_child(enemy) - Utils.log("adding enemy at", enemy.global_position) + $Environment.call_deferred("add_child", enemy) func create_health(): var health = Health.instance() health.position = get_new_item_pos() health.connect("tree_exiting", self, "create_health") - $Environment.add_child(health) - Utils.log("adding health at", health.global_position) + $Environment.call_deferred("add_child", health) func create_speed(): var speed = Speed.instance() speed.position = get_new_item_pos() speed.connect("tree_exiting", self, "create_speed") - $Environment.add_child(speed) - Utils.log("adding speed at", speed.global_position) + $Environment.call_deferred("add_child", speed) func _ready() -> void: Input.mouse_mode = Input.MOUSE_MODE_HIDDEN @@ -48,21 +45,20 @@ func _ready() -> void: var function = funcref(self, creator) function.call_func() -func get_new_item_pos() -> Vector2: +func get_new_item_pos(dist_ratio: float = 1.0) -> Vector2: var pos_angle = randi() % 360 var unit_vector = Vector2.UP.rotated(pos_angle) var screen_radius = get_viewport().get_visible_rect().size.length() / 2 + 10 - var enemy_spawn_dist = screen_radius + var enemy_spawn_dist = screen_radius * dist_ratio var pos = unit_vector * enemy_spawn_dist + $Player.global_position return pos func _input(event: InputEvent) -> void: if $Player.dead: return - var size = Vector2( - ProjectSettings.get("display/window/size/width"), - ProjectSettings.get("display/window/size/height")) - var mid = Vector2(size.x / 2.0, size.y / 2.0) + var width = ProjectSettings.get("display/window/size/width") + var height = ProjectSettings.get("display/window/size/height") + var mid = Vector2(width / 2.0, height / 2.0) if event is InputEventScreenTouch && event.pressed: var result = event.position + $Player.position - mid set_destination(result)