small racing game im working on
| -rw-r--r-- | cam.gd | 3 | ||||
| -rw-r--r-- | classes/car.gd | 21 | ||||
| -rw-r--r-- | classes/track.gd | 6 | ||||
| -rw-r--r-- | project.godot | 8 | ||||
| -rw-r--r-- | race.gd | 14 | ||||
| -rw-r--r-- | race.tscn | 21 | ||||
| -rw-r--r-- | scenes/race_high.tscn | 10 | ||||
| -rw-r--r-- | scenes/race_highlevel.gd | 9 | ||||
| -rw-r--r-- | scenes/track-base.gd | 10 | ||||
| -rw-r--r-- | scenes/track.tscn | 67 | ||||
| -rw-r--r-- | start.tscn | 5 | ||||
| -rw-r--r-- | tracks/multilap_test.tres | 4 | ||||
| -rw-r--r-- | tracks/test.tres | 4 | ||||
| -rw-r--r-- | tracks/the fallen tramps.tres | 36 | ||||
| -rw-r--r-- | tracks/the fallen tramps_curve.tres | 8 |
15 files changed, 134 insertions, 92 deletions
@@ -2,7 +2,7 @@ extends Camera3D class_name CarCamera @export var target_distance = 9.0 -@export var target_height = 4.0 +@export var target_height = 6.0 var follow_this: Node3D var last_lookat: Vector3 @@ -11,6 +11,7 @@ func _ready(): global_position = follow_this.global_position + (follow_this.global_transform.basis.z * target_distance) look_at(follow_this.global_position) last_lookat = follow_this.global_position + far = 2000 func target() -> Vector3: var delta_v := global_position - follow_this.global_position diff --git a/classes/car.gd b/classes/car.gd index 5ecd629..2bef84d 100644 --- a/classes/car.gd +++ b/classes/car.gd @@ -38,12 +38,10 @@ func steer(to: float) -> void: right_wheel.rotation.y = _steering * .75 left_wheel.rotation.y = _steering * .75 -func move_mesh(delta: float) -> void: - # just lerp the y due to trimesh bouncing - car_mesh.global_position.x = ball.global_position.x + sphere_offset.x - car_mesh.global_position.z = ball.global_position.z + sphere_offset.z - car_mesh.global_position.y = lerp(car_mesh.global_position.y, ball.global_position.y + sphere_offset.y, 10 * delta) - if !ball.freeze: +func move_mesh(_delta: float) -> void: + car_mesh.global_position.x = ball.global_position.x + sphere_offset.x + car_mesh.global_position.z = ball.global_position.z + sphere_offset.z + car_mesh.global_position.y = ball.global_position.y + sphere_offset.y ball.apply_central_force(-car_mesh.global_transform.basis.z * throttle) func turn(delta: float) -> void: @@ -74,19 +72,16 @@ func limit(delta: float) -> void: func _physics_process(delta: float) -> void: move_mesh(delta) - # if not ground_ray.is_colliding(): - # return - - # print(ball.linear_velocity.normalized().dot(-car_mesh.transform.basis.y)) - # if throttle < 0 && : - # steering = -steering + limit(delta) + if not ground_ray.is_colliding(): + turn(delta/10) + return # drift particles var drift: bool = kph() > 25 and abs(ball.linear_velocity.normalized().dot(-car_mesh.transform.basis.z)) > .5 skid_l.emitting = drift skid_r.emitting = drift - limit(delta) turn(delta) floor_mesh(delta) diff --git a/classes/track.gd b/classes/track.gd index 9764ccc..4e53f3d 100644 --- a/classes/track.gd +++ b/classes/track.gd @@ -2,11 +2,11 @@ extends Resource class_name TrackResource @export_group("Road") ## Width of road -@export var track_width := 17.0 +@export var track_width := 40.0 ## Distance between rails and road @export var rail_distance := 3.0 ## Support base width -@export var lower_support_width := 15.0 +@export var lower_support_width := 25.0 ## Height of supports @export var support_height := 8.0 ## Track curve @@ -35,7 +35,7 @@ class_name TrackResource @export var laps := 1 @export_subgroup("Checkpoints") ## Place the path offsets of checkpoint locations in this array -@export var checkpoints: PackedFloat32Array = [] +@export var checkpoints: Array[float] = [] ## The checkpoint scene @export var checkpoint_scene: PackedScene = preload("res://scenes/ring_checkpoint.tscn") ## How much to scale each checkpoint diff --git a/project.godot b/project.godot index 8bc881f..b9ce718 100644 --- a/project.godot +++ b/project.godot @@ -73,17 +73,15 @@ accel={ "deadzone": 0.5, "events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":5,"axis_value":1.0,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null) ] } brake={ "deadzone": 0.5, "events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":4,"axis_value":1.0,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"echo":false,"script":null) -] -} -shift_up={ -"deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":90,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":1,"pressure":0.0,"pressed":false,"script":null) ] } shift_down={ @@ -1,11 +1,10 @@ extends Node3D class_name Race -@export var car_scene: PackedScene -@export var ghost_scene: PackedScene -@export var track_loader_scene: PackedScene - # in order of initialization +var car_scene: PackedScene +var track_loader_scene: PackedScene +var ghost_scene: PackedScene var track_res: TrackResource var track: TrackLoader var data: TrackSaveableData @@ -27,7 +26,10 @@ signal created_ghost(ghost: GhostCar) signal finished signal split(time: float, prev_time: float) -func initialize(t: TrackResource) -> void: +func _init(t: TrackResource, _car_scene, _ghost_scene, _track_loader_scene) -> void: + car_scene = _car_scene + ghost_scene = _ghost_scene + track_loader_scene = _track_loader_scene track_res = t func mkghost() -> void: @@ -45,7 +47,6 @@ func mkcar() -> void: car.visible = false add_child(car) car.rotation = track.start_rot + Vector3(0, PI, -PI/2) - # car.set_deferred(&"rotation", track.start_rot + Vector3(0, PI, -PI/2)) car.global_position = track.start_pos + Vector3(0, 2, 0) - (car.ball.global_transform.basis.z * 2) # bump forward a teensy bit car.visible = true created_car.emit(car) @@ -81,6 +82,7 @@ func passed_finish() -> void: finished.emit() playing = false print("finished") + timer.stop() if not best_time_data or data.time < best_time_data.time: print("new pb!") SaveLoad.save(saves % track_res.name, data.data()) diff --git a/race.tscn b/race.tscn deleted file mode 100644 index cc6034e..0000000 --- a/race.tscn +++ /dev/null @@ -1,21 +0,0 @@ -[gd_scene load_steps=8 format=3 uid="uid://cech6c4yrmcvq"] - -[ext_resource type="Script" path="res://race.gd" id="1_ckbwd"] -[ext_resource type="Environment" uid="uid://biwshm46yl62v" path="res://default_env.tres" id="2_pnp7e"] -[ext_resource type="PackedScene" uid="uid://bbj2agqv581cd" path="res://assets/cars/kenney_sedan/sedan.blend" id="3_cb3p0"] -[ext_resource type="CameraAttributesPractical" uid="uid://nhsovwj5hjip" path="res://cam.tres" id="3_jx550"] -[ext_resource type="PackedScene" uid="uid://ccn1nk1a0b0sa" path="res://assets/cars/kenney_sedan/sedan.tscn" id="6_nu32e"] -[ext_resource type="PackedScene" uid="uid://cd4a5y0hi58ks" path="res://scenes/floor.tscn" id="10_p60d8"] -[ext_resource type="PackedScene" uid="uid://clw61td2wh84w" path="res://scenes/track.tscn" id="11_6q53c"] - -[node name="race" type="Node3D"] -script = ExtResource("1_ckbwd") -car_scene = ExtResource("6_nu32e") -ghost_scene = ExtResource("3_cb3p0") -track_loader_scene = ExtResource("11_6q53c") - -[node name="Env" type="WorldEnvironment" parent="."] -environment = ExtResource("2_pnp7e") -camera_attributes = ExtResource("3_jx550") - -[node name="Ground" parent="." instance=ExtResource("10_p60d8")] diff --git a/scenes/race_high.tscn b/scenes/race_high.tscn index 3c2a1a9..0c0bb38 100644 --- a/scenes/race_high.tscn +++ b/scenes/race_high.tscn @@ -1,15 +1,19 @@ -[gd_scene load_steps=5 format=3 uid="uid://calx1puxr4eng"] +[gd_scene load_steps=7 format=3 uid="uid://calx1puxr4eng"] [ext_resource type="Script" path="res://scenes/race_highlevel.gd" id="1_q8hua"] -[ext_resource type="PackedScene" uid="uid://cech6c4yrmcvq" path="res://race.tscn" id="2_q333e"] +[ext_resource type="PackedScene" uid="uid://ccn1nk1a0b0sa" path="res://assets/cars/kenney_sedan/sedan.tscn" id="3_cfvv6"] [ext_resource type="PackedScene" uid="uid://vok7fdcyec68" path="res://ui/hud.tscn" id="3_xp6f0"] [ext_resource type="PackedScene" uid="uid://clpo7rt0vkudy" path="res://ui/countdown.tscn" id="4_llox4"] +[ext_resource type="PackedScene" uid="uid://bbj2agqv581cd" path="res://assets/cars/kenney_sedan/sedan.blend" id="4_waubg"] +[ext_resource type="PackedScene" uid="uid://clw61td2wh84w" path="res://scenes/track.tscn" id="5_8mqbt"] [node name="race_high" type="Node"] script = ExtResource("1_q8hua") -race_scene = ExtResource("2_q333e") hud_scene = ExtResource("3_xp6f0") countdown_scene = ExtResource("4_llox4") +car_scene = ExtResource("3_cfvv6") +ghost_scene = ExtResource("4_waubg") +track_loader_scene = ExtResource("5_8mqbt") [node name="tester" type="ColorRect" parent="."] custom_minimum_size = Vector2(1920, 1038) diff --git a/scenes/race_highlevel.gd b/scenes/race_highlevel.gd index 904a00b..00c84cb 100644 --- a/scenes/race_highlevel.gd +++ b/scenes/race_highlevel.gd @@ -1,15 +1,18 @@ extends Splitscreen -@export var race_scene: PackedScene @export var hud_scene: PackedScene @export var countdown_scene: PackedScene +## For lowlevel race +@export var car_scene: PackedScene +@export var ghost_scene: PackedScene +@export var track_loader_scene: PackedScene + var race: Race var huds: Array[HUD] func _ready() -> void: - race = race_scene.instantiate() - race.initialize(Globals.playing) + race = Race.new(Globals.playing, car_scene, ghost_scene, track_loader_scene) add_child(race) add_player() super() diff --git a/scenes/track-base.gd b/scenes/track-base.gd index bffb716..96f9e40 100644 --- a/scenes/track-base.gd +++ b/scenes/track-base.gd @@ -22,6 +22,7 @@ class_name TrackLoader @onready var rail_r := $"Rail-R" as CSGPolygon3D @onready var collision := $CollisionShape as CSGPolygon3D @onready var sun := $Sun as DirectionalLight3D +@onready var ground := $Ground as StaticBody3D var checkpoints: Array[CheckPoint] var finish: Finish @@ -94,9 +95,6 @@ func _update(): vec(-rp - 3.0, 5.0), vec(-rp, 5.0), ]) - # offset - position = track.offset - # objects for child in get_children(): if child is PathFollow3D: @@ -115,7 +113,6 @@ func _update(): else: start_pos = finish.global_position start_rot = finish.global_rotation - start_rot = start_rot.snapped(Vector3(PI/2, PI/2, PI/2)) # loopage rail_l.path_joined = track.is_loop @@ -124,6 +121,9 @@ func _update(): road.path_joined = track.is_loop support.path_joined = track.is_loop + # offset + ground.global_position = track.offset + is_dirty = false func _ready(): @@ -139,4 +139,4 @@ func make_follower(scene: PackedScene, ratio: float, scl: Vector3, collide: bool add_child(follower) follower.scale = scl follower.progress_ratio = ratio # ratio set must be after add_child() - return follower
\ No newline at end of file + return follower diff --git a/scenes/track.tscn b/scenes/track.tscn index 074ce0b..477d253 100644 --- a/scenes/track.tscn +++ b/scenes/track.tscn @@ -1,16 +1,23 @@ -[gd_scene load_steps=5 format=3 uid="uid://clw61td2wh84w"] +[gd_scene load_steps=10 format=3 uid="uid://clw61td2wh84w"] [ext_resource type="Script" path="res://scenes/track-base.gd" id="1_ke7nx"] +[ext_resource type="Curve3D" uid="uid://2d8xnh5nyjq8" path="res://tracks/the fallen tramps_curve.tres" id="1_obdfl"] [ext_resource type="Material" uid="uid://be8pta62kxd2j" path="res://assets/mats/road.tres" id="2_2nntu"] [ext_resource type="Material" uid="uid://dtpgjplswm6lr" path="res://assets/mats/rail.tres" id="2_3pcob"] [ext_resource type="Material" uid="uid://bk4sxd2prmmom" path="res://assets/mats/support.tres" id="3_4570s"] +[ext_resource type="Resource" uid="uid://crtutccbf1sxh" path="res://tracks/the fallen tramps.tres" id="3_avtir"] +[ext_resource type="PackedScene" uid="uid://cd4a5y0hi58ks" path="res://scenes/floor.tscn" id="7_fidh3"] +[ext_resource type="Environment" uid="uid://biwshm46yl62v" path="res://default_env.tres" id="8_2nyv3"] +[ext_resource type="CameraAttributesPractical" uid="uid://nhsovwj5hjip" path="res://cam.tres" id="9_6ooo5"] [node name="TrackLoader" type="Path3D"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.70198, -8.01861, -4.84379) +curve = ExtResource("1_obdfl") script = ExtResource("1_ke7nx") +track = ExtResource("3_avtir") +metadata/_edit_group_ = true [node name="Road" type="CSGPolygon3D" parent="."] -polygon = PackedVector2Array(-8.5, 0, -8.5, -0.1, 8.5, -0.1, 8.5, 0) +polygon = PackedVector2Array(-20, 0, -20, -0.1, 20, -0.1, 20, 0) mode = 2 path_node = NodePath("..") path_interval_type = 0 @@ -20,66 +27,74 @@ path_rotation = 2 path_local = false path_continuous_u = true path_u_distance = 0.0 -path_joined = true +path_joined = false material = ExtResource("2_2nntu") -[node name="CollisionShape" type="CSGPolygon3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.165113, 0) -visible = false -use_collision = true -polygon = PackedVector2Array(-11.5, 0, 11.5, 0, 11.5, 5, 14.5, 5, 14.5, -1, -14.5, -1, -14.5, 5, -11.5, 5) +[node name="Rail-L" type="CSGPolygon3D" parent="."] +polygon = PackedVector2Array(23, 0.5, 22.95, 0.47, 22.95, 0.43, 23, 0.4, 23, 0.55, 22.95, 0.32, 22.95, 0.28, 23, 0.25, 23.05, 0.25, 23.05, 0.5) mode = 2 path_node = NodePath("..") path_interval_type = 0 path_interval = 1.0 -path_simplify_angle = 3.0 +path_simplify_angle = 4.0 path_rotation = 2 path_local = false path_continuous_u = true path_u_distance = 1.0 -path_joined = true +path_joined = false +material = ExtResource("2_3pcob") -[node name="Rail-L" type="CSGPolygon3D" parent="."] -polygon = PackedVector2Array(11.5, 0.5, 11.45, 0.47, 11.45, 0.43, 11.5, 0.4, 11.5, 0.55, 11.45, 0.32, 11.45, 0.28, 11.5, 0.25, 11.55, 0.25, 11.55, 0.5) +[node name="Rail-R" type="CSGPolygon3D" parent="."] +polygon = PackedVector2Array(-23, 0.5, -22.95, 0.47, -22.95, 0.43, -23, 0.4, -23, 0.55, -22.95, 0.32, -22.95, 0.28, -23, 0.25, -23.05, 0.25, -23.05, 0.5) mode = 2 path_node = NodePath("..") path_interval_type = 0 path_interval = 1.0 -path_simplify_angle = 2.0 +path_simplify_angle = 4.0 path_rotation = 2 path_local = false path_continuous_u = true path_u_distance = 1.0 -path_joined = true -material = ExtResource("2_3pcob") +path_joined = false -[node name="Rail-R" type="CSGPolygon3D" parent="."] -polygon = PackedVector2Array(-11.5, 0.5, -11.45, 0.47, -11.45, 0.43, -11.5, 0.4, -11.5, 0.55, -11.45, 0.32, -11.45, 0.28, -11.5, 0.25, -11.55, 0.25, -11.55, 0.5) +[node name="Support" type="CSGPolygon3D" parent="."] +polygon = PackedVector2Array(-22, -1, 22, -1, 25.1, -2, -25, -2) mode = 2 path_node = NodePath("..") path_interval_type = 0 path_interval = 1.0 -path_simplify_angle = 2.0 +path_simplify_angle = 5.0 path_rotation = 2 path_local = false path_continuous_u = true path_u_distance = 1.0 -path_joined = true +path_joined = false +material = ExtResource("3_4570s") -[node name="Support" type="CSGPolygon3D" parent="."] -polygon = PackedVector2Array(-10.5, -0.17, 10.5, -0.17, 15.1, -8, -15, -8) +[node name="Sun" type="DirectionalLight3D" parent="."] +transform = Transform3D(-0.992546, -0.0211624, 0.120018, -4.42191e-09, 0.984808, 0.173648, -0.121869, 0.172354, -0.977467, 0, 0, 0) + +[node name="Env" type="WorldEnvironment" parent="."] +environment = ExtResource("8_2nyv3") +camera_attributes = ExtResource("9_6ooo5") + +[node name="CollisionShape" type="CSGPolygon3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.165113, 0) +visible = false +use_collision = true +polygon = PackedVector2Array(-23, 0, 23, 0, 23, 5, 26, 5, 26, -1, -26, -1, -26, 5, -23, 5) mode = 2 path_node = NodePath("..") path_interval_type = 0 path_interval = 1.0 -path_simplify_angle = 3.0 +path_simplify_angle = 5.0 path_rotation = 2 path_local = false path_continuous_u = true path_u_distance = 1.0 -path_joined = true -material = ExtResource("3_4570s") +path_joined = false -[node name="Sun" type="DirectionalLight3D" parent="."] +[node name="Ground" parent="." instance=ExtResource("7_fidh3")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -200, 0) [connection signal="curve_changed" from="." to="." method="_on_curve_changed"] @@ -1,10 +1,11 @@ -[gd_scene load_steps=6 format=3 uid="uid://bvfqaoqjsxj73"] +[gd_scene load_steps=7 format=3 uid="uid://bvfqaoqjsxj73"] [ext_resource type="Theme" uid="uid://ch2uo5qd8ubx6" path="res://ui/theme.tres" id="1_gm0ws"] [ext_resource type="Script" path="res://ui/tracks.gd" id="2_po2ce"] [ext_resource type="Resource" uid="uid://crye0ijvmtsyb" path="res://tracks/multilap_test.tres" id="3_0yjp1"] [ext_resource type="Resource" uid="uid://de46bcu1ivmtq" path="res://tracks/test.tres" id="4_3xqvr"] [ext_resource type="PackedScene" uid="uid://calx1puxr4eng" path="res://scenes/race_high.tscn" id="5_m5kci"] +[ext_resource type="Resource" uid="uid://crtutccbf1sxh" path="res://tracks/the fallen tramps.tres" id="5_qwie6"] [node name="start" type="Control"] layout_mode = 3 @@ -39,5 +40,5 @@ theme_override_constants/h_separation = 15 theme_override_constants/v_separation = 15 columns = 5 script = ExtResource("2_po2ce") -tracks = Array[Resource("res://classes/track.gd")]([ExtResource("3_0yjp1"), ExtResource("4_3xqvr")]) +tracks = Array[Resource("res://classes/track.gd")]([ExtResource("3_0yjp1"), ExtResource("4_3xqvr"), ExtResource("5_qwie6")]) race = ExtResource("5_m5kci") diff --git a/tracks/multilap_test.tres b/tracks/multilap_test.tres index 8c7c586..298fba4 100644 --- a/tracks/multilap_test.tres +++ b/tracks/multilap_test.tres @@ -21,9 +21,9 @@ sun_y = 0 overview_height = 250.0 name = "multilap test" is_loop = true -offset = Vector3(0, 1, 0) +offset = Vector3(0, -2, 0) laps = 3 -checkpoints = [0.2, 0.6] +checkpoints = Array[float]([0.2, 0.6]) checkpoint_scene = ExtResource("1_ehf5p") checkpoint_scale = Vector3(1, 1, 1) checkpoint_needs_collision = true diff --git a/tracks/test.tres b/tracks/test.tres index 1214bfe..b30bdca 100644 --- a/tracks/test.tres +++ b/tracks/test.tres @@ -20,9 +20,9 @@ sun_y = 0 overview_height = 200.0 name = "test" is_loop = false -offset = Vector3(0, 1, 0) +offset = Vector3(0, -2, 0) laps = 1 -checkpoints = [0.5] +checkpoints = Array[float]([0.5]) checkpoint_scene = ExtResource("1_ra7ed") checkpoint_scale = Vector3(0.4, 0.4, 0.4) checkpoint_needs_collision = true diff --git a/tracks/the fallen tramps.tres b/tracks/the fallen tramps.tres new file mode 100644 index 0000000..ed4cfb6 --- /dev/null +++ b/tracks/the fallen tramps.tres @@ -0,0 +1,36 @@ +[gd_resource type="Resource" script_class="TrackResource" load_steps=6 format=3 uid="uid://crtutccbf1sxh"] + +[ext_resource type="PackedScene" uid="uid://d4a3e1w62m3ck" path="res://scenes/ring_checkpoint.tscn" id="1_i8s2b"] +[ext_resource type="PackedScene" uid="uid://t8ywjcjgw322" path="res://scenes/ring_finish.tscn" id="2_107h2"] +[ext_resource type="Script" path="res://classes/track.gd" id="3_8gwjo"] +[ext_resource type="PackedScene" uid="uid://bsftidvcmsha0" path="res://scenes/ring_start.tscn" id="4_7opiu"] +[ext_resource type="Curve3D" uid="uid://2d8xnh5nyjq8" path="res://tracks/the fallen tramps_curve.tres" id="5_r5vwn"] + +[resource] +script = ExtResource("3_8gwjo") +track_width = 40.0 +rail_distance = 3.0 +lower_support_width = 25.0 +support_height = 2.0 +track = ExtResource("5_r5vwn") +left_barrier = true +right_barrier = true +sun_x = -10 +sun_y = 173 +overview_height = 500.0 +name = "the fallen tramps" +is_loop = false +offset = Vector3(0, -200, 0) +laps = 1 +checkpoints = Array[float]([0.3, 0.65]) +checkpoint_scene = ExtResource("1_i8s2b") +checkpoint_scale = Vector3(1, 1, 1) +checkpoint_needs_collision = true +finish_location = 1.0 +finish_scene = ExtResource("2_107h2") +finish_scale = Vector3(3, 3, 3) +finish_needs_collision = true +start_location = 0.02 +start_scene = ExtResource("4_7opiu") +start_scale = Vector3(1, 1, 1) +start_needs_collision = true diff --git a/tracks/the fallen tramps_curve.tres b/tracks/the fallen tramps_curve.tres new file mode 100644 index 0000000..a58956a --- /dev/null +++ b/tracks/the fallen tramps_curve.tres @@ -0,0 +1,8 @@ +[gd_resource type="Curve3D" format=3 uid="uid://2d8xnh5nyjq8"] + +[resource] +_data = { +"points": PackedVector3Array(37.391, -10.7008, -37.7107, -37.391, 10.7008, 37.7107, 330.708, 88.7112, -74.4047, 84.4839, 47.4017, -49.9644, -82.8519, -46.486, 48.9991, 111.976, 8.1174, 38.3802, 126.492, -39.8907, 104.311, -126.492, 39.8907, -104.311, -131.577, 4, 139.526, 1.75706, -40.5922, 55.4782, -1.75706, 40.5922, -55.4782, -70.4745, -12.0589, -102.896, 9.32288, 2.08416, 54.7418, 0, 0, 0, -45.7354, -31.2662, -198.668), +"tilts": PackedFloat32Array(1.5708, 0, 0, 0, 0) +} +point_count = 5 |