From 53e8620c8c32ec708a06f2d026059f8d7423fd65 Mon Sep 17 00:00:00 2001 From: Jakob Feldmann Date: Tue, 5 Sep 2023 15:15:51 +0200 Subject: [PATCH] feat: stretch animations jump/land, jump sound --- src/Actors/Blobby/Blobby.tscn | 275 +++++++++++++++++++----- src/Levels/1 Tutorial Level.tscn | 11 +- src/Levels/2 Tutorial Level.tscn | 5 + src/StateMachines/BlobbyStateMachine.gd | 18 +- 4 files changed, 246 insertions(+), 63 deletions(-) diff --git a/src/Actors/Blobby/Blobby.tscn b/src/Actors/Blobby/Blobby.tscn index 8c1bd13..a250edf 100644 --- a/src/Actors/Blobby/Blobby.tscn +++ b/src/Actors/Blobby/Blobby.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=129 format=2] +[gd_scene load_steps=142 format=2] [ext_resource path="res://assets/effects/blobby-effects-spritesheet.png" type="Texture" id=1] [ext_resource path="res://src/Actors/Blobby/DeathShader.tres" type="Material" id=2] @@ -11,7 +11,7 @@ [ext_resource path="res://src/Utilities/SceneAudio.tscn" type="PackedScene" id=9] [sub_resource type="RectangleShape2D" id=2] -extents = Vector2( 14.9127, 5.98593 ) +extents = Vector2( 12.9698, 8.9748 ) [sub_resource type="StreamTexture" id=62] load_path = "res://.import/blobby-spritesheet.png-205c8efc79bec685345a637ed2dcfc9b.stex" @@ -59,6 +59,18 @@ blend_point_0/pos = -1.0 blend_point_1/node = SubResource( 115 ) blend_point_1/pos = 1.0 +[sub_resource type="AnimationNodeAnimation" id=227] +animation = "jumpStretchLeft" + +[sub_resource type="AnimationNodeAnimation" id=228] +animation = "jumpStretch" + +[sub_resource type="AnimationNodeBlendSpace1D" id=223] +blend_point_0/node = SubResource( 227 ) +blend_point_0/pos = -1.0 +blend_point_1/node = SubResource( 228 ) +blend_point_1/pos = 1.0 + [sub_resource type="AnimationNodeAnimation" id=117] animation = "jumpToFallLeft" @@ -83,6 +95,19 @@ blend_point_0/pos = -1.0 blend_point_1/node = SubResource( 124 ) blend_point_1/pos = 1.0 +[sub_resource type="AnimationNodeAnimation" id=217] +animation = "landStretchLeft" + +[sub_resource type="AnimationNodeAnimation" id=218] +animation = "landStretch" + +[sub_resource type="AnimationNodeBlendSpace1D" id=219] +blend_point_0/node = SubResource( 217 ) +blend_point_0/pos = -1.0 +blend_point_1/node = SubResource( 218 ) +blend_point_1/pos = 1.0 +snap = 1.0 + [sub_resource type="AnimationNodeAnimation" id=144] animation = "runToJumpLeft" @@ -169,16 +194,11 @@ snap = 1.0 switch_mode = 2 auto_advance = true -[sub_resource type="AnimationNodeStateMachineTransition" id=147] -priority = 5 - [sub_resource type="AnimationNodeStateMachineTransition" id=148] switch_mode = 2 auto_advance = true priority = 0 -[sub_resource type="AnimationNodeStateMachineTransition" id=149] - [sub_resource type="AnimationNodeStateMachineTransition" id=150] switch_mode = 2 priority = 0 @@ -195,6 +215,7 @@ switch_mode = 2 auto_advance = true [sub_resource type="AnimationNodeStateMachineTransition" id=154] +priority = 2 [sub_resource type="AnimationNodeStateMachineTransition" id=155] @@ -210,9 +231,6 @@ priority = 2 [sub_resource type="AnimationNodeStateMachineTransition" id=160] -[sub_resource type="AnimationNodeStateMachineTransition" id=161] -priority = 2 - [sub_resource type="AnimationNodeStateMachineTransition" id=162] priority = 2 @@ -220,13 +238,7 @@ priority = 2 switch_mode = 2 [sub_resource type="AnimationNodeStateMachineTransition" id=164] -priority = 2 - -[sub_resource type="AnimationNodeStateMachineTransition" id=165] -switch_mode = 2 - -[sub_resource type="AnimationNodeStateMachineTransition" id=166] -switch_mode = 2 +priority = 4 [sub_resource type="AnimationNodeStateMachineTransition" id=167] xfade_time = 0.1 @@ -276,41 +288,69 @@ auto_advance = true [sub_resource type="AnimationNodeStateMachineTransition" id=203] +[sub_resource type="AnimationNodeStateMachineTransition" id=161] +priority = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id=220] +priority = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id=221] +switch_mode = 2 +auto_advance = true + +[sub_resource type="AnimationNodeStateMachineTransition" id=222] +switch_mode = 2 +auto_advance = true + +[sub_resource type="AnimationNodeStateMachineTransition" id=224] +switch_mode = 2 +auto_advance = true + +[sub_resource type="AnimationNodeStateMachineTransition" id=225] + +[sub_resource type="AnimationNodeStateMachineTransition" id=226] + +[sub_resource type="AnimationNodeStateMachineTransition" id=229] + [sub_resource type="AnimationNodeStateMachine" id=47] states/duckTurn/node = SubResource( 126 ) -states/duckTurn/position = Vector2( 1795.54, 241 ) +states/duckTurn/position = Vector2( 1795.58, 473.808 ) states/ducking/node = SubResource( 110 ) -states/ducking/position = Vector2( 1795.54, 129.009 ) +states/ducking/position = Vector2( 1793.04, 304.294 ) states/falling/node = SubResource( 113 ) -states/falling/position = Vector2( 2119.49, 129.011 ) +states/falling/position = Vector2( 2105.2, -5.27472 ) states/idleTurn/node = SubResource( 127 ) -states/idleTurn/position = Vector2( 1375.54, -193.991 ) +states/idleTurn/position = Vector2( 1572.68, -269.229 ) states/idling/node = SubResource( 116 ) -states/idling/position = Vector2( 1375.63, -53.9546 ) +states/idling/position = Vector2( 994.683, -67.2875 ) +states/jumpStretching/node = SubResource( 223 ) +states/jumpStretching/position = Vector2( 1327.4, 199.14 ) states/jumpToFall/node = SubResource( 119 ) -states/jumpToFall/position = Vector2( 1981.07, 404.104 ) +states/jumpToFall/position = Vector2( 2398.21, 473.628 ) states/jumping/node = SubResource( 125 ) -states/jumping/position = Vector2( 1368.79, 122.723 ) +states/jumping/position = Vector2( 1161.17, 350.841 ) +states/landStretching/node = SubResource( 219 ) +states/landStretching/position = Vector2( 2001.3, -167.383 ) states/runToJump/node = SubResource( 146 ) -states/runToJump/position = Vector2( 2119.34, 577.905 ) +states/runToJump/position = Vector2( 2504.24, 710.286 ) states/running/node = SubResource( 122 ) -states/running/position = Vector2( 2268.44, -53.9541 ) +states/running/position = Vector2( 2564.63, -50.5511 ) states/turnToRun/node = SubResource( 130 ) -states/turnToRun/position = Vector2( 1795.54, -308.991 ) +states/turnToRun/position = Vector2( 1795.59, -553.753 ) states/walking/node = SubResource( 133 ) states/walking/position = Vector2( 1795.54, -54 ) states/wallslideToJump/node = SubResource( 136 ) -states/wallslideToJump/position = Vector2( 1362.38, 336.342 ) +states/wallslideToJump/position = Vector2( 1135.71, 518.247 ) states/wallsliding/node = SubResource( 96 ) -states/wallsliding/position = Vector2( 1795.54, 493.009 ) -transitions = [ "falling", "wallsliding", SubResource( 138 ), "wallsliding", "idling", SubResource( 139 ), "wallsliding", "wallslideToJump", SubResource( 140 ), "wallslideToJump", "jumping", SubResource( 141 ), "idling", "jumping", SubResource( 147 ), "runToJump", "jumping", SubResource( 148 ), "ducking", "jumping", SubResource( 149 ), "jumping", "jumpToFall", SubResource( 150 ), "jumpToFall", "falling", SubResource( 151 ), "ducking", "duckTurn", SubResource( 152 ), "duckTurn", "ducking", SubResource( 153 ), "falling", "ducking", SubResource( 154 ), "ducking", "falling", SubResource( 155 ), "ducking", "walking", SubResource( 156 ), "walking", "ducking", SubResource( 157 ), "idling", "ducking", SubResource( 158 ), "ducking", "idling", SubResource( 159 ), "ducking", "running", SubResource( 160 ), "running", "ducking", SubResource( 161 ), "running", "falling", SubResource( 162 ), "falling", "running", SubResource( 163 ), "walking", "falling", SubResource( 164 ), "falling", "walking", SubResource( 165 ), "falling", "idling", SubResource( 166 ), "idling", "walking", SubResource( 167 ), "walking", "idling", SubResource( 168 ), "walking", "turnToRun", SubResource( 169 ), "turnToRun", "walking", SubResource( 170 ), "turnToRun", "running", SubResource( 172 ), "idling", "idleTurn", SubResource( 173 ), "walking", "idleTurn", SubResource( 174 ), "idleTurn", "walking", SubResource( 175 ), "idling", "turnToRun", SubResource( 176 ), "turnToRun", "idling", SubResource( 177 ), "running", "runToJump", SubResource( 178 ), "wallsliding", "falling", SubResource( 137 ), "jumping", "wallsliding", SubResource( 189 ), "jumping", "idling", SubResource( 193 ), "jumping", "walking", SubResource( 194 ), "runToJump", "wallsliding", SubResource( 195 ), "jumpToFall", "idling", SubResource( 196 ), "running", "turnToRun", SubResource( 203 ) ] +states/wallsliding/position = Vector2( 1795.45, 770.152 ) +transitions = [ "falling", "wallsliding", SubResource( 138 ), "wallsliding", "idling", SubResource( 139 ), "wallsliding", "wallslideToJump", SubResource( 140 ), "wallslideToJump", "jumping", SubResource( 141 ), "runToJump", "jumping", SubResource( 148 ), "jumping", "jumpToFall", SubResource( 150 ), "jumpToFall", "falling", SubResource( 151 ), "ducking", "duckTurn", SubResource( 152 ), "duckTurn", "ducking", SubResource( 153 ), "falling", "ducking", SubResource( 154 ), "ducking", "falling", SubResource( 155 ), "ducking", "walking", SubResource( 156 ), "walking", "ducking", SubResource( 157 ), "idling", "ducking", SubResource( 158 ), "ducking", "idling", SubResource( 159 ), "ducking", "running", SubResource( 160 ), "running", "falling", SubResource( 162 ), "falling", "running", SubResource( 163 ), "walking", "falling", SubResource( 164 ), "idling", "walking", SubResource( 167 ), "walking", "idling", SubResource( 168 ), "walking", "turnToRun", SubResource( 169 ), "turnToRun", "walking", SubResource( 170 ), "turnToRun", "running", SubResource( 172 ), "idling", "idleTurn", SubResource( 173 ), "walking", "idleTurn", SubResource( 174 ), "idleTurn", "walking", SubResource( 175 ), "idling", "turnToRun", SubResource( 176 ), "turnToRun", "idling", SubResource( 177 ), "running", "runToJump", SubResource( 178 ), "wallsliding", "falling", SubResource( 137 ), "jumping", "wallsliding", SubResource( 189 ), "jumping", "idling", SubResource( 193 ), "jumping", "walking", SubResource( 194 ), "runToJump", "wallsliding", SubResource( 195 ), "jumpToFall", "idling", SubResource( 196 ), "running", "turnToRun", SubResource( 203 ), "running", "ducking", SubResource( 161 ), "falling", "landStretching", SubResource( 220 ), "landStretching", "idling", SubResource( 221 ), "landStretching", "walking", SubResource( 222 ), "jumpStretching", "jumping", SubResource( 224 ), "ducking", "jumpStretching", SubResource( 225 ), "idling", "jumpStretching", SubResource( 226 ), "walking", "jumpStretching", SubResource( 229 ) ] start_node = "idling" -graph_offset = Vector2( 1135.54, -198.431 ) +graph_offset = Vector2( 1124.54, -315.431 ) [sub_resource type="AnimationNodeStateMachinePlayback" id=48] [sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 12.971, 8.99662 ) +extents = Vector2( 12, 8.99662 ) [sub_resource type="Animation" id=17] length = 0.001 @@ -1830,9 +1870,68 @@ tracks/10/keys = { "values": [ Vector2( -1, 1 ) ] } +[sub_resource type="Animation" id=205] +resource_name = "jumpStretch" +length = 0.1 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath(".:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 1.2 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:offset") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 0 ), Vector2( 1, -3 ) ] +} + +[sub_resource type="Animation" id=215] +resource_name = "jumpStretchLeft" +length = 0.1 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath(".:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -1, 1 ), Vector2( -1, 1.2 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:offset") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 0 ), Vector2( 1, -3 ) ] +} + [sub_resource type="Animation" id=71] length = 0.13 loop = true +step = 0.01 tracks/0/type = "value" tracks/0/path = NodePath(".:frame") tracks/0/interp = 1 @@ -1960,16 +2059,17 @@ tracks/10/loop_wrap = true tracks/10/imported = false tracks/10/enabled = true tracks/10/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), +"times": PoolRealArray( 0, 0.01 ), +"transitions": PoolRealArray( 1, 1 ), "update": 0, -"values": [ Vector2( 1, 1 ) ] +"values": [ Vector2( 1, 1 ), Vector2( 1, 1.2 ) ] } [sub_resource type="Animation" id=105] resource_name = "jumpToFallLeft" length = 0.13 loop = true +step = 0.01 tracks/0/type = "value" tracks/0/path = NodePath(".:frame") tracks/0/interp = 1 @@ -2097,10 +2197,10 @@ tracks/10/loop_wrap = true tracks/10/imported = false tracks/10/enabled = true tracks/10/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), +"times": PoolRealArray( 0, 0.01 ), +"transitions": PoolRealArray( 1, 1 ), "update": 0, -"values": [ Vector2( -1, 1 ) ] +"values": [ Vector2( -1, 1 ), Vector2( -1, 1.2 ) ] } [sub_resource type="Animation" id=8] @@ -2109,7 +2209,7 @@ loop = true tracks/0/type = "value" tracks/0/path = NodePath(".:frame") tracks/0/interp = 1 -tracks/0/loop_wrap = false +tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { @@ -2376,9 +2476,68 @@ tracks/10/keys = { "values": [ Vector2( -1, 1 ) ] } +[sub_resource type="Animation" id=210] +resource_name = "landStretch" +length = 0.075 +step = 0.025 +tracks/0/type = "value" +tracks/0/path = NodePath(".:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.075 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 0.85 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:offset") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.075 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 0 ), Vector2( 1, 3 ) ] +} + +[sub_resource type="Animation" id=216] +resource_name = "landStretchLeft" +length = 0.075 +step = 0.025 +tracks/0/type = "value" +tracks/0/path = NodePath(".:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.075 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -1, 1 ), Vector2( -1, 0.85 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:offset") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.075 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 0 ), Vector2( 1, 3 ) ] +} + [sub_resource type="Animation" id=72] length = 0.23 loop = true +step = 0.01 tracks/0/type = "value" tracks/0/path = NodePath(".:frame") tracks/0/interp = 1 @@ -2506,10 +2665,10 @@ tracks/10/loop_wrap = true tracks/10/imported = false tracks/10/enabled = true tracks/10/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), +"times": PoolRealArray( 0, 0.23 ), +"transitions": PoolRealArray( 1, 1 ), "update": 0, -"values": [ Vector2( 1, 1 ) ] +"values": [ Vector2( 0.75, 1 ), Vector2( 1, 1 ) ] } [sub_resource type="Animation" id=143] @@ -4207,7 +4366,7 @@ process_priority = -1 collision_mask = 254 [node name="CollisionPolygon2D" type="CollisionShape2D" parent="BlobbySkin"] -position = Vector2( 0.0286326, -10.0053 ) +position = Vector2( 1, -8.975 ) scale = Vector2( 1.03, 1.04 ) shape = SubResource( 2 ) @@ -4222,12 +4381,11 @@ visible = false [node name="BlobbySprite" type="Sprite" parent="."] material = ExtResource( 2 ) position = Vector2( 0, -16 ) -scale = Vector2( -1, 1 ) texture = SubResource( 62 ) offset = Vector2( 1, 0 ) hframes = 6 vframes = 6 -frame = 5 +frame = 10 __meta__ = { "_editor_description_": "YXNlcHJpdGVfd2l6YXJkX2NvbmZpZwpwbGF5ZXJ8PUJsb2JieVNwcml0ZS9CbG9iYnltYXRpb25QbGF5ZXIKc291cmNlfD1yZXM6Ly9hc3NldHMvYmxvYmJ5L2Jsb2JieS1zcHJpdGVzaGVldHQuYXNlcHJpdGUKbGF5ZXJ8PUJsb2JieQpvcF9leHB8PUZhbHNlCm9fZm9sZGVyfD0Kb19uYW1lfD0Kb25seV92aXNpYmxlfD1GYWxzZQpvX2V4X3B8PQo=" } @@ -4242,17 +4400,20 @@ parameters/playback = SubResource( 48 ) parameters/ducking/blend_position = 1.0 parameters/falling/blend_position = 1.0 parameters/idling/blend_position = 1.0 +parameters/jumpStretching/blend_position = 1.0 parameters/jumpToFall/blend_position = 1.0 parameters/jumping/blend_position = 1.0 +parameters/landStretching/blend_position = 1.0 parameters/runToJump/blend_position = 1.0 parameters/running/blend_position = 1.0 parameters/turnToRun/blend_position = 1.0 parameters/walking/blend_position = 1.0 parameters/wallslideToJump/blend_position = 1.0 -parameters/wallsliding/blend_position = 1.0 +parameters/wallsliding/blend_position = -1.0 [node name="BlobbymationPlayer" type="AnimationPlayer" parent="BlobbySprite"] unique_name_in_owner = true +reset_on_save = false playback_process_mode = 0 anims/RESET = SubResource( 17 ) anims/duckRun = SubResource( 67 ) @@ -4268,10 +4429,14 @@ anims/fallingLeft = SubResource( 106 ) anims/idleTurn = SubResource( 70 ) anims/idling = SubResource( 7 ) anims/idlingLeft = SubResource( 103 ) +anims/jumpStretch = SubResource( 205 ) +anims/jumpStretchLeft = SubResource( 215 ) anims/jumpToFall = SubResource( 71 ) anims/jumpToFallLeft = SubResource( 105 ) anims/jumping = SubResource( 8 ) anims/jumpingLeft = SubResource( 104 ) +anims/landStretch = SubResource( 210 ) +anims/landStretchLeft = SubResource( 216 ) anims/runToJump = SubResource( 72 ) anims/runToJumpLeft = SubResource( 143 ) anims/running = SubResource( 49 ) @@ -4332,7 +4497,7 @@ position = Vector2( 0, -9 ) scale = Vector2( 0.48, 0.48 ) [node name="BlobbyBody" type="CollisionShape2D" parent="." groups=["player"]] -position = Vector2( 0.0392303, -10.002 ) +position = Vector2( 1, -8.975 ) shape = SubResource( 1 ) [node name="WallRaycasts" type="Node2D" parent="."] @@ -4341,29 +4506,29 @@ position = Vector2( 0, -1 ) [node name="LeftWallRaycast" type="Node2D" parent="WallRaycasts"] [node name="Left_Wallcast1" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"] -position = Vector2( -11.9763, -5 ) +position = Vector2( -12, -10.686 ) enabled = true -cast_to = Vector2( -2, 0 ) +cast_to = Vector2( -2.5, 0 ) collision_mask = 40 [node name="Left_Wallcast2" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"] -position = Vector2( -11.9763, 5 ) +position = Vector2( -12, -1.942 ) enabled = true -cast_to = Vector2( -2, 0 ) +cast_to = Vector2( -2.5, 0 ) collision_mask = 40 [node name="RightWallRaycast" type="Node2D" parent="WallRaycasts"] [node name="Right_Wallcast1" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"] -position = Vector2( 12.0551, -5 ) +position = Vector2( 14, -10.686 ) enabled = true -cast_to = Vector2( 2, 0 ) +cast_to = Vector2( 2.5, 0 ) collision_mask = 40 [node name="Right_Wallcast2" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"] -position = Vector2( 12.0551, 5 ) +position = Vector2( 14, -1.942 ) enabled = true -cast_to = Vector2( 2, 0 ) +cast_to = Vector2( 2.5, 0 ) collision_mask = 40 [node name="SlopeRaycastLeft" type="RayCast2D" parent="."] diff --git a/src/Levels/1 Tutorial Level.tscn b/src/Levels/1 Tutorial Level.tscn index ff9af9e..e908194 100644 --- a/src/Levels/1 Tutorial Level.tscn +++ b/src/Levels/1 Tutorial Level.tscn @@ -214,6 +214,8 @@ scale = Vector2( 0.878906, 0.936025 ) [node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"] parameters/playback = SubResource( 14 ) +parameters/jumpStretching/blend_position = 1 +parameters/landStretching/blend_position = 1 [node name="WhatAreFrog" parent="." instance=ExtResource( 11 )] position = Vector2( 926, -25 ) @@ -562,13 +564,16 @@ autoplay = true bus = "Music" [node name="Mine" parent="." instance=ExtResource( 18 )] -position = Vector2( 10, -6 ) +visible = false +position = Vector2( 24, -69 ) [node name="Mine3" parent="." instance=ExtResource( 18 )] -position = Vector2( 10, -24 ) +visible = false +position = Vector2( 24, -87 ) [node name="Mine2" parent="." instance=ExtResource( 18 )] -position = Vector2( 10, -41 ) +visible = false +position = Vector2( 24, -104 ) [connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"] diff --git a/src/Levels/2 Tutorial Level.tscn b/src/Levels/2 Tutorial Level.tscn index 9bd1745..e04cfe8 100644 --- a/src/Levels/2 Tutorial Level.tscn +++ b/src/Levels/2 Tutorial Level.tscn @@ -1039,8 +1039,13 @@ unique_name_in_owner = true position = Vector2( -156, -51 ) scale = Vector2( 0.878906, 0.936025 ) +[node name="BlobbySprite" parent="Blobby" index="5"] +frame = 6 + [node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"] parameters/playback = SubResource( 6 ) +parameters/jumpStretching/blend_position = 1 +parameters/landStretching/blend_position = 1 [node name="PitArea" parent="." instance=ExtResource( 13 )] position = Vector2( 1338, 198 ) diff --git a/src/StateMachines/BlobbyStateMachine.gd b/src/StateMachines/BlobbyStateMachine.gd index 6f114c6..b5c46b9 100644 --- a/src/StateMachines/BlobbyStateMachine.gd +++ b/src/StateMachines/BlobbyStateMachine.gd @@ -6,6 +6,9 @@ export var init_boost = false export var init_boost_type = "" export(String, FILE) var footstep_sound := "res://assets/sounds/footsteps.ogg" +export(String, FILE) var jump_lift_off_sound := "res://assets/sounds/MAGIC_SPELL_Flame_03_mono.wav" +export(String, FILE) var landing_sound_1 := "res://assets/sounds/THUD_Medium_01_mono.wav" +export(String, FILE) var landing_sound_2 := "res://assets/sounds/landingMedHard.ogg" var facing = 1 var did_turn @@ -127,6 +130,7 @@ func handle_jump_input(delta, direction) -> Vector2: func handle_fall_input(delta, direction) -> Vector2: return parent.handle_fall_movement(delta, direction) + func handle_wallslide_input(delta, direction) -> Vector2: return parent.handle_wallslide_movement(delta, direction) @@ -217,9 +221,6 @@ func _enter_state(new_state, old_state): if !["run", "walk", "idle", "duck"].has(old_state) && parent.is_on_floor(): emit_signal("got_grounded") - scene_audio.play_parallel_sound( - "res://assets/sounds/landingMedHard.ogg", -15.0, true, 1.0, 0.1 - ) match new_state: states.walk: @@ -239,6 +240,7 @@ func _enter_state(new_state, old_state): scene_audio.play_sound(footstep_sound, -5.0, true) states.jump: if parent.rotation == 0 || !parent.snap_possible: + scene_audio.play_parallel_sound(jump_lift_off_sound, -25.0, true, 1, 0.1) if old_state == states.run: anim_state_playback.travel("runToJump") else: @@ -255,10 +257,14 @@ func _enter_state(new_state, old_state): anim_state_playback.travel("wallsliding") -func _exit_state(_old_state, _new_state): +func _exit_state(old_state, new_state): scene_audio.stop_sound() - if _old_state == "run": + if old_state == "run": running_particles.emitting = false + if old_state == "fall" && new_state != "wallslide": + scene_audio.play_parallel_sound(landing_sound_1, 0.0, true, 1.0, 0.1) + elif old_state == "fall" && new_state == "wallslide": + scene_audio.play_parallel_sound(landing_sound_2, -15.0, true, 1.0, 0.1) func _set_blendspaces_direction(value): @@ -273,6 +279,8 @@ func _set_blendspaces_direction(value): anim_tree.set("parameters/running/blend_position", value) anim_tree.set("parameters/turnToRun/blend_position", value) anim_tree.set("parameters/walking/blend_position", value) + anim_tree.set("parameters/jumpStretching/blend_position", value) + anim_tree.set("parameters/landStretching/blend_position", value) func _trigger_turn_animation():