From 498dbf5ef5e8000f96ed51402e73a28968f84258 Mon Sep 17 00:00:00 2001 From: Torsten Date: Sat, 26 Jul 2025 09:46:46 +0200 Subject: [PATCH] looping skater through 4 static waypoints --- rinkplanner/avatar.gd | 25 +++++++++++++++++++++---- rinkplanner/rink.tscn | 6 +++--- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/rinkplanner/avatar.gd b/rinkplanner/avatar.gd index 84b8e41..822efc0 100644 --- a/rinkplanner/avatar.gd +++ b/rinkplanner/avatar.gd @@ -1,15 +1,32 @@ extends CharacterBody3D -@export var target_node: NodePath +@export var target_node: Node3D @export var speed: float = 5.0 +@export var waypoints: Array[Node3D] = [] +var wp_index=0 + func _physics_process(delta: float) -> void: - var target = get_node(target_node) + #var target = get_node(target_node) + var target = waypoints[wp_index] + if target: var direction = (target.global_transform.origin - global_transform.origin) - if direction.length() > 0.1: + # looking at target + print(wp_index," ", direction.length()) + + var target_dir = (target.position - global_transform.origin).normalized() + var current_dir = global_transform.basis.z.normalized() + var lerp_dir = current_dir.lerp(target_dir, delta * speed) + if direction.length() > 1.0: + look_at(target.global_transform.origin + lerp_dir, Vector3.UP) direction = direction.normalized() velocity = direction * speed move_and_slide() else: - velocity = Vector3.ZERO + #velocity = Vector3.ZERO + wp_index+=1 + if wp_index==len(waypoints): + wp_index=0 + target = waypoints[wp_index] + print(wp_index) diff --git a/rinkplanner/rink.tscn b/rinkplanner/rink.tscn index 63c81f6..86fd3c1 100644 --- a/rinkplanner/rink.tscn +++ b/rinkplanner/rink.tscn @@ -105,12 +105,12 @@ transform = Transform3D(0.999999, 0.000245532, 0.00101596, -0.000244175, 0.99999 [node name="Camera3D" type="Camera3D" parent="."] transform = Transform3D(1, 0, 0, 0, 0.484031, 0.875051, 0, -0.875051, 0.484031, 0, 23.5809, 16.7921) -[node name="CharacterBody3D" type="CharacterBody3D" parent="."] +[node name="CharacterBody3D" type="CharacterBody3D" parent="." node_paths=PackedStringArray("waypoints")] script = ExtResource("2_28a8u") -target_node = NodePath("../Waypoints/Waypoint1") +waypoints = [NodePath("../Waypoints/Waypoint1"), NodePath("../Waypoints/Waypoint2"), NodePath("../Waypoints/Waypoint3"), NodePath("../Waypoints/Waypoint4")] [node name="Flieger" type="MeshInstance3D" parent="CharacterBody3D"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.776744, -0.485335, 0.191815) +transform = Transform3D(-0.999657, 0, -0.026177, 0, 1, 0, 0.026177, 0, -0.999657, -0.776744, -0.485335, 0.191815) mesh = ExtResource("3_28a8u") skeleton = NodePath("../..")