Path3D volgen op Terrain met hoogteverschil script

Godot Version

4.4

Question

Im trying to let a path3d follow the height difference of a terrain(Terrain3D) and found something about a script using raycast.
But what I try is not working. Anyone familiar with this?

extends Path3D

@export var terrain: Node3D # Sleep hier je Terrain3D-node in
@export var start_point: Vector3 = Vector3(0, 0, 0) # Startpunt van het pad
@export var end_point: Vector3 = Vector3(100, 0, 100) # Eindpunt van het pad
@export var point_count: int = 10 # Aantal punten langs het pad

func _ready():
    if terrain == null:
        push_error("Geen Terrain3D gekoppeld! Koppel een terrein in de editor.")
        return

    # Genereer punten tussen start- en eindpunt
    var points = generate_points(start_point, end_point, point_count)
    var adjusted_points = []

    for point in points:
        var height = get_terrain_height(point.x, point.z)
        adjusted_points.append(Vector3(point.x, height, point.z))

    # Stel de Path3D-curve in met de aangepaste punten
    curve.clear_points()
    for adjusted_point in adjusted_points:
        curve.add_point(adjusted_point)

func generate_points(start: Vector3, end: Vector3, count: int) -> Array:
    var points = []
    for i in range(count):
        var t = float(i) / (count - 1) # Normaliseer tussen 0 en 1
        points.append(start.lerp(end, t))
    return points

func get_terrain_height(x: float, z: float) -> float:
    var ray = {
        "from": Vector3(x, 1000, z), # Raycast startpositie (hoog boven het terrein)
        "to": Vector3(x, -1000, z) # Raycast eindpositie (laag onder het terrein)
    }

    var space_state = get_world_3d().direct_space_state
    var result = space_state.intersect_ray(ray) # Ray-informatie wordt als dictionary meegegeven

    if result.has("position"):
        return result.position.y # Retourneer de y-hoogte van het terrein
    return 0 # Standaardhoogte als er geen hit is