wip: train dollies

This commit is contained in:
tiger tiger tiger 2026-01-20 12:37:17 +01:00
parent 7e74639207
commit 8fe40f44d4
8 changed files with 70 additions and 18 deletions

View File

@ -1,4 +1,35 @@
## A dolly tweens all contents to and from two destination points ## A dolly tweens all contents to and from two destination points, and to its origin.
class_name Dolly class_name Dolly
extends Node3D extends Node3D
@export var start_arrived : bool = false
@export var arrival_time : float = 10.0
@export var leave_time : float = 12.0
@onready var origination : Node3D = $Origination
@onready var destination : Node3D = $Destination
var tween : Tween = null
func _ready() -> void:
if not start_arrived:
for child in get_children(true):
if not child.visible: continue
child.global_position = origination.global_position
func arrive() -> void:
if tween: tween.kill()
tween = create_tween().set_trans(Tween.TRANS_CIRC).set_ease(Tween.EASE_OUT)
for child in get_children(true):
if not child.visible: continue
tween.parallel().tween_property(child, "global_position", self.global_position, arrival_time)
func leave() -> void:
if tween: tween.kill()
tween = create_tween().set_trans(Tween.TRANS_QUART).set_ease(Tween.EASE_IN)
for child in get_children(true):
if not child.visible: continue
tween.parallel().tween_property(child, "global_position", destination.global_position, leave_time)

View File

@ -27,11 +27,19 @@ func start_room():
await Main.curtain.open() await Main.curtain.open()
$Track2Dolly.arrive()
$Track1Dolly.arrive()
await get_tree().create_timer(20).timeout await get_tree().create_timer(20).timeout
_set_signage_texts("signage2", "Verkehr z. Zt.\nunregelmäßig") _set_signage_texts("signage2", "Verkehr z. Zt.\nunregelmäßig")
$Track2Dolly.leave()
await get_tree().create_timer(10).timeout await get_tree().create_timer(10).timeout
_set_signage_texts("signage1", "Bitte Ansage\nbeachten") _set_signage_texts("signage1", "Bitte Ansage\nbeachten")
$Track1Dolly.leave()

View File

@ -545,11 +545,11 @@ shape = SubResource("BoxShape3D_e75no")
[node name="Track1Dolly" parent="." instance=ExtResource("17_yfan7")] [node name="Track1Dolly" parent="." instance=ExtResource("17_yfan7")]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, -0.2, -32.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.2, -0.2, -32.5)
[node name="Track2Dolly" parent="." instance=ExtResource("17_yfan7")] [node name="Track2Dolly" parent="." instance=ExtResource("17_yfan7")]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.5, -0.2, -32.5) transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -6.2, -0.2, -32.5)
[node name="Stations" type="Node3D" parent="."] [node name="Stations" type="Node3D" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
@ -557,6 +557,16 @@ unique_name_in_owner = true
[node name="StationDolly" type="Node3D" parent="Stations"] [node name="StationDolly" type="Node3D" parent="Stations"]
unique_name_in_owner = true unique_name_in_owner = true
script = ExtResource("5_yfan7") script = ExtResource("5_yfan7")
start_arrived = true
metadata/_custom_type_script = "uid://dgfje4druu3sw"
[node name="Origination" type="Node3D" parent="Stations/StationDolly"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 130)
visible = false
[node name="Destination" type="Node3D" parent="Stations/StationDolly"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -130)
visible = false
[node name="SubwayMap3D" type="Node3D" parent="Stations/StationDolly"] [node name="SubwayMap3D" type="Node3D" parent="Stations/StationDolly"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.4, -22.624) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.4, -22.624)

View File

@ -77,15 +77,18 @@ shader_parameter/vertical_emission = SubResource("GradientTexture1D_v43sq")
[node name="TrainDolly" type="Node3D"] [node name="TrainDolly" type="Node3D"]
script = ExtResource("1_5jpg8") script = ExtResource("1_5jpg8")
metadata/_custom_type_script = "uid://dgfje4druu3sw"
[node name="West" type="Node3D" parent="."] [node name="Destination" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 130) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 130)
visible = false
[node name="East" type="Node3D" parent="."] [node name="Origination" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -130) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -130)
visible = false
[node name="Train" type="Node3D" parent="."] [node name="Train" type="Node3D" parent="."]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 0, 0, 0) transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, 0, 0)
[node name="subway_train" parent="Train" instance=ExtResource("1_2h2xx")] [node name="subway_train" parent="Train" instance=ExtResource("1_2h2xx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7804413, 0, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7804413, 0, 0)

View File

@ -293,10 +293,9 @@ libraries = {
} }
[node name="VoxelGI" type="VoxelGI" parent="." index="2"] [node name="VoxelGI" type="VoxelGI" parent="." index="2"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.3, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.406781, 0)
layers = 4 layers = 4
subdiv = 0 size = Vector3(35, 4.708557, 7)
size = Vector3(35, 3.5, 5)
data = ExtResource("5_q0ort") data = ExtResource("5_q0ort")
[node name="SpotLight3D" type="SpotLight3D" parent="." index="3"] [node name="SpotLight3D" type="SpotLight3D" parent="." index="3"]

File diff suppressed because one or more lines are too long

View File

@ -627,7 +627,7 @@ transform = Transform3D(1, 0, 0, 0, 0.642787, -0.766044, 0, 0.766044, 0.642787,
[node name="Camera3D" type="Camera3D" parent="Yaw/Pitch/Mount"] [node name="Camera3D" type="Camera3D" parent="Yaw/Pitch/Mount"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.202, 0.157) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.202, 0.157)
cull_mask = 3 cull_mask = 7
current = true current = true
[node name="RayCast3D" type="RayCast3D" parent="Yaw/Pitch/Mount/Camera3D"] [node name="RayCast3D" type="RayCast3D" parent="Yaw/Pitch/Mount/Camera3D"]

View File

@ -15,7 +15,7 @@ compatibility/default_parent_skeleton_in_mesh_instance_3d=true
[application] [application]
config/name="Frame of Mind" config/name="Frame of Mind"
run/main_scene="uid://fgp3s28h7msy" run/main_scene="uid://fgp3tbah7msy"
config/use_custom_user_dir=true config/use_custom_user_dir=true
config/features=PackedStringArray("4.5", "Forward Plus") config/features=PackedStringArray("4.5", "Forward Plus")
boot_splash/bg_color=Color(0.0313726, 0.0117647, 0.129412, 1) boot_splash/bg_color=Color(0.0313726, 0.0117647, 0.129412, 1)
@ -211,6 +211,7 @@ locale/test="de"
[layer_names] [layer_names]
3d_render/layer_3="Trains"
2d_physics/layer_1="World" 2d_physics/layer_1="World"
3d_physics/layer_1="Scene Geometry" 3d_physics/layer_1="Scene Geometry"
2d_physics/layer_2="Stickies" 2d_physics/layer_2="Stickies"