Airstrafe anim fix and wallslide anim direction fix

This commit is contained in:
Jakob Feldmann 2022-08-02 19:07:47 +02:00
parent 12c100e56a
commit 6eace8721c
6 changed files with 218 additions and 72 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 960 B

After

Width:  |  Height:  |  Size: 915 B

View File

@ -1,14 +1,14 @@
extends Player extends Player
const PhysicsFunc = preload("res://src/Utilities/Physic/PhysicsFunc.gd") const PhysicsFunc = preload("res://src/Utilities/Physic/PhysicsFunc.gd")
export var jump_buffer_filled := false export var jump_buffer_filled := false
onready var wall_touch_direction = 0
onready var left_wall_raycasts = $WallRaycasts/LeftWallRaycast onready var left_wall_raycasts = $WallRaycasts/LeftWallRaycast
onready var right_wall_raycasts = $WallRaycasts/RightWallRaycast onready var right_wall_raycasts = $WallRaycasts/RightWallRaycast
onready var player_state_machine = $BlobbyStateMachine onready var player_state_machine = $BlobbyStateMachine
onready var init_boost = player_state_machine.init_boost onready var init_boost = player_state_machine.init_boost
onready var init_boost_type = player_state_machine.init_boost_type 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 # When the Enemy stomp AREA enters the enemy collision area -> stomp
func _on_BlobbySkin_area_entered(area: Area2D) -> void: func _on_BlobbySkin_area_entered(area: Area2D) -> void:
@ -55,7 +55,7 @@ func calculate_duck_velocity(
if velocity.x < 0: if velocity.x < 0:
velocity_direction = -1.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 var deceleration_force = calculate_deceleration_force(_gravity, mass)*0.333
# Slowing down movement when not controlling direction # Slowing down movement when not controlling direction
@ -188,14 +188,14 @@ func is_reversing_horizontal_movement(direction: Vector2) -> bool:
# Also sets wall_touch_direction # Also sets wall_touch_direction
func is_touching_wall_completely() -> bool: func is_touching_wall_completely() -> bool:
for left_raycast in left_wall_raycasts.get_children(): for left_raycast in left_wall_raycasts.get_children():
wall_touch_direction = -1 if left_raycast.is_colliding():
if !left_raycast.is_colliding(): wall_touch_direction = -1
for right_raycast in right_wall_raycasts.get_children(): return true
wall_touch_direction = 1 for right_raycast in right_wall_raycasts.get_children():
if !right_raycast.is_colliding(): if right_raycast.is_colliding():
wall_touch_direction = 0 wall_touch_direction = 1
return false return true
return true return false
# Attached to wall state is in the PlayerStateMachine # Attached to wall state is in the PlayerStateMachine
@ -309,6 +309,12 @@ func execute_airstrafe(
linear_velocity: Vector2, delta: float, direction: Vector2 linear_velocity: Vector2, delta: float, direction: Vector2
) -> Vector2: ) -> Vector2:
# var rev = 1 if !is_reversing_horizontal_movement(direction) else -1 # 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): if is_reversing_horizontal_movement(direction):
linear_velocity.x = 0 linear_velocity.x = 0
linear_velocity.x = PhysicsFunc.two_step_euler( linear_velocity.x = PhysicsFunc.two_step_euler(

View File

@ -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://assets/blobby/blobby-effects-spritesheet.png" type="Texture" id=1]
[ext_resource path="res://src/Actors/Blobby/BlobbyCam.gd" type="Script" id=2] [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_0/pos = -1.0
blend_point_1/node = SubResource( 121 ) blend_point_1/node = SubResource( 121 )
blend_point_1/pos = 1.0 blend_point_1/pos = 1.0
min_space = -1.3
max_space = 1.3
snap = 0.5
[sub_resource type="AnimationNodeAnimation" id=128] [sub_resource type="AnimationNodeAnimation" id=128]
animation = "turnToRunLeft" animation = "turnToRunLeft"
@ -135,9 +138,9 @@ animation = "wallslideToJumpRight"
[sub_resource type="AnimationNodeBlendSpace1D" id=136] [sub_resource type="AnimationNodeBlendSpace1D" id=136]
blend_point_0/node = SubResource( 134 ) 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/node = SubResource( 135 )
blend_point_1/pos = -1.0 blend_point_1/pos = 1.0
[sub_resource type="AnimationNodeAnimation" id=179] [sub_resource type="AnimationNodeAnimation" id=179]
animation = "wallsliding" animation = "wallsliding"
@ -275,12 +278,12 @@ states/turnToRun/position = Vector2( 1795.54, -308.991 )
states/walking/node = SubResource( 133 ) states/walking/node = SubResource( 133 )
states/walking/position = Vector2( 1795.54, -54 ) states/walking/position = Vector2( 1795.54, -54 )
states/wallslideToJump/node = SubResource( 136 ) 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/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 ) ] 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" start_node = "idling"
graph_offset = Vector2( 1076.54, -268.991 ) graph_offset = Vector2( 1038.54, -170.991 )
[sub_resource type="AnimationNodeStateMachinePlayback" id=48] [sub_resource type="AnimationNodeStateMachinePlayback" id=48]
@ -458,7 +461,7 @@ tracks/13/keys = {
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/14/type = "value" tracks/14/type = "value"
tracks/14/path = NodePath("../BlobbyEffectsSprite:frame") tracks/14/path = NodePath("../BlobbyStateEffects:frame")
tracks/14/interp = 1 tracks/14/interp = 1
tracks/14/loop_wrap = true tracks/14/loop_wrap = true
tracks/14/imported = false tracks/14/imported = false
@ -470,7 +473,7 @@ tracks/14/keys = {
"values": [ 8 ] "values": [ 8 ]
} }
tracks/15/type = "value" tracks/15/type = "value"
tracks/15/path = NodePath("../BlobbyEffectsSprite:position") tracks/15/path = NodePath("../BlobbyStateEffects:position")
tracks/15/interp = 1 tracks/15/interp = 1
tracks/15/loop_wrap = true tracks/15/loop_wrap = true
tracks/15/imported = false tracks/15/imported = false
@ -482,7 +485,7 @@ tracks/15/keys = {
"values": [ Vector2( 3.07106, -16.064 ) ] "values": [ Vector2( 3.07106, -16.064 ) ]
} }
tracks/16/type = "value" tracks/16/type = "value"
tracks/16/path = NodePath("../BlobbyEffectsSprite:visible") tracks/16/path = NodePath("../BlobbyStateEffects:visible")
tracks/16/interp = 1 tracks/16/interp = 1
tracks/16/loop_wrap = true tracks/16/loop_wrap = true
tracks/16/imported = false tracks/16/imported = false
@ -494,7 +497,7 @@ tracks/16/keys = {
"values": [ true ] "values": [ true ]
} }
tracks/17/type = "value" tracks/17/type = "value"
tracks/17/path = NodePath("../BlobbyEffectsSprite:scale") tracks/17/path = NodePath("../BlobbyStateEffects:scale")
tracks/17/interp = 1 tracks/17/interp = 1
tracks/17/loop_wrap = true tracks/17/loop_wrap = true
tracks/17/imported = false tracks/17/imported = false
@ -506,7 +509,7 @@ tracks/17/keys = {
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/18/type = "value" tracks/18/type = "value"
tracks/18/path = NodePath("../BlobbyEffectsSprite:offset") tracks/18/path = NodePath("../BlobbyStateEffects:offset")
tracks/18/interp = 1 tracks/18/interp = 1
tracks/18/loop_wrap = true tracks/18/loop_wrap = true
tracks/18/imported = false tracks/18/imported = false
@ -766,7 +769,7 @@ tracks/10/keys = {
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -914,7 +917,7 @@ tracks/10/keys = {
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -1063,7 +1066,7 @@ tracks/10/keys = {
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -1211,7 +1214,7 @@ tracks/10/keys = {
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -1360,7 +1363,7 @@ tracks/10/keys = {
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -1508,7 +1511,7 @@ tracks/10/keys = {
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -1656,7 +1659,7 @@ tracks/10/keys = {
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -1805,7 +1808,7 @@ tracks/10/keys = {
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -1953,7 +1956,7 @@ tracks/10/keys = {
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -2102,7 +2105,7 @@ tracks/10/keys = {
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -2250,7 +2253,7 @@ tracks/10/keys = {
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -2399,7 +2402,7 @@ tracks/10/keys = {
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -2547,7 +2550,7 @@ tracks/10/keys = {
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -2696,7 +2699,7 @@ tracks/10/keys = {
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -2710,7 +2713,7 @@ tracks/11/keys = {
[sub_resource type="Animation" id=49] [sub_resource type="Animation" id=49]
resource_name = "running" resource_name = "running"
length = 0.35 length = 0.3
loop = true loop = true
step = 0.05 step = 0.05
tracks/0/type = "value" tracks/0/type = "value"
@ -2722,7 +2725,7 @@ tracks/0/enabled = true
tracks/0/keys = { tracks/0/keys = {
"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3 ), "times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ), "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 ] "values": [ 14.0, 15.0, 16, 17.0, 18.0, 19.0, 20.0 ]
} }
tracks/1/type = "value" tracks/1/type = "value"
@ -2846,7 +2849,7 @@ tracks/10/keys = {
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:frame") tracks/11/path = NodePath("../BlobbyStateEffects:frame")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -2858,7 +2861,7 @@ tracks/11/keys = {
"values": [ 6, 9, 9, 9, 5, 6, 7 ] "values": [ 6, 9, 9, 9, 5, 6, 7 ]
} }
tracks/12/type = "value" tracks/12/type = "value"
tracks/12/path = NodePath("../BlobbyEffectsSprite:visible") tracks/12/path = NodePath("../BlobbyStateEffects:visible")
tracks/12/interp = 1 tracks/12/interp = 1
tracks/12/loop_wrap = true tracks/12/loop_wrap = true
tracks/12/imported = false tracks/12/imported = false
@ -2870,7 +2873,7 @@ tracks/12/keys = {
"values": [ true ] "values": [ true ]
} }
tracks/13/type = "value" tracks/13/type = "value"
tracks/13/path = NodePath("../BlobbyEffectsSprite:scale") tracks/13/path = NodePath("../BlobbyStateEffects:scale")
tracks/13/interp = 1 tracks/13/interp = 1
tracks/13/loop_wrap = true tracks/13/loop_wrap = true
tracks/13/imported = false tracks/13/imported = false
@ -2878,11 +2881,11 @@ tracks/13/enabled = true
tracks/13/keys = { tracks/13/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 1, "update": 0,
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/14/type = "value" tracks/14/type = "value"
tracks/14/path = NodePath("../BlobbyEffectsSprite:offset") tracks/14/path = NodePath("../BlobbyStateEffects:offset")
tracks/14/interp = 1 tracks/14/interp = 1
tracks/14/loop_wrap = true tracks/14/loop_wrap = true
tracks/14/imported = false tracks/14/imported = false
@ -2896,7 +2899,7 @@ tracks/14/keys = {
[sub_resource type="Animation" id=102] [sub_resource type="Animation" id=102]
resource_name = "runningLeft" resource_name = "runningLeft"
length = 0.35 length = 0.3
loop = true loop = true
step = 0.05 step = 0.05
tracks/0/type = "value" tracks/0/type = "value"
@ -3032,7 +3035,7 @@ tracks/10/keys = {
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:frame") tracks/11/path = NodePath("../BlobbyStateEffects:frame")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -3044,7 +3047,7 @@ tracks/11/keys = {
"values": [ 6, 9, 9, 9, 5, 6, 7 ] "values": [ 6, 9, 9, 9, 5, 6, 7 ]
} }
tracks/12/type = "value" tracks/12/type = "value"
tracks/12/path = NodePath("../BlobbyEffectsSprite:visible") tracks/12/path = NodePath("../BlobbyStateEffects:visible")
tracks/12/interp = 1 tracks/12/interp = 1
tracks/12/loop_wrap = true tracks/12/loop_wrap = true
tracks/12/imported = false tracks/12/imported = false
@ -3056,7 +3059,7 @@ tracks/12/keys = {
"values": [ true ] "values": [ true ]
} }
tracks/13/type = "value" tracks/13/type = "value"
tracks/13/path = NodePath("../BlobbyEffectsSprite:scale") tracks/13/path = NodePath("../BlobbyStateEffects:scale")
tracks/13/interp = 1 tracks/13/interp = 1
tracks/13/loop_wrap = true tracks/13/loop_wrap = true
tracks/13/imported = false tracks/13/imported = false
@ -3064,11 +3067,11 @@ tracks/13/enabled = true
tracks/13/keys = { tracks/13/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 1, "update": 0,
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/14/type = "value" tracks/14/type = "value"
tracks/14/path = NodePath("../BlobbyEffectsSprite:offset") tracks/14/path = NodePath("../BlobbyStateEffects:offset")
tracks/14/interp = 1 tracks/14/interp = 1
tracks/14/loop_wrap = true tracks/14/loop_wrap = true
tracks/14/imported = false tracks/14/imported = false
@ -3216,7 +3219,7 @@ tracks/10/keys = {
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -3365,7 +3368,7 @@ tracks/10/keys = {
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -3513,7 +3516,7 @@ tracks/10/keys = {
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -3662,7 +3665,7 @@ tracks/10/keys = {
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -3810,7 +3813,7 @@ tracks/10/keys = {
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -3959,7 +3962,7 @@ tracks/10/keys = {
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -4107,7 +4110,7 @@ tracks/10/keys = {
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -4256,7 +4259,7 @@ tracks/10/keys = {
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value" tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyEffectsSprite:visible") tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1 tracks/11/interp = 1
tracks/11/loop_wrap = true tracks/11/loop_wrap = true
tracks/11/imported = false tracks/11/imported = false
@ -4268,6 +4271,127 @@ tracks/11/keys = {
"values": [ false ] "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"]] [node name="Blobby" type="KinematicBody2D" groups=["player"]]
collision_mask = 120 collision_mask = 120
collision/safe_margin = 0.001 collision/safe_margin = 0.001
@ -4282,14 +4406,6 @@ position = Vector2( 0.0286326, -10.0053 )
scale = Vector2( 1.03, 1.04 ) scale = Vector2( 1.03, 1.04 )
shape = SubResource( 2 ) 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="."] [node name="BlobbySprite" type="Sprite" parent="."]
position = Vector2( 0, -16 ) position = Vector2( 0, -16 )
scale = Vector2( -1, 1 ) scale = Vector2( -1, 1 )
@ -4305,6 +4421,7 @@ __meta__ = {
[node name="AnimationTree" type="AnimationTree" parent="BlobbySprite"] [node name="AnimationTree" type="AnimationTree" parent="BlobbySprite"]
tree_root = SubResource( 47 ) tree_root = SubResource( 47 )
anim_player = NodePath("../BlobbymationPlayer") anim_player = NodePath("../BlobbymationPlayer")
active = true
root_motion_track = NodePath(".") root_motion_track = NodePath(".")
parameters/playback = SubResource( 48 ) parameters/playback = SubResource( 48 )
parameters/ducking/blend_position = 1.0 parameters/ducking/blend_position = 1.0
@ -4316,7 +4433,7 @@ parameters/runToJump/blend_position = 1.0
parameters/running/blend_position = 1.0 parameters/running/blend_position = 1.0
parameters/turnToRun/blend_position = 1.0 parameters/turnToRun/blend_position = 1.0
parameters/walking/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 parameters/wallsliding/blend_position = 1.0
[node name="BlobbymationPlayer" type="AnimationPlayer" parent="BlobbySprite"] [node name="BlobbymationPlayer" type="AnimationPlayer" parent="BlobbySprite"]
@ -4348,6 +4465,27 @@ anims/wallslideToJumpRight = SubResource( 101 )
anims/wallsliding = SubResource( 74 ) anims/wallsliding = SubResource( 74 )
anims/wallslidingRight = SubResource( 97 ) 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"]] [node name="BlobbyBody" type="CollisionShape2D" parent="." groups=["player"]]
position = Vector2( 0.0392303, -10.002 ) position = Vector2( 0.0392303, -10.002 )
shape = SubResource( 1 ) shape = SubResource( 1 )

View File

@ -62,15 +62,18 @@ func _state_logic(delta):
var direction = get_horizontal_direction() var direction = get_horizontal_direction()
didTurn = false 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: if direction.x < 0 && facing == 1:
didTurn = true didTurn = true
facing = -1 facing = -1
elif direction.x >= 0 && facing == -1: elif direction.x > 0 && facing == -1:
didTurn = true didTurn = true
facing = 1 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: if didTurn:
_set_blendspaces_direction(facing) _set_blendspaces_direction(facing)
_trigger_turn_animation() _trigger_turn_animation()
@ -224,8 +227,6 @@ func _set_blendspaces_direction(value):
anim_tree.set("parameters/running/blend_position", value) anim_tree.set("parameters/running/blend_position", value)
anim_tree.set("parameters/turnToRun/blend_position", value) anim_tree.set("parameters/turnToRun/blend_position", value)
anim_tree.set("parameters/walking/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(): func _trigger_turn_animation():
match self.state: match self.state:

View File

@ -49,6 +49,7 @@ scale = Vector2( 0.878906, 0.936025 )
parameters/playback = SubResource( 4 ) parameters/playback = SubResource( 4 )
[node name="FlyingLaserCutter" parent="." instance=ExtResource( 4 )] [node name="FlyingLaserCutter" parent="." instance=ExtResource( 4 )]
visible = false
position = Vector2( 80, 80 ) position = Vector2( 80, 80 )
rotation = 1.5708 rotation = 1.5708
@ -61,6 +62,6 @@ collision_use_kinematic = true
collision_layer = 8 collision_layer = 8
collision_mask = 8 collision_mask = 8
format = 1 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"] [editable path="Blobby"]