extends Unit var tick_frequency := 0.5 func _ready(): $TickTimer.wait_time = tick_frequency / Game.speed $TickTimer.start() Game.speed_changed.connect(func(): $TickTimer.wait_time = tick_frequency / Game.speed $TickTimer.start() # calculate remaining time and set fraction accordingly ) $AnimatedSprite.play("dig") func _physics_process(delta: float) -> void: if not is_on_floor(): velocity += get_gravity() * delta * Game.speed $RayGround.force_raycast_update() if not $RayGround.is_colliding(): var default = load("res://Units/Default.tscn").instantiate() default.global_position = global_position get_tree().current_scene.add_child(default) queue_free() move_and_slide() func _on_tick_timer_timeout() -> void: var size = Vector2($NavigationShape.shape.size.x + 4, 4) Game.erase_map( PackedVector2Array([ $DigReference.global_position + (size / 2) * Vector2(-1, -1), $DigReference.global_position + (size / 2) * Vector2(1, -1), $DigReference.global_position + (size / 2) * Vector2(1, 1), $DigReference.global_position + (size / 2) * Vector2(-1, 1), ]), get_tree().current_scene.get_node("GroundCollision"), get_tree().current_scene.get_node("Map") )