feat: two new levels, vacuum robot sprite

This commit is contained in:
Jakob Feldmann 2023-10-01 11:59:52 +02:00
parent ed61e1193d
commit 5fe48cdf90
32 changed files with 1830 additions and 606 deletions

View File

@ -1,4 +0,0 @@
extends Node
func

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 B

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/VacuumRobot.png-c37e574af61145e94f9f999c7165e645.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/enemy/VacuumRobot.png"
dest_files=[ "res://.import/VacuumRobot.png-c37e574af61145e94f9f999c7165e645.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 492 B

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/VacuumRobot1.png-335dc5862b7016536fef27ef501bf2dd.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/enemy/VacuumRobot1.png"
dest_files=[ "res://.import/VacuumRobot1.png-335dc5862b7016536fef27ef501bf2dd.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/VacuumRobot2.png-0ac1d7f4706494e6c07a9bc73ff1ccee.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/enemy/VacuumRobot2.png"
dest_files=[ "res://.import/VacuumRobot2.png-0ac1d7f4706494e6c07a9bc73ff1ccee.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

@ -9,6 +9,11 @@
config_version=4
_global_script_classes=[ {
"base": "AudioStreamPlayer",
"class": "ACVoiceBox",
"language": "GDScript",
"path": "res://addons/ACVoicebox/ACVoicebox.gd"
}, {
"base": "KinematicBody2D",
"class": "Actor",
"language": "GDScript",
@ -90,6 +95,7 @@ _global_script_classes=[ {
"path": "res://src/StateMachines/StateMachine.gd"
} ]
_global_script_class_icons={
"ACVoiceBox": "",
"Actor": "",
"AudibleButton": "",
"AudibleCheckbox": "",
@ -316,11 +322,10 @@ common/enable_object_picking=false
quality/intended_usage/framebuffer_allocation=0
quality/intended_usage/framebuffer_allocation.mobile=0
2d/snapping/use_gpu_pixel_snap=true
threads/thread_model=2
2d/options/use_software_skinning=false
quality/depth/hdr=false
environment/default_environment="res://default_env.tres"
quality/2d/use_pixel_snap=true
environment/2d/use_nvidia_rect_flicker_workaround=true
environment/stretch/aspect="ignore"
environment/intended_usage/framebuffer_allocation.mobile=0

View File

@ -252,7 +252,7 @@ func calculate_stomp_velocity(delta: float) -> float:
stomp_time -= delta
# print(stomp_time)
if stomp_time <= 0:
# print("stomping over")
# print("stomping over")
stomping = false
stomp_time = init_stomp_time
return v
@ -283,15 +283,19 @@ func calculate_jump_velocity(linear_velocity: Vector2, delta: float, direction:
# print(acceleration_force[state].y)
# print(linear_velocity.y)
var y_velocity = 0
if !Input.is_action_pressed("jump") && !stomping:
# Smooth transition from jumping to falling
if velocity.y > _gravity * delta * 10:
linear_velocity.y += _gravity * delta * 10
y_velocity += _gravity * delta * 10
else:
linear_velocity.y += (max(abs(linear_velocity.y), _gravity * delta) / 2)
y_velocity += (max(abs(linear_velocity.y), _gravity * delta) / 2)
else:
linear_velocity.y += _gravity * delta
y_velocity += _gravity * delta
#if linear_velocity.y < max_velocity["jump"].y:
linear_velocity.y += y_velocity
# TODO This is poop too
if (
@ -445,8 +449,8 @@ func calculate_slope_rotation(_onfloor: bool) -> float:
# TODO could be expanded with a parameter about what got stomped
func stomp() -> void:
# print("stomping")
print(player_state_machine.state)
#print("stomping")
#print(player_state_machine.state)
scene_audio.play_parallel_sound(
"res://assets/sounds/FABRIC_Flap_03_mono.wav", -15, false, 1.5, 0.2
)

View File

@ -4385,7 +4385,7 @@ texture = SubResource( 62 )
offset = Vector2( 1, 0 )
hframes = 6
vframes = 6
frame = 6
frame = 9
__meta__ = {
"_editor_description_": "YXNlcHJpdGVfd2l6YXJkX2NvbmZpZwpwbGF5ZXJ8PUJsb2JieVNwcml0ZS9CbG9iYnltYXRpb25QbGF5ZXIKc291cmNlfD1yZXM6Ly9hc3NldHMvYmxvYmJ5L2Jsb2JieS1zcHJpdGVzaGVldHQuYXNlcHJpdGUKbGF5ZXJ8PUJsb2JieQpvcF9leHB8PUZhbHNlCm9fZm9sZGVyfD0Kb19uYW1lfD0Kb25seV92aXNpYmxlfD1GYWxzZQpvX2V4X3B8PQo="
}

View File

@ -69,7 +69,7 @@ priority = 1.0
position = Vector2( 0, -2.28618 )
shape = SubResource( 2 )
[node name="EnemySkin" type="Area2D" parent="." groups=["player"]]
[node name="EnemySkin" type="Area2D" parent="."]
process_priority = -1
collision_layer = 2
collision_mask = 127

View File

@ -20,9 +20,10 @@ func _physics_process(delta: float) -> void:
else:
velocity.x = PhysicsFunc.two_step_euler(velocity.x, acceleration * -sign(velocity.x),
mass, delta)
velocity.y = move_and_slide(velocity, FLOOR_NORMAL).y
if player_entered_stomp:
$Sprite.frame = 1
# TODO Detects player over gaps
func player_on_floor_direction() -> float:

View File

@ -1,40 +1,40 @@
[gd_scene load_steps=6 format=2]
[ext_resource path="res://assets/enemy/enemy.png" type="Texture" id=1]
[ext_resource path="res://assets/enemy/VacuumRobot.png" type="Texture" id=1]
[ext_resource path="res://src/Actors/Enemies/DartingEnemy.gd" type="Script" id=2]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 15, 9 )
extents = Vector2( 14, 7 )
[sub_resource type="RectangleShape2D" id=2]
extents = Vector2( 14, 1.5 )
[sub_resource type="RectangleShape2D" id=3]
extents = Vector2( 15.534, 9.5 )
extents = Vector2( 15, 6.5 )
[node name="DartingEnemy" type="KinematicBody2D" groups=["harmful"]]
[node name="Vacuum" type="KinematicBody2D" groups=["harmful"]]
collision_layer = 2
collision_mask = 9
script = ExtResource( 2 )
[node name="enemy" type="Sprite" parent="."]
scale = Vector2( 0.286789, 0.276348 )
[node name="Sprite" type="Sprite" parent="."]
position = Vector2( 0, -3 )
texture = ExtResource( 1 )
hframes = 2
[node name="VisibilityEnabler2D" type="VisibilityEnabler2D" parent="."]
position = Vector2( 1362.81, -0.138177 )
scale = Vector2( 15.4865, 1.28502 )
position = Vector2( 1362.81, 3.85601 )
scale = Vector2( 15.4865, 0.885601 )
rect = Rect2( -89, -10, 2, 20 )
process_parent = true
physics_process_parent = true
[node name="EnemyBody" type="CollisionShape2D" parent="."]
position = Vector2( -4.76837e-07, 4 )
position = Vector2( -4.76837e-07, 6 )
shape = SubResource( 1 )
[node name="StompDetector" type="Area2D" parent="." groups=["weakpoint"]]
modulate = Color( 0, 0.0392157, 1, 1 )
position = Vector2( 0, -6.44095 )
collision_layer = 2
input_pickable = false
@ -43,7 +43,6 @@ position = Vector2( 0, -3.55905 )
shape = SubResource( 2 )
[node name="LedgeDetectorRays" type="Node2D" parent="."]
visible = false
position = Vector2( -14, 12 )
[node name="RayCast2D" type="RayCast2D" parent="LedgeDetectorRays"]
@ -66,7 +65,7 @@ collision_layer = 2
collision_mask = 127
[node name="CollisionPolygon2D" type="CollisionShape2D" parent="EnemySkin"]
position = Vector2( 0, 2.5 )
position = Vector2( 0, 5.5 )
shape = SubResource( 3 )
[connection signal="body_entered" from="StompDetector" to="." method="_on_StompDetector_body_entered"]

View File

@ -1,25 +1,27 @@
extends Actor
class_name Enemy
export(bool) var killable := true
var player_entered_stomp = false
func _on_StompDetector_body_entered(body: Node) -> void:
if !body.is_in_group("player"):
return
player_entered_stomp = true
var incoming_vel_vector: Vector2 = body.velocity.normalized()
print(rad2deg(abs(incoming_vel_vector.angle_to(Vector2.DOWN.rotated(rotation)))))
if abs(incoming_vel_vector.angle_to(Vector2.DOWN.rotated(rotation))) > deg2rad(95):
if abs(incoming_vel_vector.angle_to(Vector2.DOWN.rotated(rotation))) > deg2rad(95) \
&& !player_entered_stomp:
print("too shallow entry")
body.die()
player_entered_stomp = false
return
signal_manager.emit_signal("got_stomped")
remove_from_group("harmful")
$StompDetector.remove_from_group("weakpoint")
get_node("EnemyBody").disabled = true
die()
player_entered_stomp = true
#get_node("EnemyBody").disabled = true
if(killable):
remove_from_group("harmful")
die()
func die() -> void:
@ -28,7 +30,7 @@ func die() -> void:
func _on_EnemySkin_area_entered(area: Area2D) -> void:
if area.is_in_group("harmful"):
get_node("EnemyBody").disabled = true
#get_node("EnemyBody").disabled = true
die()

View File

@ -38,7 +38,6 @@ tracks/0/keys = {
extents = Vector2( 20, 20 )
[node name="ElevatorButton" type="Node2D"]
scale = Vector2( 2, 2 )
z_index = -1
script = ExtResource( 1 )
elevator_time = 3

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=86 format=2]
[gd_scene load_steps=87 format=2]
[ext_resource path="res://src/Levels/Templates/LevelTemplate.gd" type="Script" id=1]
[ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=2]
@ -57,6 +57,7 @@
[ext_resource path="res://assets/environment/decor/longductor/Longductor9.png" type="Texture" id=55]
[ext_resource path="res://assets/environment/decor/screen/Screen1.png" type="Texture" id=56]
[ext_resource path="res://assets/environment/decor/Ceiling-Struct.png" type="Texture" id=57]
[ext_resource path="res://addons/ACVoicebox/ACVoicebox.tscn" type="PackedScene" id=58]
[sub_resource type="Shader" id=15]
code = "shader_type canvas_item;
@ -1023,26 +1024,26 @@ tracks/2/keys = {
"values": [ 128 ]
}
[sub_resource type="Gradient" id=20]
[sub_resource type="Gradient" id=35]
interpolation_mode = 2
offsets = PoolRealArray( 0, 0.797721 )
colors = PoolColorArray( 0, 0, 0, 0, 0, 0, 0, 0.4 )
[sub_resource type="GradientTexture2D" id=19]
gradient = SubResource( 20 )
gradient = SubResource( 35 )
width = 640
height = 360
fill = 1
fill_from = Vector2( 0.51066, 0.231548 )
fill_to = Vector2( 1, 1 )
[sub_resource type="Gradient" id=21]
[sub_resource type="Gradient" id=36]
interpolation_mode = 2
offsets = PoolRealArray( 0, 0.797721 )
colors = PoolColorArray( 0, 0, 0, 0, 0, 0, 0, 0.4 )
[sub_resource type="GradientTexture2D" id=22]
gradient = SubResource( 21 )
gradient = SubResource( 36 )
width = 1280
height = 360
fill = 1
@ -1077,6 +1078,10 @@ __meta__ = {
"_edit_vertical_guides_": [ 2880.0 ]
}
[node name="ACVoicebox" parent="." instance=ExtResource( 58 )]
volume_db = -23.016
base_pitch = 2.5
[node name="SceneAudio" parent="." instance=ExtResource( 14 )]
visible = false
@ -1322,10 +1327,9 @@ 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 = 7
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 33 )

View File

@ -1152,7 +1152,7 @@ death_sound_1 = null
death_sound_2 = null
[node name="BlobbySprite" parent="Blobby" index="5"]
frame = 8
frame = 5
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 6 )
@ -1186,7 +1186,6 @@ format = 1
[node name="ElevatorButton" parent="." instance=ExtResource( 11 )]
position = Vector2( 1440, -76 )
scale = Vector2( 1, 1 )
elevator_time = 5
[node name="Portal" parent="." instance=ExtResource( 7 )]

View File

@ -241,7 +241,7 @@ death_sound_1 = null
death_sound_2 = null
[node name="BlobbySprite" parent="Blobby" index="5"]
frame = 8
frame = 7
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 6 )
@ -281,7 +281,6 @@ format = 1
[node name="ElevatorButton" parent="." instance=ExtResource( 11 )]
position = Vector2( 369, -300 )
scale = Vector2( 1, 1 )
elevator_time = 10
[node name="Portal" parent="." instance=ExtResource( 9 )]

View File

@ -129,6 +129,9 @@ jump_buffer_filled = null
death_sound_1 = null
death_sound_2 = null
[node name="BlobbySprite" parent="Blobby" index="5"]
frame = 9
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 6 )
@ -156,7 +159,6 @@ format = 1
[node name="ElevatorButton" parent="." instance=ExtResource( 10 )]
position = Vector2( 832, 310 )
scale = Vector2( 1, 1 )
elevator_time = 5
[node name="Portal" parent="." instance=ExtResource( 11 )]
@ -225,6 +227,7 @@ speed = 16
[node name="DartingEnemy" parent="." instance=ExtResource( 6 )]
position = Vector2( 609, 67 )
killable = false
speed = 300
acceleration = 800

View File

@ -128,7 +128,7 @@ death_sound_1 = null
death_sound_2 = null
[node name="BlobbySprite" parent="Blobby" index="5"]
frame = 6
frame = 7
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 7 )
@ -160,7 +160,6 @@ format = 1
[node name="ElevatorButton" parent="." instance=ExtResource( 7 )]
position = Vector2( 464, -27 )
scale = Vector2( 1, 1 )
elevator_time = 10
[node name="Portal" parent="." instance=ExtResource( 4 )]

View File

@ -165,7 +165,6 @@ format = 1
[node name="ElevatorButton" parent="." instance=ExtResource( 13 )]
position = Vector2( -96, 6 )
scale = Vector2( 1, 1 )
elevator_time = 10
[node name="Portal" parent="." instance=ExtResource( 10 )]

View File

@ -134,6 +134,9 @@ jump_buffer_filled = null
death_sound_1 = null
death_sound_2 = null
[node name="BlobbySprite" parent="Blobby" index="5"]
frame = 10
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 6 )
@ -221,7 +224,6 @@ format = 1
[node name="ElevatorButton" parent="." instance=ExtResource( 9 )]
position = Vector2( 112, 112 )
scale = Vector2( 1, 1 )
elevator_time = 16
[node name="Portal" parent="." instance=ExtResource( 7 )]

View File

@ -185,7 +185,6 @@ format = 1
[node name="ElevatorButton" parent="." instance=ExtResource( 6 )]
position = Vector2( -112, -10 )
scale = Vector2( 1, 1 )
elevator_time = 30
[node name="Portal" parent="." instance=ExtResource( 7 )]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

400
src/Levels/Level 5.tscn Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,212 +0,0 @@
[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="BlobbySprite" parent="Blobby" index="5"]
frame = 10
[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( 413, -240 )
avoid_crushing = true
[node name="FlyingLaserCutter3" parent="." instance=ExtResource( 13 )]
position = Vector2( 339, -256 )
rotation = 3.14159
avoid_crushing = true
[node name="FlyingLaserCutter" parent="." instance=ExtResource( 13 )]
position = Vector2( 0, -3 )
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

@ -25,6 +25,5 @@ func _ready() -> void:
$SceneAudio.play_parallel_sound(level_music, level_music_attenuation, false, 1.0, 0, "Music")
$SceneAudio.play_parallel_sound(level_ambiance, level_ambiance_attenuation)
func stop_level_music(_unused: float) -> void:
$SceneAudio.stop_parallel_sound(level_music)

View File

@ -117,7 +117,7 @@ position = Vector2( -1, 112 )
scale = Vector2( 0.878906, 0.936025 )
[node name="BlobbySprite" parent="Blobby" index="5"]
frame = 5
frame = 7
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 6 )
@ -148,7 +148,6 @@ format = 1
[node name="ElevatorButton" parent="." instance=ExtResource( 11 )]
position = Vector2( 208, 102 )
scale = Vector2( 1, 1 )
elevator_time = 10
[node name="Portal" parent="." instance=ExtResource( 5 )]

View File

@ -15,9 +15,9 @@ func _ready() -> void:
$Area2D.add_to_group("harmful")
$Sprite/AnimationPlayer.play("armed")
func _on_Area2D_area_exited(_area: Area2D) -> void:
$Timer.start()
func _on_Area2D_area_exited(area: Area2D) -> void:
if(area.is_in_group("player")):
$Timer.start()
func _on_Timer_timeout() -> void:
is_armed = true

View File

@ -41,7 +41,7 @@ resource_name = "LowPassFilter"
cutoff_hz = 3000.0
[resource]
bus/0/volume_db = -12.0412
bus/0/volume_db = inf_neg
bus/1/name = "Music"
bus/1/solo = false
bus/1/mute = false