diff --git a/assets/blobby/blobby-effects-spritesheet.aseprite b/assets/blobby/blobby-effects-spritesheet.aseprite index d99068c..8fd7df1 100644 Binary files a/assets/blobby/blobby-effects-spritesheet.aseprite and b/assets/blobby/blobby-effects-spritesheet.aseprite differ diff --git a/assets/blobby/blobby-effects-spritesheet.png b/assets/blobby/blobby-effects-spritesheet.png index 9bfe7ef..a5c2e0f 100644 Binary files a/assets/blobby/blobby-effects-spritesheet.png and b/assets/blobby/blobby-effects-spritesheet.png differ diff --git a/src/Actors/Blobby/Blobby.gd b/src/Actors/Blobby/Blobby.gd index 2e7c72e..f95dbf5 100644 --- a/src/Actors/Blobby/Blobby.gd +++ b/src/Actors/Blobby/Blobby.gd @@ -1,14 +1,14 @@ extends Player const PhysicsFunc = preload("res://src/Utilities/Physic/PhysicsFunc.gd") export var jump_buffer_filled := false -onready var wall_touch_direction = 0 onready var left_wall_raycasts = $WallRaycasts/LeftWallRaycast onready var right_wall_raycasts = $WallRaycasts/RightWallRaycast onready var player_state_machine = $BlobbyStateMachine onready var init_boost = player_state_machine.init_boost onready var init_boost_type = player_state_machine.init_boost_type -onready var animation_player = $BlobbySprite/BlobbymationPlayer +onready var effect_player = $BlobbyActionEffects/AnimationPlayer +var wall_touch_direction = 1 # When the Enemy stomp AREA enters the enemy collision area -> stomp func _on_BlobbySkin_area_entered(area: Area2D) -> void: @@ -55,7 +55,7 @@ func calculate_duck_velocity( if velocity.x < 0: velocity_direction = -1.0 - # TODO This is essential for the duck/sliding mechanic + # TODO Improve this to separate crawling(slow) and sliding var deceleration_force = calculate_deceleration_force(_gravity, mass)*0.333 # Slowing down movement when not controlling direction @@ -188,14 +188,14 @@ func is_reversing_horizontal_movement(direction: Vector2) -> bool: # Also sets wall_touch_direction func is_touching_wall_completely() -> bool: for left_raycast in left_wall_raycasts.get_children(): - wall_touch_direction = -1 - if !left_raycast.is_colliding(): - for right_raycast in right_wall_raycasts.get_children(): - wall_touch_direction = 1 - if !right_raycast.is_colliding(): - wall_touch_direction = 0 - return false - return true + if left_raycast.is_colliding(): + wall_touch_direction = -1 + return true + for right_raycast in right_wall_raycasts.get_children(): + if right_raycast.is_colliding(): + wall_touch_direction = 1 + return true + return false # Attached to wall state is in the PlayerStateMachine @@ -309,6 +309,12 @@ func execute_airstrafe( linear_velocity: Vector2, delta: float, direction: Vector2 ) -> Vector2: # var rev = 1 if !is_reversing_horizontal_movement(direction) else -1 + # TODO Consider adding a extra state for airstrafing + # TODO Make airstrafing less instantaneous and moderate the impulse + if direction.x > 0: + effect_player.play("airstrafing") + else: + effect_player.play("airstrafingLeft") if is_reversing_horizontal_movement(direction): linear_velocity.x = 0 linear_velocity.x = PhysicsFunc.two_step_euler( diff --git a/src/Actors/Blobby/Blobby.tscn b/src/Actors/Blobby/Blobby.tscn index c57956f..317c1fc 100644 --- a/src/Actors/Blobby/Blobby.tscn +++ b/src/Actors/Blobby/Blobby.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=109 format=2] +[gd_scene load_steps=112 format=2] [ext_resource path="res://assets/blobby/blobby-effects-spritesheet.png" type="Texture" id=1] [ext_resource path="res://src/Actors/Blobby/BlobbyCam.gd" type="Script" id=2] @@ -102,6 +102,9 @@ blend_point_0/node = SubResource( 120 ) blend_point_0/pos = -1.0 blend_point_1/node = SubResource( 121 ) blend_point_1/pos = 1.0 +min_space = -1.3 +max_space = 1.3 +snap = 0.5 [sub_resource type="AnimationNodeAnimation" id=128] animation = "turnToRunLeft" @@ -135,9 +138,9 @@ animation = "wallslideToJumpRight" [sub_resource type="AnimationNodeBlendSpace1D" id=136] blend_point_0/node = SubResource( 134 ) -blend_point_0/pos = 1.0 +blend_point_0/pos = -1.0 blend_point_1/node = SubResource( 135 ) -blend_point_1/pos = -1.0 +blend_point_1/pos = 1.0 [sub_resource type="AnimationNodeAnimation" id=179] animation = "wallsliding" @@ -275,12 +278,12 @@ states/turnToRun/position = Vector2( 1795.54, -308.991 ) states/walking/node = SubResource( 133 ) states/walking/position = Vector2( 1795.54, -54 ) states/wallslideToJump/node = SubResource( 136 ) -states/wallslideToJump/position = Vector2( 1568.54, 459.009 ) +states/wallslideToJump/position = Vector2( 1566.54, 380.009 ) states/wallsliding/node = SubResource( 96 ) -states/wallsliding/position = Vector2( 1766.54, 606.009 ) +states/wallsliding/position = Vector2( 1788.54, 501.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 ), "running", "turnToRun", SubResource( 171 ), "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 ) ] start_node = "idling" -graph_offset = Vector2( 1076.54, -268.991 ) +graph_offset = Vector2( 1038.54, -170.991 ) [sub_resource type="AnimationNodeStateMachinePlayback" id=48] @@ -458,7 +461,7 @@ tracks/13/keys = { "values": [ Vector2( -1, 1 ) ] } tracks/14/type = "value" -tracks/14/path = NodePath("../BlobbyEffectsSprite:frame") +tracks/14/path = NodePath("../BlobbyStateEffects:frame") tracks/14/interp = 1 tracks/14/loop_wrap = true tracks/14/imported = false @@ -470,7 +473,7 @@ tracks/14/keys = { "values": [ 8 ] } tracks/15/type = "value" -tracks/15/path = NodePath("../BlobbyEffectsSprite:position") +tracks/15/path = NodePath("../BlobbyStateEffects:position") tracks/15/interp = 1 tracks/15/loop_wrap = true tracks/15/imported = false @@ -482,7 +485,7 @@ tracks/15/keys = { "values": [ Vector2( 3.07106, -16.064 ) ] } tracks/16/type = "value" -tracks/16/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/16/path = NodePath("../BlobbyStateEffects:visible") tracks/16/interp = 1 tracks/16/loop_wrap = true tracks/16/imported = false @@ -494,7 +497,7 @@ tracks/16/keys = { "values": [ true ] } tracks/17/type = "value" -tracks/17/path = NodePath("../BlobbyEffectsSprite:scale") +tracks/17/path = NodePath("../BlobbyStateEffects:scale") tracks/17/interp = 1 tracks/17/loop_wrap = true tracks/17/imported = false @@ -506,7 +509,7 @@ tracks/17/keys = { "values": [ Vector2( -1, 1 ) ] } tracks/18/type = "value" -tracks/18/path = NodePath("../BlobbyEffectsSprite:offset") +tracks/18/path = NodePath("../BlobbyStateEffects:offset") tracks/18/interp = 1 tracks/18/loop_wrap = true tracks/18/imported = false @@ -766,7 +769,7 @@ tracks/10/keys = { "values": [ Vector2( 1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -914,7 +917,7 @@ tracks/10/keys = { "values": [ Vector2( 1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -1063,7 +1066,7 @@ tracks/10/keys = { "values": [ Vector2( -1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -1211,7 +1214,7 @@ tracks/10/keys = { "values": [ Vector2( 1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -1360,7 +1363,7 @@ tracks/10/keys = { "values": [ Vector2( -1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -1508,7 +1511,7 @@ tracks/10/keys = { "values": [ Vector2( 1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -1656,7 +1659,7 @@ tracks/10/keys = { "values": [ Vector2( 1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -1805,7 +1808,7 @@ tracks/10/keys = { "values": [ Vector2( -1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -1953,7 +1956,7 @@ tracks/10/keys = { "values": [ Vector2( 1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -2102,7 +2105,7 @@ tracks/10/keys = { "values": [ Vector2( -1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -2250,7 +2253,7 @@ tracks/10/keys = { "values": [ Vector2( 1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -2399,7 +2402,7 @@ tracks/10/keys = { "values": [ Vector2( -1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -2547,7 +2550,7 @@ tracks/10/keys = { "values": [ Vector2( 1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -2696,7 +2699,7 @@ tracks/10/keys = { "values": [ Vector2( -1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -2710,7 +2713,7 @@ tracks/11/keys = { [sub_resource type="Animation" id=49] resource_name = "running" -length = 0.35 +length = 0.3 loop = true step = 0.05 tracks/0/type = "value" @@ -2722,7 +2725,7 @@ tracks/0/enabled = true tracks/0/keys = { "times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ), -"update": 0, +"update": 1, "values": [ 14.0, 15.0, 16, 17.0, 18.0, 19.0, 20.0 ] } tracks/1/type = "value" @@ -2846,7 +2849,7 @@ tracks/10/keys = { "values": [ Vector2( 1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:frame") +tracks/11/path = NodePath("../BlobbyStateEffects:frame") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -2858,7 +2861,7 @@ tracks/11/keys = { "values": [ 6, 9, 9, 9, 5, 6, 7 ] } tracks/12/type = "value" -tracks/12/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/12/path = NodePath("../BlobbyStateEffects:visible") tracks/12/interp = 1 tracks/12/loop_wrap = true tracks/12/imported = false @@ -2870,7 +2873,7 @@ tracks/12/keys = { "values": [ true ] } tracks/13/type = "value" -tracks/13/path = NodePath("../BlobbyEffectsSprite:scale") +tracks/13/path = NodePath("../BlobbyStateEffects:scale") tracks/13/interp = 1 tracks/13/loop_wrap = true tracks/13/imported = false @@ -2878,11 +2881,11 @@ tracks/13/enabled = true tracks/13/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), -"update": 1, +"update": 0, "values": [ Vector2( 1, 1 ) ] } tracks/14/type = "value" -tracks/14/path = NodePath("../BlobbyEffectsSprite:offset") +tracks/14/path = NodePath("../BlobbyStateEffects:offset") tracks/14/interp = 1 tracks/14/loop_wrap = true tracks/14/imported = false @@ -2896,7 +2899,7 @@ tracks/14/keys = { [sub_resource type="Animation" id=102] resource_name = "runningLeft" -length = 0.35 +length = 0.3 loop = true step = 0.05 tracks/0/type = "value" @@ -3032,7 +3035,7 @@ tracks/10/keys = { "values": [ Vector2( -1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:frame") +tracks/11/path = NodePath("../BlobbyStateEffects:frame") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -3044,7 +3047,7 @@ tracks/11/keys = { "values": [ 6, 9, 9, 9, 5, 6, 7 ] } tracks/12/type = "value" -tracks/12/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/12/path = NodePath("../BlobbyStateEffects:visible") tracks/12/interp = 1 tracks/12/loop_wrap = true tracks/12/imported = false @@ -3056,7 +3059,7 @@ tracks/12/keys = { "values": [ true ] } tracks/13/type = "value" -tracks/13/path = NodePath("../BlobbyEffectsSprite:scale") +tracks/13/path = NodePath("../BlobbyStateEffects:scale") tracks/13/interp = 1 tracks/13/loop_wrap = true tracks/13/imported = false @@ -3064,11 +3067,11 @@ tracks/13/enabled = true tracks/13/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), -"update": 1, +"update": 0, "values": [ Vector2( -1, 1 ) ] } tracks/14/type = "value" -tracks/14/path = NodePath("../BlobbyEffectsSprite:offset") +tracks/14/path = NodePath("../BlobbyStateEffects:offset") tracks/14/interp = 1 tracks/14/loop_wrap = true tracks/14/imported = false @@ -3216,7 +3219,7 @@ tracks/10/keys = { "values": [ Vector2( 1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -3365,7 +3368,7 @@ tracks/10/keys = { "values": [ Vector2( -1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -3513,7 +3516,7 @@ tracks/10/keys = { "values": [ Vector2( 1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -3662,7 +3665,7 @@ tracks/10/keys = { "values": [ Vector2( -1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -3810,7 +3813,7 @@ tracks/10/keys = { "values": [ Vector2( 1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -3959,7 +3962,7 @@ tracks/10/keys = { "values": [ Vector2( -1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -4107,7 +4110,7 @@ tracks/10/keys = { "values": [ Vector2( 1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -4256,7 +4259,7 @@ tracks/10/keys = { "values": [ Vector2( -1, 1 ) ] } tracks/11/type = "value" -tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") +tracks/11/path = NodePath("../BlobbyStateEffects:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false @@ -4268,6 +4271,127 @@ tracks/11/keys = { "values": [ false ] } +[sub_resource type="Animation" id=181] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath(".:frame") +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": 0, +"values": [ 9 ] +} +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 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 8 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:scale") +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": 0, +"values": [ Vector2( -1, 1 ) ] +} + +[sub_resource type="Animation" id=182] +resource_name = "airstrafing" +length = 0.15 +step = 0.025 +tracks/0/type = "value" +tracks/0/path = NodePath(".:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.025, 0.05, 0.075, 0.15, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 3, 9, 4 ] +} +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 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 8 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:scale") +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": 0, +"values": [ Vector2( 1, 1 ) ] +} + +[sub_resource type="Animation" id=183] +resource_name = "airstrafingLeft" +length = 0.15 +step = 0.025 +tracks/0/type = "value" +tracks/0/path = NodePath(".:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.025, 0.05, 0.1, 0.15, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 3, 9, 4 ] +} +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 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 5, 8 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:scale") +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": 0, +"values": [ Vector2( -1, 1 ) ] +} + [node name="Blobby" type="KinematicBody2D" groups=["player"]] collision_mask = 120 collision/safe_margin = 0.001 @@ -4282,14 +4406,6 @@ position = Vector2( 0.0286326, -10.0053 ) scale = Vector2( 1.03, 1.04 ) shape = SubResource( 2 ) -[node name="BlobbyEffectsSprite" type="Sprite" parent="."] -position = Vector2( 3.07106, -16.064 ) -scale = Vector2( -1, 1 ) -texture = ExtResource( 1 ) -offset = Vector2( 4, 0 ) -hframes = 10 -frame = 8 - [node name="BlobbySprite" type="Sprite" parent="."] position = Vector2( 0, -16 ) scale = Vector2( -1, 1 ) @@ -4305,6 +4421,7 @@ __meta__ = { [node name="AnimationTree" type="AnimationTree" parent="BlobbySprite"] tree_root = SubResource( 47 ) anim_player = NodePath("../BlobbymationPlayer") +active = true root_motion_track = NodePath(".") parameters/playback = SubResource( 48 ) parameters/ducking/blend_position = 1.0 @@ -4316,7 +4433,7 @@ 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/wallslideToJump/blend_position = -0.994131 parameters/wallsliding/blend_position = 1.0 [node name="BlobbymationPlayer" type="AnimationPlayer" parent="BlobbySprite"] @@ -4348,6 +4465,27 @@ anims/wallslideToJumpRight = SubResource( 101 ) anims/wallsliding = SubResource( 74 ) anims/wallslidingRight = SubResource( 97 ) +[node name="BlobbyActionEffects" type="Sprite" parent="."] +position = Vector2( 3.07106, -16.064 ) +scale = Vector2( -1, 1 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 8 ) +hframes = 10 +frame = 9 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="BlobbyActionEffects"] +anims/RESET = SubResource( 181 ) +anims/airstrafing = SubResource( 182 ) +anims/airstrafingLeft = SubResource( 183 ) + +[node name="BlobbyStateEffects" type="Sprite" parent="."] +position = Vector2( 3.07106, -16.064 ) +scale = Vector2( -1, 1 ) +texture = ExtResource( 1 ) +offset = Vector2( 4, 0 ) +hframes = 10 +frame = 8 + [node name="BlobbyBody" type="CollisionShape2D" parent="." groups=["player"]] position = Vector2( 0.0392303, -10.002 ) shape = SubResource( 1 ) diff --git a/src/Actors/Blobby/BlobbyStateMachine.gd b/src/Actors/Blobby/BlobbyStateMachine.gd index ab1fbba..4cca69f 100644 --- a/src/Actors/Blobby/BlobbyStateMachine.gd +++ b/src/Actors/Blobby/BlobbyStateMachine.gd @@ -62,15 +62,18 @@ func _state_logic(delta): var direction = get_horizontal_direction() didTurn = false - + #TODO use blendspace value 0 for turn animations instead of this? + # Can you make the blendspace animation play out till end? if direction.x < 0 && facing == 1: didTurn = true facing = -1 - elif direction.x >= 0 && facing == -1: + elif direction.x > 0 && facing == -1: didTurn = true facing = 1 - + #TODO Yeah... deal with it + anim_tree.set("parameters/wallslideToJump/blend_position", parent.wall_touch_direction) + anim_tree.set("parameters/wallsliding/blend_position", parent.wall_touch_direction) if didTurn: _set_blendspaces_direction(facing) _trigger_turn_animation() @@ -224,8 +227,6 @@ 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/wallslideToJump/blend_position", value) - anim_tree.set("parameters/wallsliding/blend_position", value) func _trigger_turn_animation(): match self.state: diff --git a/src/Levels/TLT Level.tscn b/src/Levels/TLT Level.tscn index 72051f6..14a52ca 100644 --- a/src/Levels/TLT Level.tscn +++ b/src/Levels/TLT Level.tscn @@ -49,6 +49,7 @@ scale = Vector2( 0.878906, 0.936025 ) parameters/playback = SubResource( 4 ) [node name="FlyingLaserCutter" parent="." instance=ExtResource( 4 )] +visible = false position = Vector2( 80, 80 ) rotation = 1.5708 @@ -61,6 +62,6 @@ collision_use_kinematic = true collision_layer = 8 collision_mask = 8 format = 1 -tile_data = PoolIntArray( 0, 0, 0, 1, 0, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0, 65536, 0, 0, 65540, 0, 0, 131072, 0, 0, 131076, 0, 0, 196608, 0, 0, 196612, 0, 0, 262144, 0, 0, 262148, 0, 0, 327680, 0, 0, 327684, 0, 0, 393216, 0, 0, 393220, 0, 0, 458752, 0, 0, 458756, 0, 0, 524288, 0, 0, 524292, 0, 0, 589824, 0, 0, 589828, 0, 0, 655360, 0, 0, 655364, 0, 0, 720896, 0, 0, 720900, 0, 0, 786432, 0, 0, 786436, 0, 0, 851968, 0, 0, 851972, 0, 0, 917504, 0, 0, 917508, 0, 0, 983040, 0, 0, 983044, 0, 0, 1048576, 0, 0, 1048577, 0, 0, 1048578, 0, 0, 1048579, 0, 0, 1048580, 0, 0 ) +tile_data = PoolIntArray( 655360, 0, 0, 655361, 0, 0, 655362, 0, 0, 655363, 0, 0, 655364, 0, 0, 655365, 0, 0, 655366, 0, 0, 655367, 0, 0, 655368, 0, 0, 655369, 0, 0, 655370, 0, 0, 655371, 0, 0, 655372, 0, 0, 655373, 0, 0, 655374, 0, 0, 655375, 0, 0, 655376, 0, 0, 655377, 0, 0, 655378, 0, 0, 655379, 0, 0, 655380, 0, 0, 655381, 0, 0, 655382, 0, 0, 655383, 0, 0, 655384, 0, 0, 655385, 0, 0, 655386, 0, 0, 655387, 0, 0, 655388, 0, 0, 720896, 0, 0, 720924, 0, 0, 786432, 0, 0, 786460, 0, 0, 851968, 0, 0, 851996, 0, 0, 917504, 0, 0, 917532, 0, 0, 983040, 0, 0, 983068, 0, 0, 1048576, 0, 0, 1048577, 0, 0, 1048578, 0, 0, 1048579, 0, 0, 1048580, 0, 0, 1048581, 0, 0, 1048582, 0, 0, 1048583, 0, 0, 1048584, 0, 0, 1048585, 0, 0, 1048586, 0, 0, 1048587, 0, 0, 1048588, 0, 0, 1048589, 0, 0, 1048590, 0, 0, 1048591, 0, 0, 1048592, 0, 0, 1048593, 0, 0, 1048594, 0, 0, 1048595, 0, 0, 1048596, 0, 0, 1048597, 0, 0, 1048598, 0, 0, 1048599, 0, 0, 1048600, 0, 0, 1048601, 0, 0, 1048602, 0, 0, 1048603, 0, 0, 1048604, 0, 0 ) [editable path="Blobby"]