extends Sprite2D
@onready var shadow: Sprite2D = $shadow
@onready var ray_cast_2d: RayCast2D = $RayCast2D
var speed: float = 120.0
var direction: Vector2 = Vector2.RIGHT
func _ready() → void:
Make sure raycast faces the direction of travel
ray_cast_2d.rotation = 0
func _physics_process(delta: float) → void:
Move the bullet forward
global_position += direction.rotated(rotation) * speed * delta
# Update shadow position
shadow.position = Vector2(-2, 2).rotated(-rotation)
# --- CLEAN COLLISION LOGIC ---
if ray_cast_2d.is_colliding():
var collider = ray_cast_2d.get_collider()
# Enemy takes damage
if collider.is_in_group("ENEMY"):
if collider.has_method("take_hit"):
collider.take_hit()
else:
collider.queue_free() # fallback
# destroy bullet after hit
queue_free()
func _on_distance_timeout_timeout() → void:
queue_free()

