Files
2026-04-10 17:53:31 -05:00

384 lines
16 KiB
Plaintext

[gd_scene load_steps=59 format=3 uid="uid://dhfawoy2d8lsq"]
[ext_resource type="Texture2D" uid="uid://cejt0nhot8uw4" path="res://assets/character/gobbo.png" id="2_0vjlc"]
[ext_resource type="Script" uid="uid://dwbhtjvpv0utl" path="res://scripts/states/StateMachine.cs" id="2_5y66v"]
[ext_resource type="Script" uid="uid://dvytggb7uhxsf" path="res://scripts/Player.cs" id="2_wmtbp"]
[ext_resource type="PackedScene" uid="uid://ciycf4hbxu0v5" path="res://assets/character/model.tscn" id="3_0vjlc"]
[ext_resource type="Script" uid="uid://dv3sve5vfcn55" path="res://scripts/states/player/PlayerGrounded.cs" id="3_wmtbp"]
[ext_resource type="Script" uid="uid://desj0bmav00ec" path="res://scripts/states/player/PlayerAirborn.cs" id="4_5y66v"]
[ext_resource type="Script" uid="uid://dn3js76wk06we" path="res://scripts/states/player/PlayerWallGrab.cs" id="5_uicah"]
[sub_resource type="LabelSettings" id="LabelSettings_wmtbp"]
font_size = 24
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_g2qfr"]
animation = &"parachute_up_left"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_e5n5u"]
animation = &"parachute_down_left"
[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_jb4us"]
blend_point_0/node = SubResource("AnimationNodeAnimation_g2qfr")
blend_point_0/pos = -100.0
blend_point_1/node = SubResource("AnimationNodeAnimation_e5n5u")
blend_point_1/pos = 100.0
min_space = -100.0
max_space = 100.0
sync = true
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_x06ku"]
animation = &"parachute_up_right"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_pygui"]
animation = &"parachute_down_right"
[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_okkwj"]
blend_point_0/node = SubResource("AnimationNodeAnimation_x06ku")
blend_point_0/pos = -100.0
blend_point_1/node = SubResource("AnimationNodeAnimation_pygui")
blend_point_1/pos = 100.0
min_space = -100.0
max_space = 100.0
sync = true
[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_erpy8"]
blend_point_0/node = SubResource("AnimationNodeBlendSpace1D_jb4us")
blend_point_0/pos = -1.0
blend_point_1/node = SubResource("AnimationNodeBlendSpace1D_okkwj")
blend_point_1/pos = 1.0
sync = true
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_erpy8"]
animation = &"airborne_up_left"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_uicah"]
animation = &"airborne_down_left"
[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_g2qfr"]
blend_point_0/node = SubResource("AnimationNodeAnimation_erpy8")
blend_point_0/pos = -100.0
blend_point_1/node = SubResource("AnimationNodeAnimation_uicah")
blend_point_1/pos = 100.0
min_space = -100.0
max_space = 100.0
sync = true
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_vreni"]
animation = &"airborne_up_right"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_7r6u0"]
animation = &"airborne_down_right"
[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_e5n5u"]
blend_point_0/node = SubResource("AnimationNodeAnimation_vreni")
blend_point_0/pos = -100.0
blend_point_1/node = SubResource("AnimationNodeAnimation_7r6u0")
blend_point_1/pos = 100.0
min_space = -100.0
max_space = 100.0
sync = true
[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_wmtbp"]
blend_point_0/node = SubResource("AnimationNodeBlendSpace1D_g2qfr")
blend_point_0/pos = -1.0
blend_point_1/node = SubResource("AnimationNodeBlendSpace1D_e5n5u")
blend_point_1/pos = 1.0
sync = true
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vreni"]
switch_mode = 1
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_e5n5u"]
xfade_time = 0.2
switch_mode = 1
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ba010"]
xfade_time = 0.2
switch_mode = 1
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_erpy8"]
states/Parachute/node = SubResource("AnimationNodeBlendSpace1D_erpy8")
states/Parachute/position = Vector2(596, 87)
states/Standard/node = SubResource("AnimationNodeBlendSpace1D_wmtbp")
states/Standard/position = Vector2(368, 87)
states/Start/position = Vector2(197, 87)
transitions = ["Start", "Standard", SubResource("AnimationNodeStateMachineTransition_vreni"), "Standard", "Parachute", SubResource("AnimationNodeStateMachineTransition_e5n5u"), "Parachute", "Standard", SubResource("AnimationNodeStateMachineTransition_ba010")]
graph_offset = Vector2(-169, -32)
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_wmtbp"]
animation = &"idle_left"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_5y66v"]
animation = &"idle_right"
[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_uicah"]
blend_point_0/node = SubResource("AnimationNodeAnimation_wmtbp")
blend_point_0/pos = -1.0
blend_point_1/node = SubResource("AnimationNodeAnimation_5y66v")
blend_point_1/pos = 1.0
sync = true
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_jb4us"]
animation = &"skidturn_left_to_right"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ux0ro"]
animation = &"skidturn_right_to_left"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_vhx6d"]
animation = &"sprint_left"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_2smwq"]
animation = &"sprint_right"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_x06ku"]
xfade_time = 0.05
switch_mode = 1
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_pygui"]
xfade_time = 0.1
switch_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_okkwj"]
xfade_time = 0.05
switch_mode = 1
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_p86hl"]
xfade_time = 0.1
switch_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_71sfj"]
xfade_time = 0.15
switch_mode = 1
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_o0173"]
xfade_time = 0.15
switch_mode = 1
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ux0ro"]
xfade_time = 0.15
switch_mode = 1
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vhx6d"]
xfade_time = 0.15
switch_mode = 1
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_g2qfr"]
states/End/position = Vector2(836.5, -7)
states/Start/position = Vector2(494, 78)
states/skidturn_left_to_right/node = SubResource("AnimationNodeAnimation_jb4us")
states/skidturn_left_to_right/position = Vector2(494, 152)
states/skidturn_right_to_left/node = SubResource("AnimationNodeAnimation_ux0ro")
states/skidturn_right_to_left/position = Vector2(489, -7)
states/sprint_left/node = SubResource("AnimationNodeAnimation_vhx6d")
states/sprint_left/position = Vector2(345, 78)
states/sprint_right/node = SubResource("AnimationNodeAnimation_2smwq")
states/sprint_right/position = Vector2(653, 78)
transitions = ["sprint_right", "skidturn_right_to_left", SubResource("AnimationNodeStateMachineTransition_x06ku"), "skidturn_right_to_left", "sprint_left", SubResource("AnimationNodeStateMachineTransition_pygui"), "sprint_left", "skidturn_left_to_right", SubResource("AnimationNodeStateMachineTransition_okkwj"), "skidturn_left_to_right", "sprint_right", SubResource("AnimationNodeStateMachineTransition_p86hl"), "Start", "sprint_left", SubResource("AnimationNodeStateMachineTransition_71sfj"), "Start", "sprint_right", SubResource("AnimationNodeStateMachineTransition_o0173"), "skidturn_left_to_right", "skidturn_right_to_left", SubResource("AnimationNodeStateMachineTransition_ux0ro"), "skidturn_right_to_left", "skidturn_left_to_right", SubResource("AnimationNodeStateMachineTransition_vhx6d")]
graph_offset = Vector2(147.187, -50.844)
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_xub24"]
animation = &"walk_left"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_iinkm"]
animation = &"walk_right"
[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_vreni"]
blend_point_0/node = SubResource("AnimationNodeAnimation_xub24")
blend_point_0/pos = -1.0
blend_point_1/node = SubResource("AnimationNodeAnimation_iinkm")
blend_point_1/pos = 1.0
sync = true
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_7r6u0"]
xfade_time = 0.05
switch_mode = 1
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_wmtbp"]
xfade_time = 0.1
switch_mode = 1
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_5y66v"]
xfade_time = 0.1
switch_mode = 1
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_uicah"]
xfade_time = 0.1
switch_mode = 1
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_g2qfr"]
xfade_time = 0.1
switch_mode = 1
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_xub24"]
xfade_time = 0.2
switch_mode = 1
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_iinkm"]
xfade_time = 0.2
switch_mode = 1
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_e5n5u"]
states/Idle/node = SubResource("AnimationNodeBlendSpace1D_uicah")
states/Idle/position = Vector2(474, 141)
states/Sprint/node = SubResource("AnimationNodeStateMachine_g2qfr")
states/Sprint/position = Vector2(645, 100)
states/Start/position = Vector2(275, 100)
states/Walk/node = SubResource("AnimationNodeBlendSpace1D_vreni")
states/Walk/position = Vector2(474, 39)
transitions = ["Start", "Idle", SubResource("AnimationNodeStateMachineTransition_7r6u0"), "Walk", "Idle", SubResource("AnimationNodeStateMachineTransition_wmtbp"), "Idle", "Walk", SubResource("AnimationNodeStateMachineTransition_5y66v"), "Idle", "Sprint", SubResource("AnimationNodeStateMachineTransition_uicah"), "Sprint", "Idle", SubResource("AnimationNodeStateMachineTransition_g2qfr"), "Walk", "Sprint", SubResource("AnimationNodeStateMachineTransition_xub24"), "Sprint", "Walk", SubResource("AnimationNodeStateMachineTransition_iinkm")]
graph_offset = Vector2(-79, -34)
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_erpy8"]
switch_mode = 1
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_k0yad"]
xfade_time = 0.1
switch_mode = 1
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_jb4us"]
xfade_time = 0.1
switch_mode = 1
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_jb4us"]
states/Airborne/node = SubResource("AnimationNodeStateMachine_erpy8")
states/Airborne/position = Vector2(375, 33)
states/Grounded/node = SubResource("AnimationNodeStateMachine_e5n5u")
states/Grounded/position = Vector2(375, 128)
states/Start/position = Vector2(210, 128)
transitions = ["Start", "Grounded", SubResource("AnimationNodeStateMachineTransition_erpy8"), "Grounded", "Airborne", SubResource("AnimationNodeStateMachineTransition_k0yad"), "Airborne", "Grounded", SubResource("AnimationNodeStateMachineTransition_jb4us")]
graph_offset = Vector2(-133, -13.4125)
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_0vjlc"]
radius = 2.0
height = 7.0
[node name="Player" type="CharacterBody2D"]
collision_mask = 2
script = ExtResource("2_wmtbp")
[node name="StateLabel" type="Label" parent="."]
offset_left = -3.0
offset_top = 2.0
offset_right = 57.0
offset_bottom = 36.0
scale = Vector2(0.1, 0.1)
text = "State"
label_settings = SubResource("LabelSettings_wmtbp")
[node name="AnimationTree" type="AnimationTree" parent="."]
root_node = NodePath("../ModelContainer/SubViewportContainer/SubViewport/blockbench_export")
tree_root = SubResource("AnimationNodeStateMachine_jb4us")
anim_player = NodePath("../ModelContainer/SubViewportContainer/SubViewport/blockbench_export/AnimationPlayer")
parameters/Airborne/Parachute/blend_position = 1.0
parameters/Airborne/Parachute/0/blend_position = 0
parameters/Airborne/Parachute/1/blend_position = 0
parameters/Airborne/Standard/blend_position = -0.0893281
parameters/Airborne/Standard/0/blend_position = 0.0
parameters/Airborne/Standard/1/blend_position = 0.0
parameters/Grounded/Idle/blend_position = 1.0
parameters/Grounded/Walk/blend_position = 1.0
[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("InitialState")]
script = ExtResource("2_5y66v")
InitialState = NodePath("PlayerGrounded")
[node name="PlayerGrounded" type="Node" parent="StateMachine"]
script = ExtResource("3_wmtbp")
[node name="PlayerAirborne" type="Node" parent="StateMachine"]
script = ExtResource("4_5y66v")
[node name="PlayerWallGrab" type="Node" parent="StateMachine"]
script = ExtResource("5_uicah")
[node name="WallCastTop" type="RayCast2D" parent="."]
position = Vector2(0, -7)
target_position = Vector2(3.8, 0)
collision_mask = 2
hit_from_inside = true
[node name="WallCastMid" type="RayCast2D" parent="."]
position = Vector2(0, -4)
target_position = Vector2(3.6, 0)
collision_mask = 2
hit_from_inside = true
[node name="WallCastLow" type="RayCast2D" parent="."]
position = Vector2(0, -1)
target_position = Vector2(3.6, 0)
collision_mask = 2
hit_from_inside = true
[node name="WallCastDelay" type="Timer" parent="."]
wait_time = 0.1
one_shot = true
[node name="CameraOffsetCast" type="RayCast2D" parent="."]
visible = false
position = Vector2(0, -8.1)
target_position = Vector2(0, -28)
collision_mask = 2
[node name="CameraDownCast" type="RayCast2D" parent="CameraOffsetCast"]
top_level = true
target_position = Vector2(0, 56)
collision_mask = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, -3.5)
shape = SubResource("CapsuleShape2D_0vjlc")
[node name="Sprite2D" type="Sprite2D" parent="."]
visible = false
position = Vector2(0, -4)
texture = ExtResource("2_0vjlc")
[node name="ModelContainer" type="Node2D" parent="."]
position = Vector2(0, -0.39)
scale = Vector2(2, 2)
[node name="SubViewportContainer" type="SubViewportContainer" parent="ModelContainer"]
offset_left = -4.0
offset_top = -8.0
offset_right = 1020.0
offset_bottom = 1016.0
scale = Vector2(0.008, 0.008)
[node name="SubViewport" type="SubViewport" parent="ModelContainer/SubViewportContainer"]
transparent_bg = true
handle_input_locally = false
size = Vector2i(1024, 1024)
render_target_update_mode = 4
[node name="blockbench_export" parent="ModelContainer/SubViewportContainer/SubViewport" instance=ExtResource("3_0vjlc")]
[node name="Skeleton3D" parent="ModelContainer/SubViewportContainer/SubViewport/blockbench_export/root" index="0"]
bones/2/scale = Vector3(0, 0, 0)
bones/6/position = Vector3(-0.03125, 0.0288724, 0)
bones/6/rotation = Quaternion(0, 0, 0.00318058, 0.999995)
bones/9/rotation = Quaternion(0, 0.92388, 0, 0.382683)
bones/10/position = Vector3(0.09375, 0.125, 0.0625)
bones/10/rotation = Quaternion(0, 0, -0.000881489, 1)
bones/11/position = Vector3(-0.03125, 0.078125, -0.03125)
bones/13/rotation = Quaternion(0, 0.92388, 0, 0.382683)
bones/14/position = Vector3(-0.03125, 0.0625, -0.015625)
[node name="Camera3D" type="Camera3D" parent="ModelContainer/SubViewportContainer/SubViewport"]
transform = Transform3D(-1, 0, 1.50996e-07, 0, 1, 0, -1.50996e-07, 0, -1, 0, 0.5, -1)
projection = 1
[node name="BlinkTimer" type="Timer" parent="."]
[node name="CoyoteTimer" type="Timer" parent="."]
wait_time = 0.12
one_shot = true
[connection signal="timeout" from="WallCastDelay" to="." method="_on_wall_cast_delay_timeout"]
[connection signal="timeout" from="BlinkTimer" to="." method="_on_blink_timer_timeout"]
[connection signal="timeout" from="CoyoteTimer" to="." method="_on_coyote_timer_timeout"]
[editable path="ModelContainer/SubViewportContainer/SubViewport/blockbench_export"]