1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
extends Line2D @export var track: TrackLoader @export var car: Node3D @export var player_color: Color func _ready() -> void: clear_points() width = track.track.track_width # am on the fence about outlining # var outline := Line2D.new() # outline.width = width + 10 # outline.default_color = Color.BLACK # outline.show_behind_parent = true # outline.antialiased = true # outline.joint_mode = LINE_JOINT_ROUND # add_child(outline) for point_3d in track.curve.get_baked_points(): var p := flatten(point_3d) add_point(p) # outline.add_point(p) func _process(_delta: float) -> void: queue_redraw() func _draw() -> void: var point := flatten(track.curve.get_closest_point(car.ball.global_position)) draw_circle(point, width / 2, player_color) func flatten(vec: Vector3) -> Vector2: return Vector2(vec.x, vec.z)