Files
project-vivi/Assets/Classes/PlayerCharacter/PlayerCamera3D.tscn
T
ActualHorse ddc86b6554 - Project updated to support the new CharacterBody3D node structure.
- PlayerMovementHandler updated to properly use physics process root motion.
2026-10-04 21:42:59 -04:00

248 lines
9.9 KiB
Plaintext

[gd_scene format=3 uid="uid://clq35hqimrb1e"]
[ext_resource type="Script" uid="uid://dsc716f1ib7si" path="res://Assets/Classes/PlayerCharacter/player_camera_3d.gd" id="1_jltft"]
[ext_resource type="InputResource" uid="uid://dji2q0ekqofcx" path="res://Assets/Input/camera_movement.tres" id="2_udngf"]
[ext_resource type="PackedScene" uid="uid://chpf6tiw7kdgl" path="res://Assets/Classes/GameplayCamera.tscn" id="3_plj6u"]
[ext_resource type="Script" uid="uid://couw105c3bde4" path="res://addons/godot_state_charts/state_chart.gd" id="3_uysnn"]
[ext_resource type="Script" uid="uid://jk2jm1g6q853" path="res://addons/godot_state_charts/compound_state.gd" id="4_udngf"]
[ext_resource type="Script" uid="uid://cytafq8i1y8qm" path="res://addons/godot_state_charts/atomic_state.gd" id="5_7b7xm"]
[ext_resource type="Script" uid="uid://cf1nsco3w0mf6" path="res://addons/godot_state_charts/transition.gd" id="6_58rjj"]
[sub_resource type="Curve" id="Curve_plj6u"]
_data = [Vector2(0, 0), 0.0, 48.095234, 0, 0, Vector2(0.0330033, 0.5802469), 4.620916, 4.620916, 0, 0, Vector2(0.19141915, 0.9506173), 0.17813037, 0.17813037, 0, 0, Vector2(1, 1), 0.041107014, 0.0, 0, 0]
point_count = 4
[sub_resource type="SphereShape3D" id="SphereShape3D_plj6u"]
radius = 0.2
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_34qtn"]
animation = &"slice_time_zoom_in"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_gxs3p"]
animation = &"standard_zoom"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_xwyqw"]
advance_mode = 2
[sub_resource type="Curve" id="Curve_omrbt"]
_data = [Vector2(0, 0), 0.0, 2.8768382, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
point_count = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_p62qo"]
xfade_time = 0.25
xfade_curve = SubResource("Curve_omrbt")
[sub_resource type="Curve" id="Curve_fj36c"]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(1, 1), 2.1381392, 0.0, 0, 0]
point_count = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_x5tn7"]
xfade_time = 0.5
xfade_curve = SubResource("Curve_fj36c")
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_6ql8e"]
states/slice_time_zoom_in/node = SubResource("AnimationNodeAnimation_34qtn")
states/slice_time_zoom_in/position = Vector2(561.6666, -10.333337)
states/standard_zoom/node = SubResource("AnimationNodeAnimation_gxs3p")
states/standard_zoom/position = Vector2(377.66666, 98.55555)
transitions = ["Start", "standard_zoom", SubResource("AnimationNodeStateMachineTransition_xwyqw"), "standard_zoom", "slice_time_zoom_in", SubResource("AnimationNodeStateMachineTransition_p62qo"), "slice_time_zoom_in", "standard_zoom", SubResource("AnimationNodeStateMachineTransition_x5tn7")]
graph_offset = Vector2(-15, -65)
[sub_resource type="Animation" id="Animation_gxs3p"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("CameraGimbalY/CameraGimbalX/SpringArm3D/Camera3D:fov")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [60.0]
}
tracks/1/type = "bezier"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("CameraGimbalY/CameraGimbalX/SpringArm3D/Camera3D:rotation:y")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(-0.2617994, -0.05, 0, 0.05, 0),
"times": PackedFloat32Array(0)
}
[sub_resource type="Animation" id="Animation_34qtn"]
resource_name = "slice_time_zoom_in"
length = 0.1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("CameraGimbalY/CameraGimbalX/SpringArm3D/Camera3D:fov")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [50.0]
}
tracks/1/type = "bezier"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("CameraGimbalY/CameraGimbalX/SpringArm3D/Camera3D:rotation:y")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(-0.2617994, -0.05, 0, 0.05, 0),
"times": PackedFloat32Array(0)
}
tracks/2/type = "bezier"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("CameraGimbalY/CameraGimbalX/SpringArm3D:rotation:x")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.05, 0, 0.05, 0),
"times": PackedFloat32Array(0.1)
}
tracks/3/type = "bezier"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("CameraGimbalY/CameraGimbalX/SpringArm3D:rotation:y")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(-2.8797932, -0.05, 0, 0.05, 0),
"times": PackedFloat32Array(0.1)
}
tracks/4/type = "bezier"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("CameraGimbalY/CameraGimbalX/SpringArm3D:rotation:z")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.05, 0, 0.05, 0),
"times": PackedFloat32Array(0.1)
}
[sub_resource type="Animation" id="Animation_xwyqw"]
resource_name = "standard_zoom"
length = 0.1
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("CameraGimbalY/CameraGimbalX/SpringArm3D/Camera3D:fov")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(60, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
tracks/1/type = "bezier"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("CameraGimbalY/CameraGimbalX/SpringArm3D/Camera3D:rotation:y")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(-0.17453292, -0.05, 0, 0.05, 0),
"times": PackedFloat32Array(0)
}
tracks/2/type = "bezier"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("CameraGimbalY/CameraGimbalX/SpringArm3D:rotation:y")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(-2.9670596, -0.05, 0, 0.05, 0),
"times": PackedFloat32Array(0)
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_p62qo"]
_data = {
&"RESET": SubResource("Animation_gxs3p"),
&"slice_time_zoom_in": SubResource("Animation_34qtn"),
&"standard_zoom": SubResource("Animation_xwyqw")
}
[node name="PlayerCamera3D" type="Node3D" unique_id=832857779 node_paths=PackedStringArray("animation_tree", "camera", "state_chart", "gimbal_x", "gimbal_y")]
script = ExtResource("1_jltft")
follow_max_distance = 0.5
follow_speed = 12.0
follow_distance_curve = SubResource("Curve_plj6u")
animation_tree = NodePath("AnimationTree")
camera = NodePath("CameraGimbalY/CameraGimbalX/SpringArm3D/Camera3D")
state_chart = NodePath("StateChart")
gimbal_x = NodePath("CameraGimbalY/CameraGimbalX")
gimbal_y = NodePath("CameraGimbalY")
_camera_movement_speed = Vector2(2.5, 2.5)
_camera_accelerate_speed = 7.5
_camera_movement_resource = ExtResource("2_udngf")
[node name="CameraGimbalY" type="Node3D" parent="." unique_id=483505300]
[node name="CameraGimbalX" type="Node3D" parent="CameraGimbalY" unique_id=1708449693]
transform = Transform3D(1, 0, 0, 0, 0.96592575, -0.258819, 0, 0.258819, 0.96592575, 0, 0, 0)
[node name="SpringArm3D" type="SpringArm3D" parent="CameraGimbalY/CameraGimbalX" unique_id=26339869]
transform = Transform3D(-0.9848076, 0, -0.17364831, 0, 1.0000001, 0, 0.17364828, 0, -0.98480785, 0, 0, 0)
shape = SubResource("SphereShape3D_plj6u")
spring_length = 2.667
[node name="Camera3D" parent="CameraGimbalY/CameraGimbalX/SpringArm3D" unique_id=1011005417 instance=ExtResource("3_plj6u")]
transform = Transform3D(0.9848075, 0, -0.17364809, 0, 0.99999994, 0, 0.17364813, 0, 0.98480725, 0, 0, 0)
[node name="StateChart" type="Node" parent="." unique_id=874540950]
script = ExtResource("3_uysnn")
metadata/_custom_type_script = "uid://couw105c3bde4"
[node name="MovementModes" type="Node" parent="StateChart" unique_id=686557367]
script = ExtResource("4_udngf")
initial_state = NodePath("Standard")
[node name="Standard" type="Node" parent="StateChart/MovementModes" unique_id=2062985915]
script = ExtResource("5_7b7xm")
[node name="OnSliceTime" type="Node" parent="StateChart/MovementModes/Standard" unique_id=1457596640]
script = ExtResource("6_58rjj")
to = NodePath("../../SliceTime")
event = &"slice_time"
delay_in_seconds = "0.0"
[node name="SliceTime" type="Node" parent="StateChart/MovementModes" unique_id=1562604431]
script = ExtResource("5_7b7xm")
[node name="OnExitSliceTime" type="Node" parent="StateChart/MovementModes/SliceTime" unique_id=1833457444]
script = ExtResource("6_58rjj")
to = NodePath("../../Standard")
event = &"no_more_slice_time"
delay_in_seconds = "0.0"
[node name="AnimationTree" type="AnimationTree" parent="." unique_id=1750187388]
callback_mode_process = 0
tree_root = SubResource("AnimationNodeStateMachine_6ql8e")
anim_player = NodePath("AnimationPlayer")
[node name="AnimationPlayer" type="AnimationPlayer" parent="AnimationTree" unique_id=459304662]
root_node = NodePath("../..")
callback_mode_process = 0
libraries/ = SubResource("AnimationLibrary_p62qo")
[connection signal="state_entered" from="StateChart/MovementModes/Standard" to="." method="_on_standard_state_entered"]
[connection signal="state_entered" from="StateChart/MovementModes/SliceTime" to="." method="_on_slice_time_state_entered"]
[connection signal="state_exited" from="StateChart/MovementModes/SliceTime" to="." method="_on_slice_time_state_exited"]
[connection signal="state_physics_processing" from="StateChart/MovementModes/SliceTime" to="." method="_on_slice_time_state_physics_processing"]