[gd_scene load_steps=16 format=3 uid="uid://bwtpsjpe2lf7l"] [ext_resource type="Script" uid="uid://dhyi4yn0xleoy" path="res://objects/new_player/new_player.gd" id="1_xs4s5"] [ext_resource type="Texture2D" uid="uid://c71nqfyw4a3v4" path="res://assets/textures/player/capri.png" id="3_trcll"] [ext_resource type="Script" uid="uid://cv55s54clajw5" path="res://scripts/spritesheet_animation/spritesheet_animation.gd" id="4_bsdw5"] [ext_resource type="Script" uid="uid://bhrh1qkv7nlyl" path="res://addons/godot_state_charts/state_chart.gd" id="5_bcjtl"] [ext_resource type="Script" uid="uid://b11v7h3ny6kh1" path="res://addons/godot_state_charts/compound_state.gd" id="6_jnxnd"] [ext_resource type="Script" uid="uid://rrj3six8lu8p" path="res://addons/godot_state_charts/transition.gd" id="7_rgjdc"] [ext_resource type="Script" uid="uid://b6u7unac5srh0" path="res://addons/godot_state_charts/expression_guard.gd" id="8_8i2im"] [ext_resource type="Script" uid="uid://cyvphy8py4ntr" path="res://addons/godot_state_charts/atomic_state.gd" id="10_mvu25"] [sub_resource type="CircleShape2D" id="CircleShape2D_tvyy1"] radius = 6.0 [sub_resource type="Resource" id="Resource_mq184"] resource_name = "Horizontal Input" script = ExtResource("8_8i2im") expression = "input_dir.x != 0.0" metadata/_custom_type_script = "uid://b6u7unac5srh0" [sub_resource type="Resource" id="Resource_nye2q"] resource_name = "Horizontal Movement" script = ExtResource("8_8i2im") expression = "velocity.x != 0.0" metadata/_custom_type_script = "uid://b6u7unac5srh0" [sub_resource type="Resource" id="Resource_n665q"] resource_name = "No Horizontal Movement" script = ExtResource("8_8i2im") expression = "velocity.x == 0.0" metadata/_custom_type_script = "uid://b6u7unac5srh0" [sub_resource type="Resource" id="Resource_8c74o"] resource_name = "No Horizontal Input" script = ExtResource("8_8i2im") expression = "input_dir.x == 0.0" metadata/_custom_type_script = "uid://b6u7unac5srh0" [sub_resource type="Resource" id="Resource_xs4s5"] resource_name = "Opposite Input" script = ExtResource("8_8i2im") expression = "input_dir.x != signf(velocity.x)" metadata/_custom_type_script = "uid://b6u7unac5srh0" [sub_resource type="Resource" id="Resource_e1cbd"] resource_name = "Aligned Input" script = ExtResource("8_8i2im") expression = "input_dir.x == signf(velocity.x)" metadata/_custom_type_script = "uid://b6u7unac5srh0" [node name="Player" type="CharacterBody2D" node_paths=PackedStringArray("state_chart", "graphics", "run_animation")] collision_layer = 16 collision_mask = 3 floor_snap_length = 3.0 script = ExtResource("1_xs4s5") run_acceleration = 100.0 max_run_speed = 100.0 turn_acceleration = 200.0 stopping_force = 150.0 state_chart = NodePath("StateChart") graphics = NodePath("Graphics") run_animation = NodePath("Graphics/Sprite/Run") [node name="CollisionShape" type="CollisionShape2D" parent="."] shape = SubResource("CircleShape2D_tvyy1") debug_color = Color(3.32102e-06, 0.648976, 0.161954, 0.42) [node name="Graphics" type="Node2D" parent="."] [node name="Sprite" type="Sprite2D" parent="Graphics"] texture = ExtResource("3_trcll") offset = Vector2(0, -2) hframes = 4 vframes = 4 region_rect = Rect2(0, 0, 64, 64) [node name="Idle" type="Node" parent="Graphics/Sprite"] script = ExtResource("4_bsdw5") [node name="Bark" type="Node" parent="Graphics/Sprite"] script = ExtResource("4_bsdw5") first_frame = Vector2i(1, 0) [node name="Skid" type="Node" parent="Graphics/Sprite"] script = ExtResource("4_bsdw5") first_frame = Vector2i(2, 0) [node name="Run" type="Node" parent="Graphics/Sprite"] script = ExtResource("4_bsdw5") first_frame = Vector2i(0, 1) frames = 4 fps = 16.0 loop = true [node name="Jump" type="Node" parent="Graphics/Sprite"] script = ExtResource("4_bsdw5") first_frame = Vector2i(2, 0) [node name="Fall" type="Node" parent="Graphics/Sprite"] script = ExtResource("4_bsdw5") first_frame = Vector2i(3, 0) [node name="StateChart" type="Node" parent="."] script = ExtResource("5_bcjtl") track_in_editor = true initial_expression_properties = { &"input_dir": Vector2(0, 0), &"velocity": Vector2(0, 0) } [node name="Root" type="Node" parent="StateChart"] script = ExtResource("6_jnxnd") initial_state = NodePath("Grounded") [node name="Grounded" type="Node" parent="StateChart/Root"] editor_description = "Player is standing on a floor." script = ExtResource("6_jnxnd") initial_state = NodePath("Standing") [node name="Standing" type="Node" parent="StateChart/Root/Grounded"] editor_description = "Player is standing still or coming to a stop." script = ExtResource("6_jnxnd") initial_state = NodePath("Idle") metadata/_custom_type_script = "uid://b11v7h3ny6kh1" [node name="when WalkHeld" type="Node" parent="StateChart/Root/Grounded/Standing"] editor_description = "Transition to running state if a horizontal direction is being held." script = ExtResource("7_rgjdc") to = NodePath("../../Running") guard = SubResource("Resource_mq184") delay_in_seconds = "0.0" [node name="Idle" type="Node" parent="StateChart/Root/Grounded/Standing"] editor_description = "Player is stopped, standing still." script = ExtResource("10_mvu25") [node name="when Moving" type="Node" parent="StateChart/Root/Grounded/Standing/Idle"] editor_description = "Transition to stopping state if the player has horizontal velocity." script = ExtResource("7_rgjdc") to = NodePath("../../Stopping") guard = SubResource("Resource_nye2q") delay_in_seconds = "0.0" [node name="Stopping" type="Node" parent="StateChart/Root/Grounded/Standing"] editor_description = "Player is slowing to a stop naturally." script = ExtResource("10_mvu25") [node name="when Stopped" type="Node" parent="StateChart/Root/Grounded/Standing/Stopping"] editor_description = "Transition to idle state when the player has come to a full stop." script = ExtResource("7_rgjdc") to = NodePath("../../Idle") guard = SubResource("Resource_n665q") delay_in_seconds = "0.0" [node name="Running" type="Node" parent="StateChart/Root/Grounded"] editor_description = "Player is accelerating in the held input direction." script = ExtResource("10_mvu25") [node name="when WalkReleased" type="Node" parent="StateChart/Root/Grounded/Running"] editor_description = "Transition to standing state if no input direction is held." script = ExtResource("7_rgjdc") to = NodePath("../../Standing") guard = SubResource("Resource_8c74o") delay_in_seconds = "0.0" [node name="when OppositeInput" type="Node" parent="StateChart/Root/Grounded/Running"] editor_description = "Transition to turning state if the held input dir is opposite the horizontal velocity." script = ExtResource("7_rgjdc") to = NodePath("../../Turning") guard = SubResource("Resource_xs4s5") delay_in_seconds = "0.0" [node name="Turning" type="Node" parent="StateChart/Root/Grounded"] editor_description = "Player is more quickly accelerating in the held input direction to slow and turn around." script = ExtResource("10_mvu25") [node name="when WalkReleased" type="Node" parent="StateChart/Root/Grounded/Turning"] editor_description = "Transition to standing state if no input direction is held." script = ExtResource("7_rgjdc") to = NodePath("../../Standing") guard = SubResource("Resource_8c74o") delay_in_seconds = "0.0" [node name="when AlignedInput" type="Node" parent="StateChart/Root/Grounded/Turning"] editor_description = "Transition to running state when input direction matches horizontal velocity." script = ExtResource("7_rgjdc") to = NodePath("../../Running") guard = SubResource("Resource_e1cbd") delay_in_seconds = "0.0" [node name="Airborne" type="Node" parent="StateChart/Root"] script = ExtResource("6_jnxnd") initial_state = NodePath("Falling") [node name="Falling" type="Node" parent="StateChart/Root/Airborne"] script = ExtResource("10_mvu25") [node name="Voice" type="AudioStreamPlayer" parent="."] bus = &"Capri" [connection signal="state_entered" from="StateChart/Root/Grounded/Standing/Idle" to="Graphics/Sprite/Idle" method="play"] [connection signal="state_entered" from="StateChart/Root/Grounded/Standing/Stopping" to="Graphics/Sprite/Run" method="play"] [connection signal="state_physics_processing" from="StateChart/Root/Grounded/Standing/Stopping" to="." method="_scale_run_animation"] [connection signal="state_physics_processing" from="StateChart/Root/Grounded/Standing/Stopping" to="." method="_slow_to_stop"] [connection signal="state_entered" from="StateChart/Root/Grounded/Running" to="Graphics/Sprite/Run" method="play"] [connection signal="state_physics_processing" from="StateChart/Root/Grounded/Running" to="." method="_scale_run_animation"] [connection signal="state_physics_processing" from="StateChart/Root/Grounded/Running" to="." method="_apply_run_acceleration"] [connection signal="state_entered" from="StateChart/Root/Grounded/Turning" to="Graphics/Sprite/Skid" method="play"] [connection signal="state_physics_processing" from="StateChart/Root/Grounded/Turning" to="." method="_apply_turn_acceleration"]