374 lines
16 KiB
Text
374 lines
16 KiB
Text
[gd_scene load_steps=27 format=3 uid="uid://bwtpsjpe2lf7l"]
|
|
|
|
[ext_resource type="Script" uid="uid://dhyi4yn0xleoy" path="res://objects/player/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="AudioStream" uid="uid://4kxio0mlrr4k" path="res://assets/audio/vox/capri_jump2.ogg" id="5_45urx"]
|
|
[ext_resource type="Script" uid="uid://bhrh1qkv7nlyl" path="res://addons/godot_state_charts/state_chart.gd" id="5_bcjtl"]
|
|
[ext_resource type="AudioStream" uid="uid://dfa1ev73rsc7g" path="res://assets/audio/vox/capri_die.ogg" id="5_bi5m7"]
|
|
[ext_resource type="AudioStream" uid="uid://c350jqy4yue8c" path="res://assets/audio/vox/capri_jump3.ogg" id="6_c34wb"]
|
|
[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="AudioStream" uid="uid://cxfl2cqlre0ma" path="res://assets/audio/vox/capri_die2.ogg" id="8_45rsp"]
|
|
[ext_resource type="AudioStream" uid="uid://7be7ts3rdegh" path="res://assets/audio/vox/capri_jump.ogg" id="9_8c74o"]
|
|
[ext_resource type="AudioStream" uid="uid://c6gck1lyk6aer" path="res://assets/audio/vox/capri_die3.ogg" id="9_ylcck"]
|
|
[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="AudioStreamRandomizer" id="AudioStreamRandomizer_45rsp"]
|
|
streams_count = 3
|
|
stream_0/stream = ExtResource("9_8c74o")
|
|
stream_1/stream = ExtResource("5_45urx")
|
|
stream_2/stream = ExtResource("6_c34wb")
|
|
|
|
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_x5bgp"]
|
|
streams_count = 3
|
|
stream_0/stream = ExtResource("5_bi5m7")
|
|
stream_1/stream = ExtResource("8_45rsp")
|
|
stream_2/stream = ExtResource("9_ylcck")
|
|
|
|
[sub_resource type="Resource" id="Resource_sfpnl"]
|
|
resource_name = "Not On Floor"
|
|
script = ExtResource("8_8i2im")
|
|
expression = "not on_floor"
|
|
metadata/_custom_type_script = "uid://b6u7unac5srh0"
|
|
|
|
[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"
|
|
|
|
[sub_resource type="Resource" id="Resource_163ft"]
|
|
resource_name = "On Floor"
|
|
script = ExtResource("8_8i2im")
|
|
expression = "on_floor"
|
|
metadata/_custom_type_script = "uid://b6u7unac5srh0"
|
|
|
|
[sub_resource type="Resource" id="Resource_whx0j"]
|
|
resource_name = "Falling Down"
|
|
script = ExtResource("8_8i2im")
|
|
expression = "velocity.y > 0.0"
|
|
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 = 200.0
|
|
max_run_speed = 100.0
|
|
turn_acceleration = 300.0
|
|
stopping_force = 250.0
|
|
gravity = 450.0
|
|
jump_power = 180.0
|
|
splat_launch_power = 240.0
|
|
splat_offset = 6.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
|
|
frame = 10
|
|
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="Fall" type="Node" parent="Graphics/Sprite"]
|
|
script = ExtResource("4_bsdw5")
|
|
first_frame = Vector2i(0, 2)
|
|
|
|
[node name="Jump" type="Node" parent="Graphics/Sprite"]
|
|
script = ExtResource("4_bsdw5")
|
|
first_frame = Vector2i(1, 2)
|
|
|
|
[node name="Missile" type="Node" parent="Graphics/Sprite"]
|
|
script = ExtResource("4_bsdw5")
|
|
first_frame = Vector2i(2, 2)
|
|
|
|
[node name="Splat" type="Node" parent="Graphics/Sprite"]
|
|
script = ExtResource("4_bsdw5")
|
|
first_frame = Vector2i(0, 3)
|
|
frames = 2
|
|
fps = 8.0
|
|
|
|
[node name="UnSplat" type="Node" parent="Graphics/Sprite"]
|
|
script = ExtResource("4_bsdw5")
|
|
first_frame = Vector2i(2, 3)
|
|
frames = 2
|
|
fps = 8.0
|
|
|
|
[node name="Sounds" type="Node" parent="."]
|
|
|
|
[node name="Jump" type="AudioStreamPlayer" parent="Sounds"]
|
|
stream = SubResource("AudioStreamRandomizer_45rsp")
|
|
bus = &"Capri"
|
|
|
|
[node name="Death" type="AudioStreamPlayer" parent="Sounds"]
|
|
stream = SubResource("AudioStreamRandomizer_x5bgp")
|
|
bus = &"Capri"
|
|
|
|
[node name="StateChart" type="Node" parent="."]
|
|
script = ExtResource("5_bcjtl")
|
|
initial_expression_properties = {
|
|
&"input_dir": Vector2(0, 0),
|
|
&"on_floor": false,
|
|
&"velocity": Vector2(0, 0)
|
|
}
|
|
|
|
[node name="Root" type="Node" parent="StateChart"]
|
|
script = ExtResource("6_jnxnd")
|
|
initial_state = NodePath("Grounded")
|
|
|
|
[node name="on Killed" type="Node" parent="StateChart/Root"]
|
|
script = ExtResource("7_rgjdc")
|
|
to = NodePath("../Grounded")
|
|
event = &"killed"
|
|
delay_in_seconds = "0.0"
|
|
|
|
[node name="on Launched" type="Node" parent="StateChart/Root"]
|
|
script = ExtResource("7_rgjdc")
|
|
to = NodePath("../Airborne/Missile")
|
|
event = &"launched"
|
|
delay_in_seconds = "0.0"
|
|
|
|
[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="on JumpPressed" type="Node" parent="StateChart/Root/Grounded"]
|
|
script = ExtResource("7_rgjdc")
|
|
to = NodePath("../../Airborne/Jumping")
|
|
event = &"jump_pressed"
|
|
delay_in_seconds = "0.0"
|
|
|
|
[node name="if NotOnFloor" type="Node" parent="StateChart/Root/Grounded"]
|
|
editor_description = "Transition to falling state if not touching a floor."
|
|
script = ExtResource("7_rgjdc")
|
|
to = NodePath("../../Airborne/Falling")
|
|
event = &"tick"
|
|
guard = SubResource("Resource_sfpnl")
|
|
delay_in_seconds = "0.0"
|
|
|
|
[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="if 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="if 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="if 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="if 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="if 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="if 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="if 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"]
|
|
editor_description = "Player is in the air."
|
|
script = ExtResource("6_jnxnd")
|
|
initial_state = NodePath("Falling")
|
|
|
|
[node name="if OnFloor" type="Node" parent="StateChart/Root/Airborne"]
|
|
editor_description = "Transition to grounded state if touching a floor."
|
|
script = ExtResource("7_rgjdc")
|
|
to = NodePath("../../Grounded")
|
|
event = &"tick"
|
|
guard = SubResource("Resource_163ft")
|
|
delay_in_seconds = "0.0"
|
|
|
|
[node name="Falling" type="Node" parent="StateChart/Root/Airborne"]
|
|
editor_description = "Player is falling down."
|
|
script = ExtResource("10_mvu25")
|
|
|
|
[node name="Jumping" type="Node" parent="StateChart/Root/Airborne"]
|
|
editor_description = "Player has jumped and is rising."
|
|
script = ExtResource("10_mvu25")
|
|
|
|
[node name="if DownVelocity" type="Node" parent="StateChart/Root/Airborne/Jumping"]
|
|
editor_description = "Transition to the falling state if moving downwards."
|
|
script = ExtResource("7_rgjdc")
|
|
to = NodePath("../../Falling")
|
|
guard = SubResource("Resource_whx0j")
|
|
delay_in_seconds = "0.0"
|
|
|
|
[node name="Missile" type="Node" parent="StateChart/Root/Airborne"]
|
|
editor_description = "Player is hurtling through the air and ricocheting off of surfaces."
|
|
script = ExtResource("10_mvu25")
|
|
|
|
[node name="on Splatted" type="Node" parent="StateChart/Root/Airborne/Missile"]
|
|
editor_description = "Transition to splat state when the player hits a wall"
|
|
script = ExtResource("7_rgjdc")
|
|
to = NodePath("../../../Floating/Splat")
|
|
event = &"splatted"
|
|
delay_in_seconds = "0.0"
|
|
|
|
[node name="Floating" type="Node" parent="StateChart/Root"]
|
|
script = ExtResource("6_jnxnd")
|
|
initial_state = NodePath("UnSplat")
|
|
|
|
[node name="Splat" type="Node" parent="StateChart/Root/Floating"]
|
|
editor_description = "Player has slammed into a surface (and has a moment to perform an action?)"
|
|
script = ExtResource("10_mvu25")
|
|
|
|
[node name="on JumpPressed" type="Node" parent="StateChart/Root/Floating/Splat"]
|
|
script = ExtResource("7_rgjdc")
|
|
to = NodePath("..")
|
|
event = &"jump_pressed"
|
|
delay_in_seconds = ""
|
|
|
|
[node name="on TimeOut" type="Node" parent="StateChart/Root/Floating/Splat"]
|
|
script = ExtResource("7_rgjdc")
|
|
to = NodePath("../../UnSplat")
|
|
delay_in_seconds = "0.75"
|
|
|
|
[node name="UnSplat" type="Node" parent="StateChart/Root/Floating"]
|
|
editor_description = "Player is unsticking from a surface."
|
|
script = ExtResource("10_mvu25")
|
|
|
|
[node name="on TimeOut" type="Node" parent="StateChart/Root/Floating/UnSplat"]
|
|
script = ExtResource("7_rgjdc")
|
|
to = NodePath("../../../Airborne/Falling")
|
|
delay_in_seconds = ".25"
|
|
|
|
[connection signal="taken" from="StateChart/Root/on Killed" to="." method="_reset_position"]
|
|
[connection signal="taken" from="StateChart/Root/on Killed" to="Sounds/Death" method="play"]
|
|
[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="_slow_to_stop"]
|
|
[connection signal="state_physics_processing" from="StateChart/Root/Grounded/Standing/Stopping" to="." method="_scale_run_animation"]
|
|
[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"]
|
|
[connection signal="state_physics_processing" from="StateChart/Root/Airborne" to="." method="_apply_gravity"]
|
|
[connection signal="state_entered" from="StateChart/Root/Airborne/Falling" to="Graphics/Sprite/Fall" method="play"]
|
|
[connection signal="state_entered" from="StateChart/Root/Airborne/Jumping" to="." method="_start_jump"]
|
|
[connection signal="state_entered" from="StateChart/Root/Airborne/Jumping" to="Graphics/Sprite/Jump" method="play"]
|
|
[connection signal="state_entered" from="StateChart/Root/Airborne/Jumping" to="Sounds/Jump" method="play"]
|
|
[connection signal="state_entered" from="StateChart/Root/Airborne/Missile" to="Graphics/Sprite/Missile" method="play"]
|
|
[connection signal="state_exited" from="StateChart/Root/Airborne/Missile" to="." method="_restore_graphics_rotation"]
|
|
[connection signal="state_physics_processing" from="StateChart/Root/Airborne/Missile" to="." method="_face_towards_velocity"]
|
|
[connection signal="state_physics_processing" from="StateChart/Root/Airborne/Missile" to="." method="_check_for_splat"]
|
|
[connection signal="state_entered" from="StateChart/Root/Floating/Splat" to="Graphics/Sprite/Splat" method="play"]
|
|
[connection signal="taken" from="StateChart/Root/Floating/Splat/on JumpPressed" to="." method="_do_splat_launch"]
|
|
[connection signal="state_entered" from="StateChart/Root/Floating/UnSplat" to="Graphics/Sprite/UnSplat" method="play"]
|
|
[connection signal="state_exited" from="StateChart/Root/Floating/UnSplat" to="." method="_restore_graphics_rotation"]
|