Hello there, i have this code that's supposed to aim and preview the trajectory of a projectile before shooting it using a Line2D and raycasts. It should draw a line that reflects in the walls 5 times, but the reflecting only happens 0-3 times at random angles, and i don't know why.

here is a link with what is going on at the moment,

And here's the code.

``````func get_predicted_path(player):

if Input.is_action_pressed("left"):
rotation_degrees -= 1
if Input.is_action_pressed("right"):
rotation_degrees += 1

var starting_point : Vector2
var end_point : Vector2
var normal : Vector2
var reflect : Vector2
var bounces = 0
points = []
var space_state = get_world_2d().direct_space_state
var result

while bounces < max_bounces: #max_bounces = 5
if starting_point == Vector2.ZERO and end_point == Vector2.ZERO and normal == Vector2.ZERO:
#defines the starting values for the loop
starting_point = global_position
end_point = global_position.direction_to(gun_tip.global_position) * diagonal

points.append(to_local(starting_point))

result = space_state.intersect_ray(starting_point, end_point, [player])
if result.empty(): break

end_point = result.position
normal = result.normal
reflect = (starting_point - end_point).reflect(normal) * diagonal

else:
#now the loop begins "for real"
result = space_state.intersect_ray(end_point, end_point + reflect, [player])
if result.empty(): break

starting_point = end_point
end_point = result.position
normal = result.normal
reflect = (starting_point - end_point).reflect(normal) * diagonal

#adds the calculated point in space to an array
points.append(to_local(starting_point))

bounces += 1
update()

func _draw() -> void:
trajectory.clear_points() #trajectory is a line2D
print(points)
for i in points.size(): #goes through all the calculated points and draws the line