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 window=false
grav=false grav=false
layer=false
[importer_defaults] [importer_defaults]
@ -151,11 +152,11 @@ duck={
2d_physics/layer_5="platforms" 2d_physics/layer_5="platforms"
2d_physics/layer_6="contraption" 2d_physics/layer_6="contraption"
2d_physics/layer_7="finnemajig" 2d_physics/layer_7="finnemajig"
2d_physics/layer_8="dropThrough"
[physics] [physics]
common/physics_fps=120 common/physics_fps=120
common/physics_jitter_fix=0.3
2d/cell_size=100 2d/cell_size=100
common/enable_object_picking=false common/enable_object_picking=false

View File

@ -95,6 +95,10 @@ func calculate_duck_velocity(
) )
elif !reverse_move: elif !reverse_move:
out_vel.x = max_velocity[state] * direction.x 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 # Jumping when grounded or jump is buffered
if ( if (
Input.is_action_just_pressed("jump") Input.is_action_just_pressed("jump")
@ -110,6 +114,14 @@ func calculate_duck_velocity(
return out_vel 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( func calculate_grounded_velocity(
linear_velocity: Vector2, delta: float, direction: Vector2 linear_velocity: Vector2, delta: float, direction: Vector2
) -> Vector2: ) -> Vector2:
@ -353,6 +365,7 @@ func die() -> void:
func _on_Blobby_got_grounded() -> void: func _on_Blobby_got_grounded() -> void:
velocity.x -= get_floor_velocity().x velocity.x -= get_floor_velocity().x
var floor_object = get_last_slide_collision().collider.get_parent() 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: if "slide_friction" in floor_object:
floor_friction = floor_object.slide_friction floor_friction = floor_object.slide_friction
else: else:
@ -362,3 +375,8 @@ func _on_Blobby_got_grounded() -> void:
func _on_GameplaySignalManager_getback_timer_up() -> void: func _on_GameplaySignalManager_getback_timer_up() -> void:
die() 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] [ext_resource path="res://assets/meta/new_dynamicfont.tres" type="DynamicFont" id=5]
[sub_resource type="RectangleShape2D" id=2] [sub_resource type="RectangleShape2D" id=2]
extents = Vector2( 14.9127, 5.98593 ) extents = Vector2( 12.9698, 8.9748 )
[sub_resource type="StreamTexture" id=62] [sub_resource type="StreamTexture" id=62]
load_path = "res://.import/Blobby.png-42eed5028ccb56a7415a0793b79ec61e.stex" 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 ) 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 ) ] 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( 984.54, -229.991 ) graph_offset = Vector2( 1113.54, -70.991 )
[sub_resource type="AnimationNodeStateMachinePlayback" id=48] [sub_resource type="AnimationNodeStateMachinePlayback" id=48]
@ -4394,7 +4394,7 @@ tracks/2/keys = {
} }
[node name="Blobby" type="KinematicBody2D" groups=["player"]] [node name="Blobby" type="KinematicBody2D" groups=["player"]]
collision_mask = 120 collision_mask = 248
collision/safe_margin = 0.001 collision/safe_margin = 0.001
script = ExtResource( 4 ) script = ExtResource( 4 )
__meta__ = { __meta__ = {
@ -4403,21 +4403,20 @@ __meta__ = {
[node name="BlobbySkin" type="Area2D" parent="." groups=["player"]] [node name="BlobbySkin" type="Area2D" parent="." groups=["player"]]
process_priority = -1 process_priority = -1
collision_mask = 126 collision_mask = 254
[node name="CollisionPolygon2D" type="CollisionShape2D" parent="BlobbySkin"] [node name="CollisionPolygon2D" type="CollisionShape2D" parent="BlobbySkin"]
position = Vector2( 0.0286326, -10.0053 ) position = Vector2( 1, -8.975 )
scale = Vector2( 1.03, 1.04 ) scale = Vector2( 1.03, 1.04 )
shape = SubResource( 2 ) shape = SubResource( 2 )
[node name="BlobbySprite" type="Sprite" parent="."] [node name="BlobbySprite" type="Sprite" parent="."]
position = Vector2( 0, -16 ) position = Vector2( 0, -16 )
scale = Vector2( -1, 1 )
texture = SubResource( 62 ) texture = SubResource( 62 )
offset = Vector2( 1, 0 ) offset = Vector2( 1, 0 )
hframes = 6 hframes = 6
vframes = 5 vframes = 5
frame = 5 frame = 6
__meta__ = { __meta__ = {
"_editor_description_": "YXNlcHJpdGVfd2l6YXJkX2NvbmZpZwpwbGF5ZXJ8PUJsb2JieVNwcml0ZS9CbG9iYnltYXRpb25QbGF5ZXIKc291cmNlfD1yZXM6Ly9hc3NldHMvYmxvYmJ5L2Jsb2JieS1zcHJpdGVzaGVldHQuYXNlcHJpdGUKbGF5ZXJ8PUJsb2JieQpvcF9leHB8PUZhbHNlCm9fZm9sZGVyfD0Kb19uYW1lfD0Kb25seV92aXNpYmxlfD1GYWxzZQpvX2V4X3B8PQo=" "_editor_description_": "YXNlcHJpdGVfd2l6YXJkX2NvbmZpZwpwbGF5ZXJ8PUJsb2JieVNwcml0ZS9CbG9iYnltYXRpb25QbGF5ZXIKc291cmNlfD1yZXM6Ly9hc3NldHMvYmxvYmJ5L2Jsb2JieS1zcHJpdGVzaGVldHQuYXNlcHJpdGUKbGF5ZXJ8PUJsb2JieQpvcF9leHB8PUZhbHNlCm9fZm9sZGVyfD0Kb19uYW1lfD0Kb25seV92aXNpYmxlfD1GYWxzZQpvX2V4X3B8PQo="
} }
@ -4483,6 +4482,7 @@ anims/airstrafing = SubResource( 182 )
anims/airstrafingLeft = SubResource( 183 ) anims/airstrafingLeft = SubResource( 183 )
[node name="BlobbyStateEffects" type="Sprite" parent="."] [node name="BlobbyStateEffects" type="Sprite" parent="."]
visible = false
position = Vector2( 3.07106, -16.064 ) position = Vector2( 3.07106, -16.064 )
scale = Vector2( -1, 1 ) scale = Vector2( -1, 1 )
texture = ExtResource( 1 ) texture = ExtResource( 1 )
@ -4491,7 +4491,7 @@ hframes = 10
frame = 8 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( 1, -8.975 )
shape = SubResource( 1 ) shape = SubResource( 1 )
[node name="BlobbyCam" type="Camera2D" parent="."] [node name="BlobbyCam" type="Camera2D" parent="."]
@ -4542,13 +4542,13 @@ position = Vector2( 0, -1 )
[node name="LeftWallRaycast" type="Node2D" parent="WallRaycasts"] [node name="LeftWallRaycast" type="Node2D" parent="WallRaycasts"]
[node name="Left_Wallcast1" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"] [node name="Left_Wallcast1" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"]
position = Vector2( -11.9763, -5 ) position = Vector2( -12, -10.686 )
enabled = true enabled = true
cast_to = Vector2( -1.5, 0 ) cast_to = Vector2( -1.5, 0 )
collision_mask = 56 collision_mask = 56
[node name="Left_Wallcast2" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"] [node name="Left_Wallcast2" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"]
position = Vector2( -11.9763, 5 ) position = Vector2( -12, -1.942 )
enabled = true enabled = true
cast_to = Vector2( -1.5, 0 ) cast_to = Vector2( -1.5, 0 )
collision_mask = 56 collision_mask = 56
@ -4556,14 +4556,14 @@ collision_mask = 56
[node name="RightWallRaycast" type="Node2D" parent="WallRaycasts"] [node name="RightWallRaycast" type="Node2D" parent="WallRaycasts"]
[node name="Right_Wallcast1" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"] [node name="Right_Wallcast1" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"]
position = Vector2( 12.0551, -5 ) position = Vector2( 14, -10.686 )
enabled = true enabled = true
exclude_parent = false exclude_parent = false
cast_to = Vector2( 1.5, 0 ) cast_to = Vector2( 1.5, 0 )
collision_mask = 56 collision_mask = 56
[node name="Right_Wallcast2" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"] [node name="Right_Wallcast2" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"]
position = Vector2( 12.0551, 5 ) position = Vector2( 14, -1.942 )
enabled = true enabled = true
exclude_parent = false exclude_parent = false
cast_to = Vector2( 1.5, 0 ) 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-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/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/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/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] [sub_resource type="ConvexPolygonShape2D" id=7]
points = PoolVector2Array( 0, 0, 24, 0, 24, 24, 0, 24 ) 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] [sub_resource type="ConvexPolygonShape2D" id=9]
points = PoolVector2Array( 0, 0, 24, 0, 24, 24, 0, 24 ) 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] [resource]
0/name = "alienShip1EdgePartTile.tres 0" 0/name = "alienShip1EdgePartTile.tres 0"
0/texture = ExtResource( 3 ) 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 ) "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ] } ]
3/z_index = 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/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/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/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/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/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] [sub_resource type="AnimationNodeStateMachinePlayback" id=4]
@ -28,9 +29,34 @@ wait_time = 20.0
position = Vector2( -60, -3.8147e-06 ) position = Vector2( -60, -3.8147e-06 )
scale = Vector2( 0.878906, 0.936025 ) 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"] [node name="AnimationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 4 ) 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="Collectibles" type="Node2D" parent="."]
[node name="Coin" parent="Collectibles" instance=ExtResource( 6 )] [node name="Coin" parent="Collectibles" instance=ExtResource( 6 )]
@ -88,6 +114,9 @@ position = Vector2( 1236, -36 )
[node name="Spikes3" parent="TileMap" instance=ExtResource( 3 )] [node name="Spikes3" parent="TileMap" instance=ExtResource( 3 )]
position = Vector2( 684, 12 ) 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 )] [node name="TreeWhyButtons" parent="." instance=ExtResource( 8 )]
position = Vector2( -108, -7 ) position = Vector2( -108, -7 )
@ -116,6 +145,7 @@ next_scene = ExtResource( 9 )
script = ExtResource( 10 ) script = ExtResource( 10 )
[connection signal="timeout" from="UserInterface/HUD/HUDOverlay/GetBackTimer/Timer" to="GameplaySignalManager" method="_on_Timer_timeout"] [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="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"] [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] [gd_scene load_steps=12 format=2]
[ext_resource path="res://src/Environment/AlienShipTileSet.tres" type="TileSet" id=1] [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/Utilities/GameplaySignalManager.gd" type="Script" id=2]
[ext_resource path="res://src/Environment/ShaderGrass.tscn" type="PackedScene" id=3] [ext_resource path="res://src/Contraptions/Triggers/ThreeWhyButtons.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=4] [ext_resource path="res://src/NeutralObjects/Coin.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=5] [ext_resource path="res://src/Environment/ShaderGrass.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=6]
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=7] [ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/Contraptions/Triggers/ThreeWhyButtons.tscn" type="PackedScene" id=8] [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/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] [sub_resource type="AnimationNodeStateMachinePlayback" id=4]
@ -19,7 +19,7 @@ __meta__ = {
"_edit_vertical_guides_": [ 2880.0 ] "_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"] [node name="Timer" parent="UserInterface/HUD/HUDOverlay/GetBackTimer" index="0"]
wait_time = 20.0 wait_time = 20.0
@ -30,7 +30,7 @@ margin_top = 0.456848
margin_right = 3.15375 margin_right = 3.15375
margin_bottom = 0.456848 margin_bottom = 0.456848
[node name="Blobby" parent="." instance=ExtResource( 2 )] [node name="Blobby" parent="." instance=ExtResource( 10 )]
position = Vector2( 71.0069, 335.293 ) position = Vector2( 71.0069, 335.293 )
scale = Vector2( 0.878906, 0.936025 ) scale = Vector2( 0.878906, 0.936025 )
@ -40,27 +40,27 @@ parameters/playback = SubResource( 4 )
[node name="Collectibles" type="Node2D" parent="."] [node name="Collectibles" type="Node2D" parent="."]
visible = false visible = false
[node name="Coin" parent="Collectibles" instance=ExtResource( 6 )] [node name="Coin" parent="Collectibles" instance=ExtResource( 4 )]
position = Vector2( 336, -60 ) position = Vector2( 336, -60 )
scale = Vector2( 0.133, 0.133 ) 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 ) position = Vector2( 324, -11 )
scale = Vector2( 0.133, 0.133 ) 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 ) position = Vector2( 1188, -84 )
scale = Vector2( 0.133, 0.133 ) 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 ) position = Vector2( 1236, -108 )
scale = Vector2( 0.133, 0.133 ) 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 ) position = Vector2( 1140, -108 )
scale = Vector2( 0.133, 0.133 ) 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 ) position = Vector2( 696, -48 )
scale = Vector2( 0.133, 0.133 ) scale = Vector2( 0.133, 0.133 )
@ -74,7 +74,7 @@ collision_mask = 8
format = 1 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 ) 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 visible = false
position = Vector2( -108, -7 ) position = Vector2( -108, -7 )
@ -90,233 +90,233 @@ rotation = 3.14159
position = Vector2( 1452, -77 ) position = Vector2( 1452, -77 )
rotation = -1.5708 rotation = -1.5708
[node name="ElevatorButton" parent="." instance=ExtResource( 4 )] [node name="ElevatorButton" parent="." instance=ExtResource( 8 )]
visible = false visible = false
position = Vector2( 1452, -96 ) position = Vector2( 1452, -96 )
[node name="Portal" parent="ElevatorButton" instance=ExtResource( 5 )] [node name="Portal" parent="ElevatorButton" instance=ExtResource( 7 )]
visible = false visible = false
position = Vector2( -1464, 84 ) position = Vector2( -1464, 84 )
monitoring = false monitoring = false
next_scene = ExtResource( 9 ) next_scene = ExtResource( 9 )
[node name="GameplaySignalManager" type="Node2D" parent="."] [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 ) position = Vector2( 94.3273, 323.897 )
z_index = -1 z_index = -1
[node name="ShaderGrass2" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass2" parent="." instance=ExtResource( 5 )]
position = Vector2( 97.7583, 323.726 ) 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 ) 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 ) position = Vector2( 99.556, 322.393 )
z_index = -1 z_index = -1
[node name="ShaderGrass5" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass5" parent="." instance=ExtResource( 5 )]
position = Vector2( 107.485, 323.87 ) 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 ) position = Vector2( 104.781, 322.084 )
z_index = -1 z_index = -1
[node name="ShaderGrass7" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass7" parent="." instance=ExtResource( 5 )]
position = Vector2( 118.829, 323.704 ) 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 ) 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 ) position = Vector2( 110.33, 321.607 )
z_index = -1 z_index = -1
[node name="ShaderGrass10" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass10" parent="." instance=ExtResource( 5 )]
position = Vector2( 122.514, 323.848 ) position = Vector2( 122.514, 323.848 )
z_index = -1 z_index = -1
[node name="ShaderGrass11" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass11" parent="." instance=ExtResource( 5 )]
position = Vector2( 125.945, 323.677 ) 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 ) 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 ) position = Vector2( 127.742, 322.345 )
z_index = -1 z_index = -1
[node name="ShaderGrass14" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass14" parent="." instance=ExtResource( 5 )]
position = Vector2( 135.671, 323.821 ) 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 ) position = Vector2( 132.967, 322.035 )
z_index = -1 z_index = -1
[node name="ShaderGrass16" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass16" parent="." instance=ExtResource( 5 )]
position = Vector2( 147.015, 323.655 ) 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 ) 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 ) position = Vector2( 138.516, 321.559 )
z_index = -1 z_index = -1
[node name="ShaderGrass19" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass19" parent="." instance=ExtResource( 5 )]
position = Vector2( 149.723, 323.897 ) position = Vector2( 149.723, 323.897 )
z_index = -1 z_index = -1
[node name="ShaderGrass20" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass20" parent="." instance=ExtResource( 5 )]
position = Vector2( 153.154, 323.726 ) 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 ) 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 ) position = Vector2( 154.952, 322.393 )
z_index = -1 z_index = -1
[node name="ShaderGrass23" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass23" parent="." instance=ExtResource( 5 )]
position = Vector2( 162.881, 323.87 ) 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 ) position = Vector2( 160.177, 322.084 )
z_index = -1 z_index = -1
[node name="ShaderGrass25" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass25" parent="." instance=ExtResource( 5 )]
position = Vector2( 174.225, 323.704 ) 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 ) 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 ) position = Vector2( 165.726, 321.607 )
z_index = -1 z_index = -1
[node name="ShaderGrass28" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass28" parent="." instance=ExtResource( 5 )]
position = Vector2( 64.794, 323.73 ) position = Vector2( 64.794, 323.73 )
z_index = -1 z_index = -1
[node name="ShaderGrass29" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass29" parent="." instance=ExtResource( 5 )]
position = Vector2( 68.225, 323.559 ) 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 ) 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 ) position = Vector2( 70.0227, 322.227 )
z_index = -1 z_index = -1
[node name="ShaderGrass32" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass32" parent="." instance=ExtResource( 5 )]
position = Vector2( 77.9516, 323.703 ) 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 ) position = Vector2( 75.2476, 321.917 )
z_index = -1 z_index = -1
[node name="ShaderGrass34" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass34" parent="." instance=ExtResource( 5 )]
position = Vector2( 89.2956, 323.538 ) 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 ) 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 ) position = Vector2( 80.7966, 321.441 )
z_index = -1 z_index = -1
[node name="ShaderGrass37" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass37" parent="." instance=ExtResource( 5 )]
position = Vector2( 39.2652, 323.564 ) position = Vector2( 39.2652, 323.564 )
z_index = -1 z_index = -1
[node name="ShaderGrass38" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass38" parent="." instance=ExtResource( 5 )]
position = Vector2( 42.6962, 323.393 ) 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 ) 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 ) position = Vector2( 44.4939, 322.06 )
z_index = -1 z_index = -1
[node name="ShaderGrass41" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass41" parent="." instance=ExtResource( 5 )]
position = Vector2( 52.4228, 323.537 ) 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 ) position = Vector2( 49.7188, 321.751 )
z_index = -1 z_index = -1
[node name="ShaderGrass43" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass43" parent="." instance=ExtResource( 5 )]
position = Vector2( 63.7668, 323.371 ) 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 ) 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 ) position = Vector2( 55.2678, 321.274 )
z_index = -1 z_index = -1
[node name="ShaderGrass46" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass46" parent="." instance=ExtResource( 5 )]
position = Vector2( 17.2403, 323.73 ) position = Vector2( 17.2403, 323.73 )
z_index = -1 z_index = -1
[node name="ShaderGrass47" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass47" parent="." instance=ExtResource( 5 )]
position = Vector2( 20.6713, 323.559 ) 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 ) 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 ) position = Vector2( 22.469, 322.227 )
z_index = -1 z_index = -1
[node name="ShaderGrass50" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass50" parent="." instance=ExtResource( 5 )]
position = Vector2( 30.3979, 323.703 ) 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 ) position = Vector2( 27.6939, 321.917 )
z_index = -1 z_index = -1
[node name="ShaderGrass52" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass52" parent="." instance=ExtResource( 5 )]
position = Vector2( 41.7419, 323.538 ) 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 ) 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 ) position = Vector2( 33.2429, 321.441 )
z_index = -1 z_index = -1
[node name="ShaderGrass55" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass55" parent="." instance=ExtResource( 5 )]
position = Vector2( 166.242, 323.73 ) position = Vector2( 166.242, 323.73 )
z_index = -1 z_index = -1
[node name="ShaderGrass56" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass56" parent="." instance=ExtResource( 5 )]
position = Vector2( 169.673, 323.559 ) 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 ) 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 ) position = Vector2( 171.471, 322.227 )
z_index = -1 z_index = -1
[node name="ShaderGrass59" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass59" parent="." instance=ExtResource( 5 )]
position = Vector2( 179.399, 323.703 ) 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 ) position = Vector2( 176.695, 321.917 )
z_index = -1 z_index = -1
[node name="ShaderGrass61" parent="." instance=ExtResource( 3 )] [node name="ShaderGrass61" parent="." instance=ExtResource( 5 )]
position = Vector2( 190.743, 323.538 ) 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 ) 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 ) position = Vector2( 182.244, 321.441 )
z_index = -1 z_index = -1