From 6b238e72913185b85bb7e3206fc577a0d675cdb7 Mon Sep 17 00:00:00 2001 From: Torsten Date: Thu, 10 Jul 2025 21:20:31 +0200 Subject: [PATCH] ... --- rinkplanner/camera_3d.gd | 5 +++++ rinkplanner/camera_3d.gd.uid | 1 + rinkplanner/rink.tscn | 6 +++--- rinkplanner/skater.gd | 28 ++++++++++++++++++++++++++++ rinkplanner/skater.gd.uid | 1 + rinkplanner/skater.tscn | 8 ++++++-- 6 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 rinkplanner/camera_3d.gd create mode 100644 rinkplanner/camera_3d.gd.uid create mode 100644 rinkplanner/skater.gd create mode 100644 rinkplanner/skater.gd.uid diff --git a/rinkplanner/camera_3d.gd b/rinkplanner/camera_3d.gd new file mode 100644 index 0000000..4337833 --- /dev/null +++ b/rinkplanner/camera_3d.gd @@ -0,0 +1,5 @@ +extends Camera3D +@onready var skater = $"../.." +func _process(delta): + var target_position = skater.global_transform.origin + look_at(target_position, Vector3.UP) diff --git a/rinkplanner/camera_3d.gd.uid b/rinkplanner/camera_3d.gd.uid new file mode 100644 index 0000000..4954efd --- /dev/null +++ b/rinkplanner/camera_3d.gd.uid @@ -0,0 +1 @@ +uid://cbufos2esa5yu diff --git a/rinkplanner/rink.tscn b/rinkplanner/rink.tscn index 88ad307..d5b88d9 100644 --- a/rinkplanner/rink.tscn +++ b/rinkplanner/rink.tscn @@ -21,13 +21,14 @@ albedo_color = Color(0, 0.267906, 0.269092, 1) albedo_texture = SubResource("CanvasTexture_ytmxt") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ytmxt"] -albedo_color = Color(0.593134, 0.593134, 0.593134, 1) albedo_texture = ExtResource("1_aj6nb") +albedo_texture_force_srgb = true uv1_triplanar = true [sub_resource type="Environment" id="Environment_ysbyt"] background_mode = 1 background_color = Color(0.101961, 0.101961, 0.101961, 1) +background_energy_multiplier = 1.25 ambient_light_color = Color(0.674815, 0.674815, 0.674815, 1) tonemap_mode = 2 fog_enabled = true @@ -74,7 +75,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.1524, 0.34107, -3.54622) [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] transform = Transform3D(0.707107, 0.5, -0.5, 0, 0.707107, 0.707107, 0.707107, -0.5, 0.5, 0, 3.08694, 0) -light_energy = 1.25 shadow_enabled = true directional_shadow_mode = 0 directional_shadow_max_distance = 50.0 @@ -94,4 +94,4 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23.4405, 0, 8.09644) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.7868, 0, -6.13789) [node name="Waypoint4" type="CSGBox3D" parent="Waypoints"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.9849, -0.0632343, -9.14554) +transform = Transform3D(0.999999, 0.000245532, 0.00101596, -0.000244175, 0.999999, -0.00130966, -0.00101629, 0.00130941, 0.999999, -16.9849, -0.0632343, -9.14554) diff --git a/rinkplanner/skater.gd b/rinkplanner/skater.gd new file mode 100644 index 0000000..07e6770 --- /dev/null +++ b/rinkplanner/skater.gd @@ -0,0 +1,28 @@ +extends CharacterBody3D + +const SPEED = 5.0 +const JUMP_VELOCITY = 4.5 + +var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") + +func _physics_process(delta): + # Apply gravity + if not is_on_floor(): + velocity.y -= gravity * delta + + # Handle jump + if Input.is_action_just_pressed("ui_accept") and is_on_floor(): + velocity.y = JUMP_VELOCITY + + # Get input direction + var input_dir = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down") + var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() + + if direction: + velocity.x = direction.x * SPEED + velocity.z = direction.z * SPEED + else: + velocity.x = move_toward(velocity.x, 0, SPEED) + velocity.z = move_toward(velocity.z, 0, SPEED) + + move_and_slide() diff --git a/rinkplanner/skater.gd.uid b/rinkplanner/skater.gd.uid new file mode 100644 index 0000000..ca15743 --- /dev/null +++ b/rinkplanner/skater.gd.uid @@ -0,0 +1 @@ +uid://db1ra4er3lrbr diff --git a/rinkplanner/skater.tscn b/rinkplanner/skater.tscn index 0f03f8d..6b649a7 100644 --- a/rinkplanner/skater.tscn +++ b/rinkplanner/skater.tscn @@ -1,12 +1,15 @@ -[gd_scene load_steps=3 format=3 uid="uid://cpdnvt3u4bkfi"] +[gd_scene load_steps=5 format=3 uid="uid://cpdnvt3u4bkfi"] [ext_resource type="PackedScene" uid="uid://prh35jb6tjtd" path="res://addons/gdquest_sophia/sophia_skin.tscn" id="1_j83vg"] +[ext_resource type="Script" uid="uid://db1ra4er3lrbr" path="res://skater.gd" id="1_vo2sv"] +[ext_resource type="Script" uid="uid://cbufos2esa5yu" path="res://camera_3d.gd" id="3_cg4j7"] [sub_resource type="CylinderShape3D" id="CylinderShape3D_jm5wf"] height = 1.65 radius = 0.4 [node name="skater" type="CharacterBody3D"] +script = ExtResource("1_vo2sv") [node name="CollisionShape3D" type="CollisionShape3D" parent="."] shape = SubResource("CylinderShape3D_jm5wf") @@ -18,5 +21,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.766929, 0) transform = Transform3D(1, 0, 0, 0, 0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 1.12031, 0) [node name="Camera3D" type="Camera3D" parent="CameraAnchor"] -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, -28) +transform = Transform3D(-0.677622, -0.234539, 0.697008, -0.666748, 0.59582, -0.447712, -0.310285, -0.768108, -0.560118, 0, 98.1232, 5.93962) fov = 6.3 +script = ExtResource("3_cg4j7")