feat: crush detection & thwomp, spring level

This commit is contained in:
Jakob Feldmann 2023-09-27 14:56:05 +02:00
parent 09da6e9f3e
commit db8ac4f643
13 changed files with 463 additions and 157 deletions

View File

@ -209,13 +209,26 @@ func is_touching_wall_completely() -> bool:
return value
func is_crushed() -> bool:
var touching_left = false
for left_raycast in left_wall_raycasts.get_children():
if left_raycast.is_colliding():
touching_left = true
var touching_right = false
for right_raycast in right_wall_raycasts.get_children():
if right_raycast.is_colliding():
touching_right = true
return touching_left && touching_right
# Attached to wall state is in the PlayerStateMachine
func is_correct_walljump_input(direction: Vector2) -> bool:
if is_touching_wall_completely():
return( Input.is_action_pressed("jump")
return (
Input.is_action_pressed("jump")
&& abs(direction.x + wall_touch_direction) < 1
&& abs(direction.x + wall_touch_direction) >= 0
)
)
return false
@ -255,7 +268,7 @@ func calculate_jump_velocity(linear_velocity: Vector2, delta: float, direction:
var y_acceleration_force = acceleration_force[state].y
var x_acceleration_force = acceleration_force[state].x
if duck_jumping:
y_acceleration_force *= duck_boost.y
linear_velocity.x += duck_boost.x * direction.x
@ -289,10 +302,7 @@ func calculate_jump_velocity(linear_velocity: Vector2, delta: float, direction:
var divisor = 1 / max(0.1, initial_velocity_dependence)
var movement_factor = absolut + abs(velocity.x) / (max_velocity["fall"].x * divisor)
linear_velocity.x = PhysicsFunc.two_step_euler(
linear_velocity.x,
x_acceleration_force * movement_factor * direction.x,
mass,
delta
linear_velocity.x, x_acceleration_force * movement_factor * direction.x, mass, delta
)
if is_correct_airstrafe_input():
@ -532,6 +542,11 @@ func _on_InvincibilityTimer_timeout() -> void:
die()
func _on_CrushTimer_timeout() -> void:
if is_crushed():
die_for_real()
func handle_grounded_movement(delta: float, direction: Vector2) -> Vector2:
return calculate_grounded_velocity(velocity, delta, direction)

View File

@ -376,7 +376,7 @@ tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -11.9763, -5 ) ]
"values": [ Vector2( -9.5, -5 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -388,7 +388,7 @@ tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -11.9763, 5 ) ]
"values": [ Vector2( -9.5, 5 ) ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("../BlobbyBody:position")
@ -424,7 +424,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12.0551, -5 ) ]
"values": [ Vector2( 9.5, -5 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -436,7 +436,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12.0551, 5 ) ]
"values": [ Vector2( 9.5, 5 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("../BlobbySkin:position")
@ -595,7 +595,7 @@ tracks/3/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -13.9763, 8 ) ]
"values": [ Vector2( -11.5, 8 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position")
@ -607,7 +607,7 @@ tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -13.9763, 0.8125 ) ]
"values": [ Vector2( -11.5, 0.8125 ) ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -619,7 +619,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 14.9301, 7.34375 ) ]
"values": [ Vector2( 12.5, 7.34375 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -631,7 +631,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 14.9301, 0.8125 ) ]
"values": [ Vector2( 12.5, 0.8125 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath(".:offset")
@ -731,7 +731,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -14.9497, -8.38456 ) ]
"values": [ Vector2( -12.5, -8.38456 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -743,7 +743,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -14.9497, -0.658789 ) ]
"values": [ Vector2( -12.5, -0.658789 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -755,7 +755,7 @@ tracks/7/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 14.9301, -8.38456 ) ]
"values": [ Vector2( 12.5, -8.38456 ) ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -767,7 +767,7 @@ tracks/8/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 14.9301, -0.658789 ) ]
"values": [ Vector2( 12.5, -0.658789 ) ]
}
tracks/9/type = "value"
tracks/9/path = NodePath(".:offset")
@ -867,7 +867,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -15.0191, -0.767529 ) ]
"values": [ Vector2( -12.5, -0.767529 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position")
@ -879,7 +879,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -15.0191, -7.0673 ) ]
"values": [ Vector2( -12.5, -7.0673 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -891,7 +891,7 @@ tracks/7/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 15.0135, -7.0673 ) ]
"values": [ Vector2( 12.5, -7.0673 ) ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -903,7 +903,7 @@ tracks/8/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 15.0135, -0.767529 ) ]
"values": [ Vector2( 12.5, -0.767529 ) ]
}
tracks/9/type = "value"
tracks/9/path = NodePath(".:offset")
@ -1004,7 +1004,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -15.0191, -0.767529 ) ]
"values": [ Vector2( -12.5, -0.767529 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position")
@ -1016,7 +1016,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -15.0191, -7.0673 ) ]
"values": [ Vector2( -12.5, -7.0673 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -1028,7 +1028,7 @@ tracks/7/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 15.0135, -7.0673 ) ]
"values": [ Vector2( 12.5, -7.0673 ) ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -1040,7 +1040,7 @@ tracks/8/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 15.0135, -0.767529 ) ]
"values": [ Vector2( 12.5, -0.767529 ) ]
}
tracks/9/type = "value"
tracks/9/path = NodePath(".:offset")
@ -1261,7 +1261,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12, -13 ) ]
"values": [ Vector2( -9.5, -13 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -1273,7 +1273,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12, -5 ) ]
"values": [ Vector2( -9.5, -5 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -1285,7 +1285,7 @@ tracks/7/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12, -13 ) ]
"values": [ Vector2( 9.5, -13 ) ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -1297,7 +1297,7 @@ tracks/8/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12, -5 ) ]
"values": [ Vector2( 9.5, -5 ) ]
}
tracks/9/type = "value"
tracks/9/path = NodePath(".:offset")
@ -1398,7 +1398,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12, -13 ) ]
"values": [ Vector2( -9.5, -13 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -1410,7 +1410,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12, -5 ) ]
"values": [ Vector2( -9.5, -5 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -1422,7 +1422,7 @@ tracks/7/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12, -13 ) ]
"values": [ Vector2( 9.5, -13 ) ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -1434,7 +1434,7 @@ tracks/8/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12, -5 ) ]
"values": [ Vector2( 9.5, -5 ) ]
}
tracks/9/type = "value"
tracks/9/path = NodePath(".:offset")
@ -1534,7 +1534,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -13, -10.686 ) ]
"values": [ Vector2( -11.5, -10.686 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -1546,7 +1546,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -13, -1.942 ) ]
"values": [ Vector2( -11.5, -1.942 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -1558,7 +1558,7 @@ tracks/7/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 13, -1.942 ) ]
"values": [ Vector2( 11.5, -1.942 ) ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -1570,7 +1570,7 @@ tracks/8/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 13, -10.686 ) ]
"values": [ Vector2( 11.5, -10.686 ) ]
}
tracks/9/type = "value"
tracks/9/path = NodePath(".:offset")
@ -1670,7 +1670,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 14, -10.686 ) ]
"values": [ Vector2( 11.5, -10.686 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -1682,7 +1682,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 14, -1.942 ) ]
"values": [ Vector2( 11.5, -1.942 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -1694,7 +1694,7 @@ tracks/7/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12, -1.942 ) ]
"values": [ Vector2( -9.5, -1.942 ) ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position")
@ -1706,7 +1706,7 @@ tracks/8/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12, -10.686 ) ]
"values": [ Vector2( -9.5, -10.686 ) ]
}
tracks/9/type = "value"
tracks/9/path = NodePath(".:offset")
@ -1807,7 +1807,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12, -10.686 ) ]
"values": [ Vector2( 9.5, -10.686 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -1819,7 +1819,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12, -1.942 ) ]
"values": [ Vector2( 9.5, -1.942 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -1831,7 +1831,7 @@ tracks/7/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -14, -1.942 ) ]
"values": [ Vector2( -11.5, -1.942 ) ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position")
@ -1843,7 +1843,7 @@ tracks/8/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -13.0423, -10.6856 ) ]
"values": [ Vector2( -11.5, -10.686 ) ]
}
tracks/9/type = "value"
tracks/9/path = NodePath(".:offset")
@ -1954,7 +1954,7 @@ tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12, -10.686 ) ]
"values": [ Vector2( 9.5, -10.686 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -1966,7 +1966,7 @@ tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12, -1.942 ) ]
"values": [ Vector2( 9.5, -1.942 ) ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -1975,10 +1975,10 @@ tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0 ),
"times": PoolRealArray( 0.01 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -13.0423, -1.94163 ) ]
"values": [ Vector2( -9.5, -1.942 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position")
@ -1990,7 +1990,7 @@ tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12, -10.686 ) ]
"values": [ Vector2( -9.5, -10.686 ) ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("../BlobbySkin/CollisionPolygon2D:shape:extents")
@ -2089,10 +2089,10 @@ tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0 ),
"times": PoolRealArray( 0.01 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12, -10.686 ) ]
"values": [ Vector2( 9.5, -10.686 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -2104,7 +2104,7 @@ tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12, -1.942 ) ]
"values": [ Vector2( 9.5, -1.942 ) ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -2116,7 +2116,7 @@ tracks/3/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12, -1.942 ) ]
"values": [ Vector2( -9.5, -1.942 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position")
@ -2128,7 +2128,7 @@ tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12, -10.686 ) ]
"values": [ Vector2( -9.5, -10.686 ) ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("../BlobbySkin/CollisionPolygon2D:shape:extents")
@ -2264,7 +2264,7 @@ tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12, -9.013 ) ]
"values": [ Vector2( -9.5, -9.013 ) ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -2276,7 +2276,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12, -1.942 ) ]
"values": [ Vector2( -9.5, -1.942 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -2288,7 +2288,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12.0573, -9.0133 ) ]
"values": [ Vector2( 9.5, -9.013 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -2300,7 +2300,7 @@ tracks/7/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12.0573, -1.94163 ) ]
"values": [ Vector2( 9.5, -1.942 ) ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("../BlobbySkin/CollisionPolygon2D:position")
@ -2401,7 +2401,7 @@ tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12, -9.013 ) ]
"values": [ Vector2( -9.5, -9.013 ) ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -2413,7 +2413,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12, -1.942 ) ]
"values": [ Vector2( -9.5, -1.942 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -2425,7 +2425,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12.0573, -9.0133 ) ]
"values": [ Vector2( 9.5, -9.013 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -2437,7 +2437,7 @@ tracks/7/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12.0573, -1.94163 ) ]
"values": [ Vector2( 9.5, -1.942 ) ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("../BlobbySkin/CollisionPolygon2D:position")
@ -2605,10 +2605,10 @@ tracks/5/loop_wrap = true
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/keys = {
"times": PoolRealArray( 0 ),
"times": PoolRealArray( 0.01 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -11, -12.849 ) ]
"values": [ Vector2( -9.5, -12.849 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -2620,7 +2620,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -11, -5.913 ) ]
"values": [ Vector2( -9.5, -5.913 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -2629,10 +2629,10 @@ tracks/7/loop_wrap = true
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/keys = {
"times": PoolRealArray( 0 ),
"times": PoolRealArray( -0.01 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 10.0805, -12.8494 ) ]
"values": [ Vector2( 9.5, -12.849 ) ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -2644,7 +2644,7 @@ tracks/8/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 10.0805, -5.91313 ) ]
"values": [ Vector2( 9.5, -5.913 ) ]
}
tracks/9/type = "value"
tracks/9/path = NodePath(".:offset")
@ -2745,7 +2745,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -11, -12.849 ) ]
"values": [ Vector2( -8.5, -12.849 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -2757,7 +2757,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -11, -5.913 ) ]
"values": [ Vector2( -8.5, -5.913 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -2769,7 +2769,7 @@ tracks/7/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 11, -12.849 ) ]
"values": [ Vector2( 8.5, -12.849 ) ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -2781,7 +2781,7 @@ tracks/8/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 11, -5.913 ) ]
"values": [ Vector2( 8.5, -5.913 ) ]
}
tracks/9/type = "value"
tracks/9/path = NodePath(".:offset")
@ -2802,10 +2802,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=49]
@ -2883,7 +2883,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -11.0727, -1.94163 ) ]
"values": [ Vector2( -8.5, -1.942 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position")
@ -2895,7 +2895,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -11.0727, -10.6856 ) ]
"values": [ Vector2( -8.5, -10.686 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -2907,7 +2907,7 @@ tracks/7/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 14, -10.686 ) ]
"values": [ Vector2( 11.5, -10.686 ) ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -2919,7 +2919,7 @@ tracks/8/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 14, -1.942 ) ]
"values": [ Vector2( 11.5, -1.942 ) ]
}
tracks/9/type = "value"
tracks/9/path = NodePath(".:offset")
@ -3021,7 +3021,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -14, -1.942 ) ]
"values": [ Vector2( -11.5, -1.942 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position")
@ -3033,7 +3033,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -14, -10.686 ) ]
"values": [ Vector2( -11.5, -10.686 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -3045,7 +3045,7 @@ tracks/7/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 11, -10.686 ) ]
"values": [ Vector2( 8.5, -10.686 ) ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -3057,7 +3057,7 @@ tracks/8/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 11, -1.942 ) ]
"values": [ Vector2( 8.5, -1.942 ) ]
}
tracks/9/type = "value"
tracks/9/path = NodePath(".:offset")
@ -3109,7 +3109,7 @@ tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12.0945, -1.94163 ) ]
"values": [ Vector2( 9.5, -1.942 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -3121,7 +3121,7 @@ tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12.0945, -10.6856 ) ]
"values": [ Vector2( 9.5, -10.686 ) ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -3133,7 +3133,7 @@ tracks/3/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12.0389, -1.94163 ) ]
"values": [ Vector2( -9.5, -1.942 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position")
@ -3145,7 +3145,7 @@ tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12.0389, -10.6856 ) ]
"values": [ Vector2( -9.5, -10.686 ) ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("../BlobbyBody:position")
@ -3246,7 +3246,7 @@ tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12.0945, -1.94163 ) ]
"values": [ Vector2( 9.5, -1.942 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -3258,7 +3258,7 @@ tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12.0945, -10.6856 ) ]
"values": [ Vector2( 9.5, -10.686 ) ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -3270,7 +3270,7 @@ tracks/3/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12.0389, -1.94163 ) ]
"values": [ Vector2( -9.5, -1.942 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position")
@ -3282,7 +3282,7 @@ tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12.0389, -10.6856 ) ]
"values": [ Vector2( -9.5, -10.686 ) ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("../BlobbyBody:position")
@ -3383,7 +3383,7 @@ tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12.0389, -10.6856 ) ]
"values": [ Vector2( -9.5, -10.686 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -3395,7 +3395,7 @@ tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -12.0389, -1.94163 ) ]
"values": [ Vector2( -9.5, -1.942 ) ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -3407,7 +3407,7 @@ tracks/3/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 14, -1.942 ) ]
"values": [ Vector2( 11.5, -1.942 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -3419,7 +3419,7 @@ tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 14, -10.686 ) ]
"values": [ Vector2( 11.5, -10.686 ) ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("../BlobbyBody:shape:extents")
@ -3488,10 +3488,10 @@ tracks/10/loop_wrap = true
tracks/10/imported = false
tracks/10/enabled = true
tracks/10/keys = {
"times": PoolRealArray( 0, 0.25, 0.5 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 1, 1 ) ]
"values": [ Vector2( 1, 1 ) ]
}
[sub_resource type="Animation" id=99]
@ -3520,7 +3520,7 @@ tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -14, -10.686 ) ]
"values": [ Vector2( -11.5, -10.686 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -3532,7 +3532,7 @@ tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -14, -1.942 ) ]
"values": [ Vector2( -11.5, -1.942 ) ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -3544,7 +3544,7 @@ tracks/3/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12, -1.942 ) ]
"values": [ Vector2( 9.5, -1.942 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -3556,7 +3556,7 @@ tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 12, -10.686 ) ]
"values": [ Vector2( 9.5, -10.686 ) ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("../BlobbyBody:shape:extents")
@ -3705,7 +3705,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -13, -15 ) ]
"values": [ Vector2( -11.5, -15 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -3717,7 +3717,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -13.0617, -7.7509 ) ]
"values": [ Vector2( -11.5, -7.751 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -3726,10 +3726,10 @@ tracks/7/loop_wrap = true
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/keys = {
"times": PoolRealArray( 0 ),
"times": PoolRealArray( 0.01 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 8.09441, -15.3513 ) ]
"values": [ Vector2( 5.5, -15.351 ) ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -3738,10 +3738,10 @@ tracks/8/loop_wrap = true
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/keys = {
"times": PoolRealArray( 0 ),
"times": PoolRealArray( -0.02 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 8.09441, -7.7509 ) ]
"values": [ Vector2( 5.5, -7.751 ) ]
}
tracks/9/type = "value"
tracks/9/path = NodePath(".:offset")
@ -3843,7 +3843,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -8, -15 ) ]
"values": [ Vector2( -5.5, -15 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -3855,7 +3855,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -8, -7.751 ) ]
"values": [ Vector2( -5.5, -7.751 ) ]
}
tracks/7/type = "value"
tracks/7/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -3864,10 +3864,10 @@ tracks/7/loop_wrap = true
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/keys = {
"times": PoolRealArray( 0 ),
"times": PoolRealArray( 0.01 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 13, -15.351 ) ]
"values": [ Vector2( 11.5, -15.351 ) ]
}
tracks/8/type = "value"
tracks/8/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -3876,10 +3876,10 @@ tracks/8/loop_wrap = true
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/keys = {
"times": PoolRealArray( 0 ),
"times": PoolRealArray( 0.01 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 13, -7.751 ) ]
"values": [ Vector2( 11.5, -7.751 ) ]
}
tracks/9/type = "value"
tracks/9/path = NodePath(".:offset")
@ -4068,7 +4068,7 @@ tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 1, -15.351 ) ]
"values": [ Vector2( 3.5, -15.351 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast2:position")
@ -4080,7 +4080,7 @@ tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 1, -7.751 ) ]
"values": [ Vector2( 3.5, -7.751 ) ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast1:position")
@ -4092,7 +4092,7 @@ tracks/3/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 13, -15.351 ) ]
"values": [ Vector2( 11.5, -15.351 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("../WallRaycasts/RightWallRaycast/Right_Wallcast2:position")
@ -4104,7 +4104,7 @@ tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 13, -7.751 ) ]
"values": [ Vector2( 11.5, -7.751 ) ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("../BlobbyBody:shape:extents")
@ -4506,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( -12, -10.686 )
position = Vector2( -9.5, -10.686 )
enabled = true
cast_to = Vector2( -2.5, 0 )
cast_to = Vector2( -5, 0 )
collision_mask = 40
[node name="Left_Wallcast2" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"]
position = Vector2( -12, -1.942 )
position = Vector2( -9.5, -1.942 )
enabled = true
cast_to = Vector2( -2.5, 0 )
cast_to = Vector2( -5, 0 )
collision_mask = 40
[node name="RightWallRaycast" type="Node2D" parent="WallRaycasts"]
[node name="Right_Wallcast1" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"]
position = Vector2( 14, -10.686 )
position = Vector2( 11.5, -10.686 )
enabled = true
cast_to = Vector2( 2.5, 0 )
cast_to = Vector2( 5, 0 )
collision_mask = 40
[node name="Right_Wallcast2" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"]
position = Vector2( 14, -1.942 )
position = Vector2( 11.5, -1.942 )
enabled = true
cast_to = Vector2( 2.5, 0 )
cast_to = Vector2( 5, 0 )
collision_mask = 40
[node name="SlopeRaycastLeft" type="RayCast2D" parent="."]
@ -4556,6 +4556,10 @@ script = ExtResource( 3 )
wait_time = 0.1
one_shot = true
[node name="CrushTimer" type="Timer" parent="BlobbyStateMachine"]
wait_time = 0.2
one_shot = true
[node name="CoyoteTimer" type="Timer" parent="BlobbyStateMachine"]
wait_time = 0.07
one_shot = true
@ -4571,6 +4575,7 @@ one_shot = true
[connection signal="area_entered" from="BlobbySkin" to="." method="_on_BlobbySkin_area_entered"]
[connection signal="got_grounded" from="BlobbyStateMachine" to="." method="_on_Blobby_got_grounded"]
[connection signal="timeout" from="BlobbyStateMachine/JumpBufferTimer" to="BlobbyStateMachine" method="_on_JumpBufferTimer_timeout"]
[connection signal="timeout" from="BlobbyStateMachine/CrushTimer" to="." method="_on_CrushTimer_timeout"]
[connection signal="timeout" from="InvincibilityTimer" to="." method="_on_InvincibilityTimer_timeout"]
[connection signal="timeout" from="PitfallTimer" to="." method="_on_PitfallTimer_timeout"]
[connection signal="timeout" from="PitfallTimer" to="." method="die_for_real" binds= [ -1 ]]
[connection signal="timeout" from="PitfallTimer" to="." method="_on_PitfallTimer_timeout"]

View File

@ -1322,9 +1322,13 @@ playing = true
unique_name_in_owner = true
position = Vector2( -70, 1 )
scale = Vector2( 0.878906, 0.936025 )
mass = null
jump_buffer_filled = null
death_sound_1 = null
death_sound_2 = null
[node name="BlobbySprite" parent="Blobby" index="5"]
frame = 9
frame = 8
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 33 )

View File

@ -1146,6 +1146,13 @@ drag_margin_bottom = 0.1
unique_name_in_owner = true
position = Vector2( -156, -51 )
scale = Vector2( 0.878906, 0.936025 )
mass = null
jump_buffer_filled = null
death_sound_1 = null
death_sound_2 = null
[node name="BlobbySprite" parent="Blobby" index="5"]
frame = 8
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 6 )

View File

@ -235,6 +235,13 @@ visible = false
unique_name_in_owner = true
position = Vector2( -180, 113 )
scale = Vector2( 0.878906, 0.936025 )
mass = null
jump_buffer_filled = null
death_sound_1 = null
death_sound_2 = null
[node name="BlobbySprite" parent="Blobby" index="5"]
frame = 8
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 6 )

View File

@ -124,6 +124,10 @@ drag_margin_bottom = 0.3
unique_name_in_owner = true
position = Vector2( -70, 1 )
scale = Vector2( 0.878906, 0.936025 )
mass = null
jump_buffer_filled = null
death_sound_1 = null
death_sound_2 = null
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 6 )

View File

@ -122,6 +122,10 @@ drag_margin_bottom = 0.3
unique_name_in_owner = true
position = Vector2( -186, 113 )
scale = Vector2( 0.878906, 0.936025 )
mass = null
jump_buffer_filled = null
death_sound_1 = null
death_sound_2 = null
[node name="BlobbySprite" parent="Blobby" index="5"]
frame = 6

View File

@ -127,9 +127,13 @@ drag_margin_bottom = 0.3
unique_name_in_owner = true
position = Vector2( -142, 17 )
scale = Vector2( 0.878906, 0.936025 )
mass = null
jump_buffer_filled = null
death_sound_1 = null
death_sound_2 = null
[node name="BlobbySprite" parent="Blobby" index="5"]
frame = 6
frame = 5
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 53 )

View File

@ -129,9 +129,10 @@ drag_margin_bottom = 0.3
unique_name_in_owner = true
position = Vector2( -70, -1.90735e-06 )
scale = Vector2( 0.878906, 0.936025 )
[node name="BlobbySprite" parent="Blobby" index="5"]
frame = 9
mass = null
jump_buffer_filled = null
death_sound_1 = null
death_sound_2 = null
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 6 )

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,208 @@
[gd_scene load_steps=20 format=2]
[ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=1]
[ext_resource path="res://src/Environment/DropThroughPlatforms.tres" type="TileSet" id=2]
[ext_resource path="res://assets/environment/decor/platform-plants.png" type="Texture" id=3]
[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=8]
[ext_resource path="res://src/Utilities/LevelState.tscn" type="PackedScene" id=9]
[ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=10]
[ext_resource path="res://src/Levels/Templates/LevelTemplate.gd" type="Script" id=11]
[ext_resource path="res://src/Utilities/SceneAudio.tscn" type="PackedScene" id=12]
[ext_resource path="res://src/Platforms/FlyingLaserCutter.tscn" type="PackedScene" id=13]
[ext_resource path="res://src/Platforms/Spring/Spring.tscn" type="PackedScene" id=14]
[ext_resource path="res://src/ObstacleObjects/Spikes.tscn" type="PackedScene" id=15]
[sub_resource type="Shader" id=15]
code = "shader_type canvas_item;
uniform vec4 in_color:hint_color;
uniform vec4 out_color:hint_color;
uniform float in_out:hint_range(0.,1.)=0.;
uniform float position:hint_range(-1.5,1.) = 0.856;
uniform vec2 size = vec2(16., 16.);
void fragment(){
vec2 a = (1./SCREEN_PIXEL_SIZE) / size;
vec2 uv=UV;
uv *= a;
vec2 i_uv = floor(uv);
vec2 f_uv = fract(uv);
float wave = max(0.,i_uv.x/(a.x) - position);
vec2 center = f_uv*2.-1.;
float circle = length(center);
circle = 1. - step(wave,circle);
vec4 color = mix(in_color, out_color, step(0.5, in_out));
COLOR=vec4(circle) * color;
}"
[sub_resource type="ShaderMaterial" id=16]
shader = SubResource( 15 )
shader_param/in_color = Color( 0, 0, 0, 1 )
shader_param/out_color = Color( 0, 0, 0, 0.568627 )
shader_param/in_out = 0.0
shader_param/position = -1.5
shader_param/size = Vector2( 32, 32 )
[sub_resource type="AnimationNodeStateMachinePlayback" id=6]
[sub_resource type="TileSet" id=5]
0/name = "platform-plants.png 0"
0/texture = ExtResource( 3 )
0/tex_offset = Vector2( 0, 0 )
0/modulate = Color( 1, 1, 1, 1 )
0/region = Rect2( 16, 0, 256, 16 )
0/tile_mode = 2
0/autotile/icon_coordinate = Vector2( 5, 0 )
0/autotile/tile_size = Vector2( 16, 16 )
0/autotile/spacing = 0
0/autotile/occluder_map = [ ]
0/autotile/navpoly_map = [ ]
0/autotile/priority_map = [ ]
0/autotile/z_index_map = [ ]
0/occluder_offset = Vector2( 0, 0 )
0/navigation_offset = Vector2( 0, 0 )
0/shape_offset = Vector2( 0, 0 )
0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
0/shape_one_way = false
0/shape_one_way_margin = 0.0
0/shapes = [ ]
0/z_index = 0
[node name="SpringMineThwomp Level" type="Node2D"]
script = ExtResource( 11 )
__meta__ = {
"_edit_horizontal_guides_": [ 464.0 ],
"_edit_vertical_guides_": [ 2880.0 ]
}
[node name="SignalManager" parent="." instance=ExtResource( 7 )]
[node name="SceneAudio" parent="." instance=ExtResource( 12 )]
[node name="LevelState" parent="." instance=ExtResource( 9 )]
unique_name_in_owner = true
[node name="TransitionLayer" type="CanvasLayer" parent="."]
visible = false
[node name="SceneTransition" type="ColorRect" parent="TransitionLayer"]
material = SubResource( 16 )
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="UserInterface" parent="." instance=ExtResource( 8 )]
unique_name_in_owner = true
[node name="BlobbyCam" parent="." instance=ExtResource( 10 )]
unique_name_in_owner = true
drag_margin_bottom = 0.3
[node name="Blobby" parent="." instance=ExtResource( 6 )]
unique_name_in_owner = true
position = Vector2( 384, -304 )
scale = Vector2( 0.878906, 0.936025 )
mass = null
jump_buffer_filled = null
death_sound_1 = null
death_sound_2 = null
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 6 )
[node name="TileMap" type="TileMap" parent="."]
unique_name_in_owner = true
tile_set = ExtResource( 1 )
cell_size = Vector2( 16, 16 )
cell_quadrant_size = 3
cell_custom_transform = Transform2D( 24, 0, 0, 24, 0, 0 )
collision_layer = 8
collision_mask = 8
bake_navigation = true
format = 1
tile_data = PoolIntArray( -1900572, 5, 7, -1835036, 5, 7, -1769500, 5, 7, -1703964, 5, 7, -1638428, 5, 7, -1703901, 5, 6, -1572892, 5, 7, -1638365, 5, 6, -1507356, 5, 7, -1572829, 5, 6, -1441820, 5, 7, -1507293, 5, 6, -1376284, 5, 7, -1441757, 5, 6, -1310748, 5, 7, -1376221, 5, 6, -1245212, 5, 7, -1310685, 5, 6, -1179676, 5, 7, -1245164, 5, 1, -1245163, 5, 2, -1245162, 5, 3, -1245161, 5, 3, -1245160, 5, 3, -1245159, 5, 3, -1245158, 5, 3, -1245157, 5, 5, -1245149, 5, 6, -1114140, 5, 7, -1179628, 5, 9, -1179627, 5, 10, -1179626, 5, 65541, -1179621, 5, 8, -1179613, 5, 6, -1048604, 5, 7, -1114090, 5, 6, -1114088, 5, 65540, -1114087, 5, 10, -1114086, 5, 10, -1114085, 5, 65536, -1114077, 5, 9, -1114076, 5, 10, -1114075, 5, 65541, -983068, 5, 7, -1048554, 5, 6, -1048552, 5, 7, -1048539, 5, 6, -917532, 5, 65538, -917531, 5, 2, -917530, 5, 2, -917529, 5, 2, -917528, 5, 2, -917527, 5, 2, -917526, 5, 2, -917525, 5, 2, -917524, 5, 2, -917523, 5, 2, -917522, 5, 2, -917521, 5, 2, -917520, 5, 2, -917519, 5, 2, -917518, 5, 2, -917517, 5, 2, -917516, 5, 2, -917515, 5, 2, -917514, 5, 2, -917513, 5, 2, -917512, 5, 2, -917511, 5, 2, -917510, 5, 2, -917509, 5, 2, -917508, 5, 2, -917507, 5, 2, -917506, 5, 2, -917505, 5, 2, -983040, 5, 2, -983039, 5, 2, -983038, 5, 2, -983037, 5, 2, -983036, 5, 2, -983035, 5, 2, -983034, 5, 2, -983033, 5, 2, -983032, 5, 2, -983031, 5, 2, -983030, 5, 2, -983029, 5, 2, -983028, 5, 2, -983027, 5, 2, -983026, 5, 2, -983025, 5, 2, -983024, 5, 2, -983023, 5, 2, -983022, 5, 2, -983021, 5, 2, -983020, 5, 2, -983019, 5, 2, -983018, 5, 65539, -983016, 5, 7, -983003, 5, 6, -917480, 5, 65538, -917479, 5, 3, -917478, 5, 3, -917477, 5, 5, -917469, 5, 1, -917468, 5, 2, -917467, 5, 65539, -786448, 5, 65540, -786447, 5, 10, -786446, 5, 10, -786445, 5, 10, -786444, 5, 10, -786443, 5, 10, -786442, 5, 10, -786441, 5, 10, -786440, 5, 10, -786439, 5, 10, -786438, 5, 10, -786437, 5, 10, -786436, 5, 10, -786435, 5, 10, -786434, 5, 10, -786433, 5, 10, -851968, 5, 10, -851967, 5, 10, -851966, 5, 10, -851965, 5, 10, -851964, 5, 10, -851963, 5, 10, -851962, 5, 10, -851961, 5, 10, -851960, 5, 10, -851959, 5, 10, -851958, 5, 10, -851957, 5, 10, -851956, 5, 10, -851955, 5, 10, -851954, 5, 10, -851953, 5, 10, -851952, 5, 10, -851951, 5, 10, -851950, 5, 10, -851949, 5, 10, -851948, 5, 10, -851947, 5, 10, -851946, 5, 10, -851945, 5, 10, -851944, 5, 10, -851943, 5, 10, -851942, 5, 10, -851941, 5, 65536, -851933, 5, 6, -720912, 5, 7, -786397, 5, 6, -655376, 5, 7, -720861, 5, 6, -589840, 5, 7, -655325, 5, 6, -524304, 5, 7, -589789, 5, 6, -458768, 5, 7, -524253, 5, 6, -393232, 5, 7, -458717, 5, 6, -327696, 5, 7, -393188, 5, 1, -393187, 5, 3, -393186, 5, 3, -393185, 5, 3, -393184, 5, 3, -393183, 5, 3, -393182, 5, 3, -393181, 5, 65539, -262160, 5, 7, -327652, 5, 6, -196624, 5, 7, -262116, 5, 6, -131088, 5, 7, -196588, 5, 1, -196587, 5, 3, -196586, 5, 3, -196585, 5, 3, -196584, 5, 3, -196583, 5, 3, -196582, 5, 3, -196581, 5, 3, -196580, 5, 65539, -65552, 5, 7, -131052, 5, 6, -16, 5, 7, -65533, 5, 1, -65532, 5, 3, -65531, 5, 3, -65530, 5, 3, -65529, 5, 3, -65528, 5, 3, -65527, 5, 3, -65526, 5, 5, -65516, 5, 6, 65520, 5, 7, 3, 5, 6, 10, 5, 7, 20, 5, 6, 131056, 5, 7, 65539, 5, 6, 65546, 5, 7, 65556, 5, 6, 196592, 5, 7, 131075, 5, 6, 131082, 5, 65538, 131083, 5, 3, 131084, 5, 3, 131085, 5, 3, 131086, 5, 3, 131087, 5, 3, 131088, 5, 3, 131089, 5, 3, 131090, 5, 3, 131091, 5, 3, 131092, 5, 65539, 262128, 5, 7, 196611, 5, 6, 327664, 5, 7, 262147, 5, 6, 393200, 5, 7, 327683, 5, 6, 458736, 5, 7, 393219, 5, 6, 524272, 5, 65538, 524273, 5, 3, 524274, 5, 3, 524275, 5, 2, 524276, 5, 2, 524277, 5, 2, 524278, 5, 2, 524279, 5, 2, 524280, 5, 2, 524281, 5, 2, 524282, 5, 2, 524283, 5, 2, 524284, 5, 2, 524285, 5, 2, 524286, 5, 2, 524287, 5, 2, 458752, 5, 2, 458753, 5, 3, 458754, 5, 3, 458755, 5, 65539 )
[node name="DropThroughPlatforms" type="TileMap" parent="."]
tile_set = ExtResource( 2 )
cell_size = Vector2( 16, 16 )
collision_layer = 128
collision_mask = 128
format = 1
tile_data = PoolIntArray( -1048549, -1610612734, 0, -983013, -1610612734, 2 )
[node name="PlatformPlants" type="TileMap" parent="."]
tile_set = SubResource( 5 )
cell_size = Vector2( 16, 16 )
format = 1
[node name="Portal" parent="." instance=ExtResource( 4 )]
position = Vector2( 289, 203 )
next_scene = "res://src/Levels/Actual Level 1.tscn"
[node name="FlyingLaserCutter2" parent="." instance=ExtResource( 13 )]
position = Vector2( 420, -240 )
avoid_crushing = true
[node name="FlyingLaserCutter3" parent="." instance=ExtResource( 13 )]
position = Vector2( 340, -256 )
rotation = 3.14159
avoid_crushing = true
[node name="FlyingLaserCutter" parent="." instance=ExtResource( 13 )]
rotation = 1.57079
[node name="ElevatorButton" parent="." instance=ExtResource( 5 )]
position = Vector2( 209, 209 )
scale = Vector2( 1, 1 )
elevator_time = 10
[node name="Spring2" parent="." instance=ExtResource( 14 )]
position = Vector2( 250, -14 )
[node name="Spring" parent="." instance=ExtResource( 14 )]
position = Vector2( 509, -146 )
[node name="Spikes" parent="." instance=ExtResource( 15 )]
position = Vector2( 208, -288 )
scale = Vector2( 0.878906, 0.936025 )
[node name="Spikes2" parent="." instance=ExtResource( 15 )]
position = Vector2( 186, -288 )
scale = Vector2( 0.878906, 0.936025 )
[node name="Spikes3" parent="." instance=ExtResource( 15 )]
position = Vector2( 96, -256 )
scale = Vector2( 0.878906, 0.936025 )
[node name="Spikes4" parent="." instance=ExtResource( 15 )]
position = Vector2( 1.52588e-05, -256 )
scale = Vector2( 0.878906, 0.936025 )
[node name="Spikes5" parent="." instance=ExtResource( 15 )]
position = Vector2( -32, -256 )
scale = Vector2( 0.878906, 0.936025 )
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
[editable path="SignalManager"]
[editable path="LevelState"]
[editable path="UserInterface"]
[editable path="UserInterface/HUD"]
[editable path="BlobbyCam"]
[editable path="Blobby"]

View File

@ -107,20 +107,17 @@ size_flags_vertical = 3
[node name="UserInterface" parent="." instance=ExtResource( 8 )]
unique_name_in_owner = true
[node name="Timer" parent="UserInterface/HUD/HUDOverlay/GetBackTimer" index="0"]
wait_time = 20.0
[node name="BlobbyCam" parent="." instance=ExtResource( 4 )]
unique_name_in_owner = true
drag_margin_bottom = 0.3
[node name="Blobby" parent="." instance=ExtResource( 7 )]
unique_name_in_owner = true
position = Vector2( -70, -1.90735e-06 )
position = Vector2( -1, 112 )
scale = Vector2( 0.878906, 0.936025 )
[node name="BlobbySprite" parent="Blobby" index="5"]
frame = 7
frame = 5
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 6 )
@ -150,12 +147,12 @@ cell_size = Vector2( 16, 16 )
format = 1
[node name="ElevatorButton" parent="." instance=ExtResource( 11 )]
position = Vector2( 216, 112 )
position = Vector2( 208, 102 )
scale = Vector2( 1, 1 )
elevator_time = 10
[node name="Portal" parent="ElevatorButton" instance=ExtResource( 5 )]
position = Vector2( 36, -8 )
scale = Vector2( 0.5, 0.5 )
[node name="Portal" parent="." instance=ExtResource( 5 )]
position = Vector2( 288, 96 )
next_scene = "res://src/Levels/Actual Level 1.tscn"
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]

View File

@ -150,6 +150,9 @@ func _get_transition(_delta):
# + " y vel/10:"
# + String(round(parent.velocity.y / 10))
var new_state
if parent.is_crushed() && $CrushTimer.is_stopped():
print(parent.is_crushed())
$CrushTimer.start()
if !parent.is_on_floor():
if parent.velocity.y < -1:
was_coyote_hanging = false