Drop through one way platform

This commit is contained in:
Jakob Feldmann 2022-09-25 17:46:57 +02:00
parent b7bc027aa5
commit 7f55ddfc22
13 changed files with 312 additions and 100 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 B

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Alien-ship1-Edge-DropThrough-Unanimated.png-14c276aa64fbfdb5be932b2be5eb4f06.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/environment/blocks/Alien-ship1-Edge-DropThrough-Unanimated.png"
dest_files=[ "res://.import/Alien-ship1-Edge-DropThrough-Unanimated.png-14c276aa64fbfdb5be932b2be5eb4f06.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@ -0,0 +1,26 @@
[remap]
importer="aseprite.wizard.plugin"
type="SpriteFrames"
path="res://.import/DropThrough-Vine-Block.aseprite-501c19e4cacf40654b823472d785b695.res"
[deps]
source_file="res://assets/environment/blocks/DropThrough-Vine-Block.aseprite"
dest_files=[ "res://.import/DropThrough-Vine-Block.aseprite-501c19e4cacf40654b823472d785b695.res" ]
[params]
split_layers=false
exclude_layers_pattern=""
only_visible_layers=false
sheet_type="Packed"
sprite_filename_pattern="{basename}.{layer}.{extension}"
texture_strip/import_texture_strip=false
texture_strip/filename_pattern="{basename}.{layer}.Strip.{extension}"
texture_atlas/import_texture_atlas=false
texture_atlas/filename_pattern="{basename}.{layer}.Atlas.{extension}"
texture_atlas/frame_filename_pattern="{basename}.{layer}.{animation}.{frame}.Atlas.{extension}"
animated_texture/import_animated_texture=false
animated_texture/filename_pattern="{basename}.{layer}.{animation}.Texture.{extension}"
animated_texture/frame_filename_pattern="{basename}.{layer}.{animation}.{frame}.Texture.{extension}"

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/DropThrough-Vine-Block.png-89f1857a9725545575556b519548ae44.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/environment/blocks/DropThrough-Vine-Block.png"
dest_files=[ "res://.import/DropThrough-Vine-Block.png-89f1857a9725545575556b519548ae44.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@ -67,6 +67,7 @@ enabled=PoolStringArray( "res://addons/AsepriteWizard/plugin.cfg" )
window=false
grav=false
layer=false
[importer_defaults]
@ -151,11 +152,11 @@ duck={
2d_physics/layer_5="platforms"
2d_physics/layer_6="contraption"
2d_physics/layer_7="finnemajig"
2d_physics/layer_8="dropThrough"
[physics]
common/physics_fps=120
common/physics_jitter_fix=0.3
2d/cell_size=100
common/enable_object_picking=false

View File

@ -57,7 +57,7 @@ func calculate_duck_velocity(
if velocity.x < 0:
velocity_direction = -1.0
# TODO Improve this to separate crawling(slow) and sliding
# 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
@ -95,6 +95,10 @@ func calculate_duck_velocity(
)
elif !reverse_move:
out_vel.x = max_velocity[state] * direction.x
# TODO is_on_dropThrough does the action, is that ok? yEs, MaAsTeR-ChAn
# TODO Drop Through coyote time?
if (Input.is_action_just_pressed("jump") && is_on_dropThrough()):
return Vector2(out_vel.x, _gravity*delta)
# Jumping when grounded or jump is buffered
if (
Input.is_action_just_pressed("jump")
@ -110,6 +114,14 @@ func calculate_duck_velocity(
return out_vel
func is_on_dropThrough():
var bodies: Array = $BlobbySkin.get_overlapping_bodies()
for i in range(0, bodies.size()):
if bodies[i].get_collision_mask_bit(7):
set_collision_mask_bit(7, false)
return true
return false
func calculate_grounded_velocity(
linear_velocity: Vector2, delta: float, direction: Vector2
) -> Vector2:
@ -353,6 +365,7 @@ func die() -> void:
func _on_Blobby_got_grounded() -> void:
velocity.x -= get_floor_velocity().x
var floor_object = get_last_slide_collision().collider.get_parent()
#TODO There is already a friction property in engine
if "slide_friction" in floor_object:
floor_friction = floor_object.slide_friction
else:
@ -362,3 +375,8 @@ func _on_Blobby_got_grounded() -> void:
func _on_GameplaySignalManager_getback_timer_up() -> void:
die()
func _on_BlobbySkin_body_exited(body:Node) -> void:
if body.get_collision_mask_bit(7):
set_collision_mask_bit(7, true)

View File

@ -7,7 +7,7 @@
[ext_resource path="res://assets/meta/new_dynamicfont.tres" type="DynamicFont" id=5]
[sub_resource type="RectangleShape2D" id=2]
extents = Vector2( 14.9127, 5.98593 )
extents = Vector2( 12.9698, 8.9748 )
[sub_resource type="StreamTexture" id=62]
load_path = "res://.import/Blobby.png-42eed5028ccb56a7415a0793b79ec61e.stex"
@ -284,7 +284,7 @@ states/wallsliding/node = SubResource( 96 )
states/wallsliding/position = Vector2( 1795.54, 493.009 )
transitions = [ "falling", "wallsliding", SubResource( 138 ), "wallsliding", "idling", SubResource( 139 ), "wallsliding", "wallslideToJump", SubResource( 140 ), "wallslideToJump", "jumping", SubResource( 141 ), "idling", "jumping", SubResource( 147 ), "runToJump", "jumping", SubResource( 148 ), "ducking", "jumping", SubResource( 149 ), "jumping", "jumpToFall", SubResource( 150 ), "jumpToFall", "falling", SubResource( 151 ), "ducking", "duckTurn", SubResource( 152 ), "duckTurn", "ducking", SubResource( 153 ), "falling", "ducking", SubResource( 154 ), "ducking", "falling", SubResource( 155 ), "ducking", "walking", SubResource( 156 ), "walking", "ducking", SubResource( 157 ), "idling", "ducking", SubResource( 158 ), "ducking", "idling", SubResource( 159 ), "ducking", "running", SubResource( 160 ), "running", "ducking", SubResource( 161 ), "running", "falling", SubResource( 162 ), "falling", "running", SubResource( 163 ), "walking", "falling", SubResource( 164 ), "falling", "walking", SubResource( 165 ), "falling", "idling", SubResource( 166 ), "idling", "walking", SubResource( 167 ), "walking", "idling", SubResource( 168 ), "walking", "turnToRun", SubResource( 169 ), "turnToRun", "walking", SubResource( 170 ), "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( 984.54, -229.991 )
graph_offset = Vector2( 1113.54, -70.991 )
[sub_resource type="AnimationNodeStateMachinePlayback" id=48]
@ -4394,7 +4394,7 @@ tracks/2/keys = {
}
[node name="Blobby" type="KinematicBody2D" groups=["player"]]
collision_mask = 120
collision_mask = 248
collision/safe_margin = 0.001
script = ExtResource( 4 )
__meta__ = {
@ -4403,21 +4403,20 @@ __meta__ = {
[node name="BlobbySkin" type="Area2D" parent="." groups=["player"]]
process_priority = -1
collision_mask = 126
collision_mask = 254
[node name="CollisionPolygon2D" type="CollisionShape2D" parent="BlobbySkin"]
position = Vector2( 0.0286326, -10.0053 )
position = Vector2( 1, -8.975 )
scale = Vector2( 1.03, 1.04 )
shape = SubResource( 2 )
[node name="BlobbySprite" type="Sprite" parent="."]
position = Vector2( 0, -16 )
scale = Vector2( -1, 1 )
texture = SubResource( 62 )
offset = Vector2( 1, 0 )
hframes = 6
vframes = 5
frame = 5
frame = 6
__meta__ = {
"_editor_description_": "YXNlcHJpdGVfd2l6YXJkX2NvbmZpZwpwbGF5ZXJ8PUJsb2JieVNwcml0ZS9CbG9iYnltYXRpb25QbGF5ZXIKc291cmNlfD1yZXM6Ly9hc3NldHMvYmxvYmJ5L2Jsb2JieS1zcHJpdGVzaGVldHQuYXNlcHJpdGUKbGF5ZXJ8PUJsb2JieQpvcF9leHB8PUZhbHNlCm9fZm9sZGVyfD0Kb19uYW1lfD0Kb25seV92aXNpYmxlfD1GYWxzZQpvX2V4X3B8PQo="
}
@ -4483,6 +4482,7 @@ anims/airstrafing = SubResource( 182 )
anims/airstrafingLeft = SubResource( 183 )
[node name="BlobbyStateEffects" type="Sprite" parent="."]
visible = false
position = Vector2( 3.07106, -16.064 )
scale = Vector2( -1, 1 )
texture = ExtResource( 1 )
@ -4491,7 +4491,7 @@ hframes = 10
frame = 8
[node name="BlobbyBody" type="CollisionShape2D" parent="." groups=["player"]]
position = Vector2( 0.0392303, -10.002 )
position = Vector2( 1, -8.975 )
shape = SubResource( 1 )
[node name="BlobbyCam" type="Camera2D" parent="."]
@ -4542,13 +4542,13 @@ position = Vector2( 0, -1 )
[node name="LeftWallRaycast" type="Node2D" parent="WallRaycasts"]
[node name="Left_Wallcast1" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"]
position = Vector2( -11.9763, -5 )
position = Vector2( -12, -10.686 )
enabled = true
cast_to = Vector2( -1.5, 0 )
collision_mask = 56
[node name="Left_Wallcast2" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"]
position = Vector2( -11.9763, 5 )
position = Vector2( -12, -1.942 )
enabled = true
cast_to = Vector2( -1.5, 0 )
collision_mask = 56
@ -4556,14 +4556,14 @@ collision_mask = 56
[node name="RightWallRaycast" type="Node2D" parent="WallRaycasts"]
[node name="Right_Wallcast1" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"]
position = Vector2( 12.0551, -5 )
position = Vector2( 14, -10.686 )
enabled = true
exclude_parent = false
cast_to = Vector2( 1.5, 0 )
collision_mask = 56
[node name="Right_Wallcast2" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"]
position = Vector2( 12.0551, 5 )
position = Vector2( 14, -1.942 )
enabled = true
exclude_parent = false
cast_to = Vector2( 1.5, 0 )

View File

@ -0,0 +1,42 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://assets/environment/blocks/DropThrough-Vine-Block.png" type="Texture" id=1]
[sub_resource type="OccluderPolygon2D" id=3]
polygon = PoolVector2Array( 0, 0, 24, 0, 24, 12, 0, 12 )
[sub_resource type="ConvexPolygonShape2D" id=4]
points = PoolVector2Array( 0, 0, 24, 0, 24, 0, 0, 0 )
[sub_resource type="TileSet" id=2]
0/name = "DropThrough-Vine-Block.png 0"
0/texture = ExtResource( 1 )
0/tex_offset = Vector2( 0, 0 )
0/modulate = Color( 1, 1, 1, 1 )
0/region = Rect2( 0, 0, 24, 12 )
0/tile_mode = 0
0/occluder_offset = Vector2( 0, 0 )
0/occluder = SubResource( 3 )
0/navigation_offset = Vector2( 0, 0 )
0/shape_offset = Vector2( 0, 0 )
0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
0/shape = SubResource( 4 )
0/shape_one_way = true
0/shape_one_way_margin = 1.0
0/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": true,
"one_way_margin": 1.0,
"shape": SubResource( 4 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
0/z_index = 0
[node name="DropThroughPlatform" type="TileMap"]
tile_set = SubResource( 2 )
cell_size = Vector2( 24, 24 )
cell_quadrant_size = 8
cell_custom_transform = Transform2D( 0, 0, 0, 0, 0, 0 )
collision_layer = 128
collision_mask = 128
format = 1

View File

@ -1,9 +1,10 @@
[gd_resource type="TileSet" load_steps=8 format=2]
[gd_resource type="TileSet" load_steps=10 format=2]
[ext_resource path="res://assets/environment/blocks/Alien-ship1-Edge-Unanimated.png" type="Texture" id=1]
[ext_resource path="res://assets/environment/blocks/Alien-ship1-innerPart-Unanimated.png" type="Texture" id=2]
[ext_resource path="res://assets/environment/blocks/alienShip1EdgePartTile/alienShip1EdgePartTile.tres" type="Texture" id=3]
[ext_resource path="res://assets/environment/blocks/alienShip1innerPartTile/alienShip1InnerPart.tres" type="Texture" id=4]
[ext_resource path="res://assets/environment/blocks/Alien-ship1-Edge-DropThrough-Unanimated.png" type="Texture" id=5]
[sub_resource type="ConvexPolygonShape2D" id=7]
points = PoolVector2Array( 0, 0, 24, 0, 24, 24, 0, 24 )
@ -14,6 +15,9 @@ points = PoolVector2Array( 0, 0, 24, 0, 24, 24, 0, 24 )
[sub_resource type="ConvexPolygonShape2D" id=9]
points = PoolVector2Array( 0, 0, 24, 0, 24, 24, 0, 24 )
[sub_resource type="ConvexPolygonShape2D" id=10]
points = PoolVector2Array( 0, 0, 24, 0, 24, 0, 0, 0 )
[resource]
0/name = "alienShip1EdgePartTile.tres 0"
0/texture = ExtResource( 3 )
@ -92,3 +96,24 @@ points = PoolVector2Array( 0, 0, 24, 0, 24, 24, 0, 24 )
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
3/z_index = 0
4/name = "Alien-ship1-Edge-DropThrough-Unanimated.png 4"
4/texture = ExtResource( 5 )
4/tex_offset = Vector2( 0, 0 )
4/modulate = Color( 1, 1, 1, 1 )
4/region = Rect2( 0, 0, 24, 24 )
4/tile_mode = 0
4/occluder_offset = Vector2( 0, 0 )
4/navigation_offset = Vector2( 0, 0 )
4/shape_offset = Vector2( 0, 0 )
4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
4/shape = SubResource( 10 )
4/shape_one_way = true
4/shape_one_way_margin = 1.0
4/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": true,
"one_way_margin": 1.0,
"shape": SubResource( 10 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
4/z_index = 0

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=12 format=2]
[gd_scene load_steps=13 format=2]
[ext_resource path="res://src/Environment/AlienShipTileSet.tres" type="TileSet" id=1]
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=2]
@ -10,6 +10,7 @@
[ext_resource path="res://src/Contraptions/Triggers/ThreeWhyButtons.tscn" type="PackedScene" id=8]
[ext_resource path="res://src/Levels/Grass Test Level.tscn" type="PackedScene" id=9]
[ext_resource path="res://src/Utilities/GameplaySignalManager.gd" type="Script" id=10]
[ext_resource path="res://src/Contraptions/Platform/DropThroughPlatform.tscn" type="PackedScene" id=11]
[sub_resource type="AnimationNodeStateMachinePlayback" id=4]
@ -28,9 +29,34 @@ wait_time = 20.0
position = Vector2( -60, -3.8147e-06 )
scale = Vector2( 0.878906, 0.936025 )
[node name="CollisionPolygon2D" parent="Blobby/BlobbySkin" index="0"]
position = Vector2( 0.0286326, -10.0053 )
[node name="BlobbySprite" parent="Blobby" index="1"]
scale = Vector2( -1, 1 )
frame = 5
[node name="AnimationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 4 )
[node name="BlobbyStateEffects" parent="Blobby" index="3"]
visible = true
[node name="BlobbyBody" parent="Blobby" index="4"]
position = Vector2( 0.0392303, -10.002 )
[node name="Left_Wallcast1" parent="Blobby/WallRaycasts/LeftWallRaycast" index="0"]
position = Vector2( -11.9763, -5 )
[node name="Left_Wallcast2" parent="Blobby/WallRaycasts/LeftWallRaycast" index="1"]
position = Vector2( -11.9763, 5 )
[node name="Right_Wallcast1" parent="Blobby/WallRaycasts/RightWallRaycast" index="0"]
position = Vector2( 12.0551, -5 )
[node name="Right_Wallcast2" parent="Blobby/WallRaycasts/RightWallRaycast" index="1"]
position = Vector2( 12.0551, 5 )
[node name="Collectibles" type="Node2D" parent="."]
[node name="Coin" parent="Collectibles" instance=ExtResource( 6 )]
@ -88,6 +114,9 @@ position = Vector2( 1236, -36 )
[node name="Spikes3" parent="TileMap" instance=ExtResource( 3 )]
position = Vector2( 684, 12 )
[node name="DropThroughPlatform" parent="." instance=ExtResource( 11 )]
tile_data = PoolIntArray( -131072, 0, 0, -65512, 0, 0, -65511, 0, 0 )
[node name="TreeWhyButtons" parent="." instance=ExtResource( 8 )]
position = Vector2( -108, -7 )
@ -116,6 +145,7 @@ next_scene = ExtResource( 9 )
script = ExtResource( 10 )
[connection signal="timeout" from="UserInterface/HUD/HUDOverlay/GetBackTimer/Timer" to="GameplaySignalManager" method="_on_Timer_timeout"]
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
[connection signal="getback_timer_up" from="GameplaySignalManager" to="Blobby" method="_on_GameplaySignalManager_getback_timer_up"]
[connection signal="terminal_activated" from="GameplaySignalManager" to="UserInterface/HUD" method="_on_SignalManager_terminal_activated"]

View File

@ -1,15 +1,15 @@
[gd_scene load_steps=12 format=2]
[ext_resource path="res://src/Environment/AlienShipTileSet.tres" type="TileSet" id=1]
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/Environment/ShaderGrass.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/NeutralObjects/Coin.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/Contraptions/Triggers/ThreeWhyButtons.tscn" type="PackedScene" id=8]
[ext_resource path="res://src/Utilities/GameplaySignalManager.gd" type="Script" id=2]
[ext_resource path="res://src/Contraptions/Triggers/ThreeWhyButtons.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/NeutralObjects/Coin.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/Environment/ShaderGrass.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=8]
[ext_resource path="res://src/Levels/Enemy Test Level.tscn" type="PackedScene" id=9]
[ext_resource path="res://src/Utilities/GameplaySignalManager.gd" type="Script" id=10]
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=10]
[sub_resource type="AnimationNodeStateMachinePlayback" id=4]
@ -19,7 +19,7 @@ __meta__ = {
"_edit_vertical_guides_": [ 2880.0 ]
}
[node name="UserInterface" parent="." instance=ExtResource( 7 )]
[node name="UserInterface" parent="." instance=ExtResource( 6 )]
[node name="Timer" parent="UserInterface/HUD/HUDOverlay/GetBackTimer" index="0"]
wait_time = 20.0
@ -30,7 +30,7 @@ margin_top = 0.456848
margin_right = 3.15375
margin_bottom = 0.456848
[node name="Blobby" parent="." instance=ExtResource( 2 )]
[node name="Blobby" parent="." instance=ExtResource( 10 )]
position = Vector2( 71.0069, 335.293 )
scale = Vector2( 0.878906, 0.936025 )
@ -40,27 +40,27 @@ parameters/playback = SubResource( 4 )
[node name="Collectibles" type="Node2D" parent="."]
visible = false
[node name="Coin" parent="Collectibles" instance=ExtResource( 6 )]
[node name="Coin" parent="Collectibles" instance=ExtResource( 4 )]
position = Vector2( 336, -60 )
scale = Vector2( 0.133, 0.133 )
[node name="Coin2" parent="Collectibles" instance=ExtResource( 6 )]
[node name="Coin2" parent="Collectibles" instance=ExtResource( 4 )]
position = Vector2( 324, -11 )
scale = Vector2( 0.133, 0.133 )
[node name="Coin3" parent="Collectibles" instance=ExtResource( 6 )]
[node name="Coin3" parent="Collectibles" instance=ExtResource( 4 )]
position = Vector2( 1188, -84 )
scale = Vector2( 0.133, 0.133 )
[node name="Coin4" parent="Collectibles" instance=ExtResource( 6 )]
[node name="Coin4" parent="Collectibles" instance=ExtResource( 4 )]
position = Vector2( 1236, -108 )
scale = Vector2( 0.133, 0.133 )
[node name="Coin5" parent="Collectibles" instance=ExtResource( 6 )]
[node name="Coin5" parent="Collectibles" instance=ExtResource( 4 )]
position = Vector2( 1140, -108 )
scale = Vector2( 0.133, 0.133 )
[node name="Coin6" parent="Collectibles" instance=ExtResource( 6 )]
[node name="Coin6" parent="Collectibles" instance=ExtResource( 4 )]
position = Vector2( 696, -48 )
scale = Vector2( 0.133, 0.133 )
@ -74,7 +74,7 @@ collision_mask = 8
format = 1
tile_data = PoolIntArray( 655360, 2, 0, 655361, 2, 0, 655362, 2, 0, 655363, 2, 0, 655364, 2, 0, 655365, 2, 0, 655366, 2, 0, 655367, 2, 0, 655368, 2, 0, 720896, 2, 0, 720904, 2, 0, 786432, 2, 0, 786440, 2, 0, 851968, 2, 0, 851976, 2, 0, 917504, 2, 0, 917505, 2, 0, 917506, 2, 0, 917507, 2, 0, 917508, 2, 0, 917509, 2, 0, 917510, 2, 0, 917511, 2, 0, 917512, 2, 0 )
[node name="TreeWhyButtons" parent="." instance=ExtResource( 8 )]
[node name="TreeWhyButtons" parent="." instance=ExtResource( 3 )]
visible = false
position = Vector2( -108, -7 )
@ -90,233 +90,233 @@ rotation = 3.14159
position = Vector2( 1452, -77 )
rotation = -1.5708
[node name="ElevatorButton" parent="." instance=ExtResource( 4 )]
[node name="ElevatorButton" parent="." instance=ExtResource( 8 )]
visible = false
position = Vector2( 1452, -96 )
[node name="Portal" parent="ElevatorButton" instance=ExtResource( 5 )]
[node name="Portal" parent="ElevatorButton" instance=ExtResource( 7 )]
visible = false
position = Vector2( -1464, 84 )
monitoring = false
next_scene = ExtResource( 9 )
[node name="GameplaySignalManager" type="Node2D" parent="."]
script = ExtResource( 10 )
script = ExtResource( 2 )
[node name="ShaderGrass" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass" parent="." instance=ExtResource( 5 )]
position = Vector2( 94.3273, 323.897 )
z_index = -1
[node name="ShaderGrass2" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass2" parent="." instance=ExtResource( 5 )]
position = Vector2( 97.7583, 323.726 )
[node name="ShaderGrass3" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass3" parent="." instance=ExtResource( 5 )]
position = Vector2( 103.443, 323.813 )
[node name="ShaderGrass4" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass4" parent="." instance=ExtResource( 5 )]
position = Vector2( 99.556, 322.393 )
z_index = -1
[node name="ShaderGrass5" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass5" parent="." instance=ExtResource( 5 )]
position = Vector2( 107.485, 323.87 )
[node name="ShaderGrass6" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass6" parent="." instance=ExtResource( 5 )]
position = Vector2( 104.781, 322.084 )
z_index = -1
[node name="ShaderGrass7" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass7" parent="." instance=ExtResource( 5 )]
position = Vector2( 118.829, 323.704 )
[node name="ShaderGrass8" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass8" parent="." instance=ExtResource( 5 )]
position = Vector2( 112.732, 323.918 )
[node name="ShaderGrass9" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass9" parent="." instance=ExtResource( 5 )]
position = Vector2( 110.33, 321.607 )
z_index = -1
[node name="ShaderGrass10" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass10" parent="." instance=ExtResource( 5 )]
position = Vector2( 122.514, 323.848 )
z_index = -1
[node name="ShaderGrass11" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass11" parent="." instance=ExtResource( 5 )]
position = Vector2( 125.945, 323.677 )
[node name="ShaderGrass12" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass12" parent="." instance=ExtResource( 5 )]
position = Vector2( 131.629, 323.764 )
[node name="ShaderGrass13" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass13" parent="." instance=ExtResource( 5 )]
position = Vector2( 127.742, 322.345 )
z_index = -1
[node name="ShaderGrass14" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass14" parent="." instance=ExtResource( 5 )]
position = Vector2( 135.671, 323.821 )
[node name="ShaderGrass15" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass15" parent="." instance=ExtResource( 5 )]
position = Vector2( 132.967, 322.035 )
z_index = -1
[node name="ShaderGrass16" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass16" parent="." instance=ExtResource( 5 )]
position = Vector2( 147.015, 323.655 )
[node name="ShaderGrass17" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass17" parent="." instance=ExtResource( 5 )]
position = Vector2( 140.918, 323.869 )
[node name="ShaderGrass18" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass18" parent="." instance=ExtResource( 5 )]
position = Vector2( 138.516, 321.559 )
z_index = -1
[node name="ShaderGrass19" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass19" parent="." instance=ExtResource( 5 )]
position = Vector2( 149.723, 323.897 )
z_index = -1
[node name="ShaderGrass20" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass20" parent="." instance=ExtResource( 5 )]
position = Vector2( 153.154, 323.726 )
[node name="ShaderGrass21" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass21" parent="." instance=ExtResource( 5 )]
position = Vector2( 158.839, 323.813 )
[node name="ShaderGrass22" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass22" parent="." instance=ExtResource( 5 )]
position = Vector2( 154.952, 322.393 )
z_index = -1
[node name="ShaderGrass23" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass23" parent="." instance=ExtResource( 5 )]
position = Vector2( 162.881, 323.87 )
[node name="ShaderGrass24" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass24" parent="." instance=ExtResource( 5 )]
position = Vector2( 160.177, 322.084 )
z_index = -1
[node name="ShaderGrass25" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass25" parent="." instance=ExtResource( 5 )]
position = Vector2( 174.225, 323.704 )
[node name="ShaderGrass26" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass26" parent="." instance=ExtResource( 5 )]
position = Vector2( 168.128, 323.918 )
[node name="ShaderGrass27" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass27" parent="." instance=ExtResource( 5 )]
position = Vector2( 165.726, 321.607 )
z_index = -1
[node name="ShaderGrass28" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass28" parent="." instance=ExtResource( 5 )]
position = Vector2( 64.794, 323.73 )
z_index = -1
[node name="ShaderGrass29" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass29" parent="." instance=ExtResource( 5 )]
position = Vector2( 68.225, 323.559 )
[node name="ShaderGrass30" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass30" parent="." instance=ExtResource( 5 )]
position = Vector2( 73.9096, 323.646 )
[node name="ShaderGrass31" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass31" parent="." instance=ExtResource( 5 )]
position = Vector2( 70.0227, 322.227 )
z_index = -1
[node name="ShaderGrass32" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass32" parent="." instance=ExtResource( 5 )]
position = Vector2( 77.9516, 323.703 )
[node name="ShaderGrass33" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass33" parent="." instance=ExtResource( 5 )]
position = Vector2( 75.2476, 321.917 )
z_index = -1
[node name="ShaderGrass34" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass34" parent="." instance=ExtResource( 5 )]
position = Vector2( 89.2956, 323.538 )
[node name="ShaderGrass35" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass35" parent="." instance=ExtResource( 5 )]
position = Vector2( 83.1986, 323.751 )
[node name="ShaderGrass36" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass36" parent="." instance=ExtResource( 5 )]
position = Vector2( 80.7966, 321.441 )
z_index = -1
[node name="ShaderGrass37" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass37" parent="." instance=ExtResource( 5 )]
position = Vector2( 39.2652, 323.564 )
z_index = -1
[node name="ShaderGrass38" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass38" parent="." instance=ExtResource( 5 )]
position = Vector2( 42.6962, 323.393 )
[node name="ShaderGrass39" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass39" parent="." instance=ExtResource( 5 )]
position = Vector2( 48.3808, 323.48 )
[node name="ShaderGrass40" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass40" parent="." instance=ExtResource( 5 )]
position = Vector2( 44.4939, 322.06 )
z_index = -1
[node name="ShaderGrass41" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass41" parent="." instance=ExtResource( 5 )]
position = Vector2( 52.4228, 323.537 )
[node name="ShaderGrass42" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass42" parent="." instance=ExtResource( 5 )]
position = Vector2( 49.7188, 321.751 )
z_index = -1
[node name="ShaderGrass43" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass43" parent="." instance=ExtResource( 5 )]
position = Vector2( 63.7668, 323.371 )
[node name="ShaderGrass44" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass44" parent="." instance=ExtResource( 5 )]
position = Vector2( 57.6698, 323.585 )
[node name="ShaderGrass45" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass45" parent="." instance=ExtResource( 5 )]
position = Vector2( 55.2678, 321.274 )
z_index = -1
[node name="ShaderGrass46" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass46" parent="." instance=ExtResource( 5 )]
position = Vector2( 17.2403, 323.73 )
z_index = -1
[node name="ShaderGrass47" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass47" parent="." instance=ExtResource( 5 )]
position = Vector2( 20.6713, 323.559 )
[node name="ShaderGrass48" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass48" parent="." instance=ExtResource( 5 )]
position = Vector2( 26.3559, 323.646 )
[node name="ShaderGrass49" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass49" parent="." instance=ExtResource( 5 )]
position = Vector2( 22.469, 322.227 )
z_index = -1
[node name="ShaderGrass50" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass50" parent="." instance=ExtResource( 5 )]
position = Vector2( 30.3979, 323.703 )
[node name="ShaderGrass51" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass51" parent="." instance=ExtResource( 5 )]
position = Vector2( 27.6939, 321.917 )
z_index = -1
[node name="ShaderGrass52" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass52" parent="." instance=ExtResource( 5 )]
position = Vector2( 41.7419, 323.538 )
[node name="ShaderGrass53" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass53" parent="." instance=ExtResource( 5 )]
position = Vector2( 35.6449, 323.751 )
[node name="ShaderGrass54" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass54" parent="." instance=ExtResource( 5 )]
position = Vector2( 33.2429, 321.441 )
z_index = -1
[node name="ShaderGrass55" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass55" parent="." instance=ExtResource( 5 )]
position = Vector2( 166.242, 323.73 )
z_index = -1
[node name="ShaderGrass56" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass56" parent="." instance=ExtResource( 5 )]
position = Vector2( 169.673, 323.559 )
[node name="ShaderGrass57" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass57" parent="." instance=ExtResource( 5 )]
position = Vector2( 175.357, 323.646 )
[node name="ShaderGrass58" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass58" parent="." instance=ExtResource( 5 )]
position = Vector2( 171.471, 322.227 )
z_index = -1
[node name="ShaderGrass59" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass59" parent="." instance=ExtResource( 5 )]
position = Vector2( 179.399, 323.703 )
[node name="ShaderGrass60" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass60" parent="." instance=ExtResource( 5 )]
position = Vector2( 176.695, 321.917 )
z_index = -1
[node name="ShaderGrass61" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass61" parent="." instance=ExtResource( 5 )]
position = Vector2( 190.743, 323.538 )
[node name="ShaderGrass62" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass62" parent="." instance=ExtResource( 5 )]
position = Vector2( 184.646, 323.751 )
[node name="ShaderGrass63" parent="." instance=ExtResource( 3 )]
[node name="ShaderGrass63" parent="." instance=ExtResource( 5 )]
position = Vector2( 182.244, 321.441 )
z_index = -1