current code:
@tool
extends Node2D
@export var bounces : int = 2
@export var angle : int = 0
@onready var ray_cast: RayCast2D = $RayCast2D
@onready var line_2d: Line2D = $Line2D
func _process(delta: float) -> void:
if Engine.is_editor_hint():
draw_preview()
func draw_preview():
var points = []
var current_pos = Vector2.ZERO
var dir = Vector2.RIGHT.rotated(deg_to_rad(angle))
points.append(current_pos)
for i in bounces:
ray_cast.position = current_pos
if ray_cast.is_colliding():
var collider = ray_cast.get_collider()
dir = dir.bounce(collider.normal)
points.append(collider.position)
else:
points.append(ray_cast.target_position)
line_2d.points = points