From 9c6eb512d915000952217f7af3eba31aeff033ae Mon Sep 17 00:00:00 2001 From: penelope Date: Thu, 8 Jun 2023 16:52:52 -0400 Subject: [PATCH] added ducking! --- graphics/player/sg_duck.png | Bin 335 -> 246 bytes objects/player/player.gd | 8 ++++ objects/player/player.tscn | 80 ++++++++++++++++++++++++++++++++++-- 3 files changed, 84 insertions(+), 4 deletions(-) diff --git a/graphics/player/sg_duck.png b/graphics/player/sg_duck.png index 3665d2dcc555f9429c8ca9345ae06a1d2542c292..26d8e44f09379c63d1bf75e6ba611f56fed18905 100644 GIT binary patch delta 219 zcmV<103`p<0`>urBYyzBNklPDdsT$74*W9s&p~F4w+1g5h!&1Oq1*~Pwx>U3NJ`Dtw>QotfAb{HC zn=&BAaJka@9Cm{2PDwybJ4~8^o*B6G> VMn)ALmnJGflgp1*WXsSn{+H+kaM=5D@t~veQ8`)`jr< zq04#-KryVGX(5?fJlvEmGN+rWds8$slVq4grwbCAvNn>ZGM0>|*GB+mQH_na5qe)r zF{}h&aXTlD`T+C}4jEky)V$!e0f?hM&o3)y=#!UF)>8pED;`{IHafy2+3()6m8G(j zKB-&2INq1>^)9=cTQeVBknrvP65z85n void: state_chart.send_event("jump") if Input.is_action_just_pressed("shoot"): # shooting state_chart.send_event("shoot") + if Input.is_action_pressed("ui_down"): + state_chart.send_event("duck_pressed") + if Input.is_action_just_released("ui_down"): + state_chart.send_event("duck_released") # send relevant events if is_on_floor(): # check on floor status @@ -141,6 +145,10 @@ func _on_Blinking_state_entered() -> void: func _on_Stimming_state_entered() -> void: animation_player.play("stim") +func _on_Ducking_state_entered(): + velocity.x = 0 + animation_player.play("duck") + func _on_Pushing_state_entered() -> void: animation_player.play("push") diff --git a/objects/player/player.tscn b/objects/player/player.tscn index 6ff5b60..59d869d 100644 --- a/objects/player/player.tscn +++ b/objects/player/player.tscn @@ -1,7 +1,7 @@ -[gd_scene load_steps=43 format=2] +[gd_scene load_steps=44 format=2] [ext_resource path="res://objects/player/player.gd" type="Script" id=1] -[ext_resource path="res://graphics/player/palettes/default.png" type="Texture" id=2] +[ext_resource path="res://graphics/player/sg_duck.png" type="Texture" id=2] [ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=3] [ext_resource path="res://graphics/player/sg_idle.png" type="Texture" id=4] [ext_resource path="res://addons/godot_state_charts/parallel_state.gd" type="Script" id=5] @@ -28,7 +28,6 @@ shader = ExtResource( 3 ) shader_param/border_color = Color( 0, 0, 0, 1 ) shader_param/border_corners = true -shader_param/palette = ExtResource( 2 ) [sub_resource type="Curve" id=13] _data = [ Vector2( 0, 1 ), 0.0, -0.0636948, 0, 0, Vector2( 1, 0 ), -3.43886, 0.0, 0, 0 ] @@ -253,6 +252,58 @@ tracks/3/keys = { "values": [ 0.0, 90.0, 180.0, 270.0 ] } +[sub_resource type="Animation" id=20] +resource_name = "duck" +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 2 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:hframes") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 1 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Graphics/Sprite:frame") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 0 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + [sub_resource type="Animation" id=15] resource_name = "fall" length = 0.001 @@ -852,6 +903,7 @@ anims/RESET = SubResource( 5 ) anims/blink = SubResource( 18 ) anims/climb = SubResource( 9 ) anims/double_jump = SubResource( 12 ) +anims/duck = SubResource( 20 ) anims/fall = SubResource( 15 ) anims/fall_scared = SubResource( 14 ) anims/idle = SubResource( 6 ) @@ -905,6 +957,11 @@ __meta__ = { to = NodePath("../../Airborne/Jump/NormalJump") event = "jump" +[node name="On Duck" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 10 ) +to = NodePath("../Ducking") +event = "duck_pressed" + [node name="On LadderTouched" type="Node" parent="StateChart/Root/Movement/Grounded"] script = ExtResource( 10 ) to = NodePath("../../Climbing") @@ -971,9 +1028,23 @@ script = ExtResource( 10 ) to = NodePath("../../Walking") event = "walk_start" +[node name="Ducking" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 11 ) + +[node name="On DuckReleased" type="Node" parent="StateChart/Root/Movement/Grounded/Ducking"] +script = ExtResource( 10 ) +to = NodePath("../../CanWalk/Still") +event = "duck_released" + +[node name="On Shoot" type="Node" parent="StateChart/Root/Movement/Grounded/Ducking"] +script = ExtResource( 10 ) +to = NodePath("../../Shooting") +event = "shoot" +guard_expression = "can_shoot" + [node name="Shooting" type="Node" parent="StateChart/Root/Movement/Grounded"] script = ExtResource( 11 ) -consumed_events = [ "jump" ] +consumed_events = [ "jump", "duck_pressed" ] [node name="On ShootEnd" type="Node" parent="StateChart/Root/Movement/Grounded/Shooting"] script = ExtResource( 10 ) @@ -1180,6 +1251,7 @@ script = ExtResource( 8 ) [connection signal="state_entered" from="StateChart/Root/Movement/Grounded/CanWalk/Walking" to="." method="_on_Walking_state_entered"] [connection signal="state_entered" from="StateChart/Root/Movement/Grounded/CanWalk/Blinking" to="." method="_on_Blinking_state_entered"] [connection signal="state_entered" from="StateChart/Root/Movement/Grounded/CanWalk/Stimming" to="." method="_on_Stimming_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/Ducking" to="." method="_on_Ducking_state_entered"] [connection signal="state_entered" from="StateChart/Root/Movement/Grounded/Shooting" to="." method="_on_Shooting_state_entered"] [connection signal="state_entered" from="StateChart/Root/Movement/Grounded/Pushing" to="." method="_on_Pushing_state_entered"] [connection signal="state_physics_processing" from="StateChart/Root/Movement/Grounded/Pushing" to="." method="_process_pushing"]