extends Node3D # Called when the node enters the scene tree for the first time. func pow() -> void: var going = true while going: $Hit.force_raycast_update() var hit = $Hit.get_collider() if hit and hit.name == "Player": pass elif not hit: print("hit nothing") break elif "health" in hit: hit.health -= 100 if "on_knockback" in hit: hit.on_knockback() print(hit.name, hit.health) else: print("no health in hit: ", hit.name) break $Hit.add_exception(hit) $Hit.force_raycast_update() var final_point = $Hit.get_collision_point() $Line.position.x = -(final_point - global_position).length() / 2.0 $Line.height = (final_point - global_position).length() # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: $Line.radius -= delta * 0.2 if $Line.radius <= 0.001: queue_free()