14 Commits
Author SHA1 Message Date
Jonas Braus 6ef02c5628 Update project.godot 2024-08-04 21:23:05 +02:00
Jonas Braus 3f4a905999 minor stuff 2024-08-04 20:42:14 +02:00
Jonas Braus ba42f2b7ad camera improve 2024-08-04 20:20:45 +02:00
Jonas Braus efd553e8b0 Merge branch 'main' of https://git.sechat.de/jonas/retromariogodot 2024-08-04 20:13:30 +02:00
Jonas Braus 2ea5608b12 better cam 2024-08-04 20:13:26 +02:00
Jonas Braus ae085feeab Update README.md 2024-08-04 22:31:26 +05:30
Jonas Braus 7946fd789c minor improvement 2024-08-04 17:37:51 +02:00
Jonas Braus 08f75b79d8 level 5 2024-08-04 17:23:08 +02:00
Jonas Braus 2e845bf217 minor stuff 2024-08-04 15:48:20 +02:00
Jonas Braus e7e72f6109 Update project.godot 2024-08-03 22:54:08 +02:00
Jonas Braus a9c2f587da level 4 a bowser 2024-08-03 22:13:40 +02:00
Jonas Braus 30b0a527b4 Update coopa.gd 2024-08-03 17:35:08 +02:00
Jonas Braus 3d318a5c07 fixed grow bug 2024-08-03 17:28:37 +02:00
Jonas Braus 6860fda89c level 3 2024-08-03 16:21:26 +02:00
48 changed files with 46255 additions and 134 deletions
+2 -1
View File
@@ -1 +1,2 @@
see [Releases](https://git.sechat.de/jonas/retromariogodot/-/releases) see [Releases](https://git.sechat.de/jonas/retromariogodot/-/releases)<br/>
https://mariomaker32.itch.io/mario-bros-retro - pwd: 1234
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bivvbepth8ko2"
path="res://.godot/imported/bg-1-3.png-149608b6f5f53810a256bf60fdfa8120.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/bg-1-3.png"
dest_files=["res://.godot/imported/bg-1-3.png-149608b6f5f53810a256bf60fdfa8120.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cbcqfbbrmin4n"
path="res://.godot/imported/bg-1-4.png-b634dd427392b4b4f79ec130b6e42b89.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/bg-1-4.png"
dest_files=["res://.godot/imported/bg-1-4.png-b634dd427392b4b4f79ec130b6e42b89.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dpsuhnumiv82j"
path="res://.godot/imported/bg-2-1.png-5097df23ce250700d0d91ce99bc5a171.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/bg-2-1.png"
dest_files=["res://.godot/imported/bg-2-1.png-5097df23ce250700d0d91ce99bc5a171.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.
+19
View File
@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://dpcasau50jn28"
path="res://.godot/imported/04. Castle Theme.mp3-7bb3145a500b4414d1e91508ab6bd85a.mp3str"
[deps]
source_file="res://assets/sounds/04. Castle Theme.mp3"
dest_files=["res://.godot/imported/04. Castle Theme.mp3-7bb3145a500b4414d1e91508ab6bd85a.mp3str"]
[params]
loop=true
loop_offset=0.0
bpm=0.0
beat_count=0
bar_beats=4
Binary file not shown.
@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://d33nllvmlw3oh"
path="res://.godot/imported/07. Castle Complete.mp3-d4fc76ed9c48e387466ba00be9c041a9.mp3str"
[deps]
source_file="res://assets/sounds/07. Castle Complete.mp3"
dest_files=["res://.godot/imported/07. Castle Complete.mp3-d4fc76ed9c48e387466ba00be9c041a9.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4
+6 -6
View File
@@ -8,7 +8,7 @@ custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter=""
exclude_filter="" exclude_filter=""
export_path="../../../../../home/jonas/Schreibtisch/Export_Mario_Linux/retromario.x86_64" export_path="../../../../../home/jonas/Schreibtisch/Export_Linux/retromario.x86_64"
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""
encrypt_pck=false encrypt_pck=false
@@ -48,7 +48,7 @@ custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter=""
exclude_filter="" exclude_filter=""
export_path="../../../../../home/jonas/Schreibtisch/Export_Mario_Windows/retromario.exe" export_path="../../../../../home/jonas/Schreibtisch/Export_Windows/retromario.exe"
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""
encrypt_pck=false encrypt_pck=false
@@ -314,7 +314,7 @@ custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter=""
exclude_filter="" exclude_filter=""
export_path="../../../../../home/jonas/Schreibtisch/Export_Mario_Mac/retromario.zip" export_path="../../../../../home/jonas/Schreibtisch/Export_Mac/retromario.zip"
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""
encrypt_pck=false encrypt_pck=false
@@ -419,7 +419,7 @@ custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter=""
exclude_filter="" exclude_filter=""
export_path="../../../../../home/jonas/Schreibtisch/Export_Mario_Web/retromario.html" export_path="../../../../../home/jonas/Schreibtisch/Export_Web/index.html"
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""
encrypt_pck=false encrypt_pck=false
@@ -438,10 +438,10 @@ html/head_include=""
html/canvas_resize_policy=2 html/canvas_resize_policy=2
html/focus_canvas_on_start=true html/focus_canvas_on_start=true
html/experimental_virtual_keyboard=false html/experimental_virtual_keyboard=false
progressive_web_app/enabled=false progressive_web_app/enabled=true
progressive_web_app/offline_page="" progressive_web_app/offline_page=""
progressive_web_app/display=1 progressive_web_app/display=1
progressive_web_app/orientation=0 progressive_web_app/orientation=1
progressive_web_app/icon_144x144="" progressive_web_app/icon_144x144=""
progressive_web_app/icon_180x180="" progressive_web_app/icon_180x180=""
progressive_web_app/icon_512x512="" progressive_web_app/icon_512x512=""
+7 -7
View File
@@ -20,7 +20,7 @@ config/icon="res://assets/icon.png"
[display] [display]
window/stretch/mode="viewport" window/stretch/mode="viewport"
window/stretch/aspect="keep_height" window/vsync/vsync_mode=0
[global] [global]
@@ -41,37 +41,38 @@ move_left={
"deadzone": 0.5, "deadzone": 0.5,
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null) "events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"echo":false,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":13,"pressure":0.0,"pressed":true,"script":null)
] ]
} }
move_right={ move_right={
"deadzone": 0.5, "deadzone": 0.5,
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null) "events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"echo":false,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":14,"pressure":0.0,"pressed":true,"script":null)
] ]
} }
jump={ jump={
"deadzone": 0.5, "deadzone": 0.5,
"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null) "events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"echo":false,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":1,"pressure":0.0,"pressed":true,"script":null)
] ]
} }
crawl={ crawl={
"deadzone": 0.5, "deadzone": 0.5,
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null) "events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"echo":false,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":12,"pressure":0.0,"pressed":true,"script":null)
] ]
} }
flower={ flower={
"deadzone": 0.5, "deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"echo":false,"script":null) "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":2,"pressure":0.0,"pressed":true,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":3,"pressure":0.0,"pressed":true,"script":null)
] ]
} }
[input_devices]
pointing/emulate_touch_from_mouse=true
pointing/emulate_mouse_from_touch=false
[physics] [physics]
2d/physics_engine="GodotPhysics2D" 2d/physics_engine="GodotPhysics2D"
@@ -81,4 +82,3 @@ pointing/emulate_mouse_from_touch=false
textures/canvas_textures/default_texture_filter=0 textures/canvas_textures/default_texture_filter=0
textures/vram_compression/import_etc2_astc=true textures/vram_compression/import_etc2_astc=true
environment/defaults/default_clear_color=Color(1, 1, 1, 1)
+26
View File
@@ -0,0 +1,26 @@
[gd_scene load_steps=4 format=3 uid="uid://badk308gvg1my"]
[ext_resource type="Script" path="res://scripts/blocks/itemblock_invisible.gd" id="1_ap62p"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_4kmo0"]
size = Vector2(16, 16)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_enc16"]
size = Vector2(10, 1)
[node name="itemblock_invisible" type="RigidBody2D"]
gravity_scale = 0.0
script = ExtResource("1_ap62p")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(8, -8)
shape = SubResource("RectangleShape2D_4kmo0")
[node name="activate" type="Area2D" parent="."]
collision_mask = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="activate"]
position = Vector2(8, 0.5)
shape = SubResource("RectangleShape2D_enc16")
[connection signal="body_entered" from="activate" to="." method="_on_activate_body_entered"]
+2 -2
View File
@@ -18,7 +18,7 @@ animations = [{
"speed": 5.0 "speed": 5.0
}] }]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_w18em"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_aoc4r"]
size = Vector2(48, 8) size = Vector2(48, 8)
[node name="MovePlatform" type="RigidBody2D"] [node name="MovePlatform" type="RigidBody2D"]
@@ -33,5 +33,5 @@ veloc = Vector2(0, 50)
sprite_frames = SubResource("SpriteFrames_hdxpr") sprite_frames = SubResource("SpriteFrames_hdxpr")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_w18em") shape = SubResource("RectangleShape2D_aoc4r")
one_way_collision = true one_way_collision = true
+18
View File
@@ -0,0 +1,18 @@
[gd_scene load_steps=3 format=3 uid="uid://btwegds3up8cn"]
[ext_resource type="Texture2D" uid="uid://dth47lmb44qk8" path="res://assets/items.png" id="1_pvodq"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_c4pt3"]
size = Vector2(48, 8)
[node name="Platform" type="AnimatableBody2D"]
[node name="Sprite2D" type="Sprite2D" parent="."]
z_index = 20
texture = ExtResource("1_pvodq")
region_enabled = true
region_rect = Rect2(63, 38, 48, 8)
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_c4pt3")
one_way_collision = true
+18
View File
@@ -0,0 +1,18 @@
[gd_scene load_steps=3 format=3 uid="uid://bobox153pirkx"]
[ext_resource type="Texture2D" uid="uid://dth47lmb44qk8" path="res://assets/items.png" id="1_7tugu"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_c4pt3"]
size = Vector2(32, 8)
[node name="Platform" type="AnimatableBody2D"]
[node name="Sprite2D" type="Sprite2D" parent="."]
z_index = 20
texture = ExtResource("1_7tugu")
region_enabled = true
region_rect = Rect2(26, 38, 32, 8)
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_c4pt3")
one_way_collision = true
+62
View File
@@ -0,0 +1,62 @@
[gd_scene load_steps=9 format=3 uid="uid://43ujxqfabnuq"]
[ext_resource type="Texture2D" uid="uid://ddl5f3lldrp2n" path="res://assets/enemies.png" id="1_7p65b"]
[ext_resource type="Script" path="res://scripts/enemies/bowser_jr_fire.gd" id="1_tnrjq"]
[ext_resource type="AudioStream" uid="uid://csx5laixrg5dh" path="res://assets/sounds/NES - Super Mario Bros - Sound Effects/Super Mario Bros 1 and 2(JP)/Enemy Fire.wav" id="3_i70fm"]
[sub_resource type="AtlasTexture" id="AtlasTexture_4dnoh"]
atlas = ExtResource("1_7p65b")
region = Rect2(101, 253, 24, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_7tb0p"]
atlas = ExtResource("1_7p65b")
region = Rect2(131, 253, 24, 8)
[sub_resource type="SpriteFrames" id="SpriteFrames_kv1f5"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_4dnoh")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7tb0p")
}],
"loop": true,
"name": &"default",
"speed": 10.0
}]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_axybf"]
size = Vector2(24, 8)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_mxod3"]
size = Vector2(24, 8)
[node name="BowserJRFire" type="Area2D"]
collision_layer = 128
collision_mask = 2
script = ExtResource("1_tnrjq")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
position = Vector2(-12, 0)
sprite_frames = SubResource("SpriteFrames_kv1f5")
autoplay = "default"
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(-12, 0)
shape = SubResource("RectangleShape2D_axybf")
[node name="die" type="Area2D" parent="."]
collision_layer = 2147483648
[node name="CollisionShape2D" type="CollisionShape2D" parent="die"]
position = Vector2(-12, 0)
shape = SubResource("RectangleShape2D_mxod3")
[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource("3_i70fm")
autoplay = true
[connection signal="body_entered" from="." to="." method="_on_body_entered_player"]
[connection signal="body_entered" from="die" to="." method="_on_die_body_entered"]
[connection signal="finished" from="AudioStreamPlayer2D" to="." method="_on_audio_stream_player_2d_finished"]
+119
View File
@@ -0,0 +1,119 @@
[gd_scene load_steps=11 format=3 uid="uid://byk5q0ddm54hi"]
[ext_resource type="Script" path="res://scripts/enemies/bowserjr.gd" id="1_0ucqp"]
[ext_resource type="Texture2D" uid="uid://ddl5f3lldrp2n" path="res://assets/enemies.png" id="1_q71vc"]
[sub_resource type="AtlasTexture" id="AtlasTexture_jv53y"]
atlas = ExtResource("1_q71vc")
region = Rect2(122, 211, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_1tyng"]
atlas = ExtResource("1_q71vc")
region = Rect2(82, 211, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_q2270"]
atlas = ExtResource("1_q71vc")
region = Rect2(2, 211, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_3jf1h"]
atlas = ExtResource("1_q71vc")
region = Rect2(42, 211, 32, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_xw3te"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_jv53y")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1tyng")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_q2270")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_3jf1h")
}],
"loop": true,
"name": &"open_mouth",
"speed": 5.0
}]
[sub_resource type="CircleShape2D" id="CircleShape2D_tvg0d"]
radius = 16.0
[sub_resource type="Animation" id="Animation_pjtcx"]
resource_name = "default"
length = 6.0
loop_mode = 1
tracks/0/type = "method"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(3, 5.9),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"shoot"
}, {
"args": [],
"method": &"jump"
}]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(6),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"shoot"
}]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_y7g55"]
_data = {
"default": SubResource("Animation_pjtcx")
}
[node name="bowserjr" type="RigidBody2D"]
collision_layer = 128
gravity_scale = 0.6
script = ExtResource("1_0ucqp")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
position = Vector2(16, -16)
sprite_frames = SubResource("SpriteFrames_xw3te")
animation = &"open_mouth"
autoplay = "default"
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(16, -16)
shape = SubResource("CircleShape2D_tvg0d")
[node name="ShootSpawner" type="Node2D" parent="."]
position = Vector2(0, -22)
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_y7g55")
}
autoplay = "default"
[node name="Timer" type="Timer" parent="."]
wait_time = 0.5
one_shot = true
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]
+238
View File
@@ -0,0 +1,238 @@
[gd_scene load_steps=6 format=3 uid="uid://d0npbb0w73ajk"]
[ext_resource type="Texture2D" uid="uid://cbcqfbbrmin4n" path="res://assets/bg-1-4.png" id="1_gsxjq"]
[ext_resource type="Script" path="res://scripts/enemies/bridge.gd" id="1_itywv"]
[ext_resource type="AudioStream" uid="uid://d33nllvmlw3oh" path="res://assets/sounds/07. Castle Complete.mp3" id="3_aqpeh"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_7th4j"]
size = Vector2(16, 16)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_6td4j"]
size = Vector2(16, 16)
[node name="bridge" type="Node2D"]
script = ExtResource("1_itywv")
[node name="RigidBody2D" type="RigidBody2D" parent="."]
gravity_scale = 0.0
lock_rotation = true
[node name="Sprite2D" type="Sprite2D" parent="RigidBody2D"]
position = Vector2(8, -8)
texture = ExtResource("1_gsxjq")
region_enabled = true
region_rect = Rect2(2048, 160, 16, 16)
[node name="CollisionShape2D" type="CollisionShape2D" parent="RigidBody2D"]
position = Vector2(8, -8)
shape = SubResource("RectangleShape2D_7th4j")
[node name="RigidBody2D2" type="RigidBody2D" parent="."]
position = Vector2(16, 0)
gravity_scale = 0.0
lock_rotation = true
[node name="Sprite2D" type="Sprite2D" parent="RigidBody2D2"]
position = Vector2(8, -8)
texture = ExtResource("1_gsxjq")
region_enabled = true
region_rect = Rect2(2048, 160, 16, 16)
[node name="CollisionShape2D" type="CollisionShape2D" parent="RigidBody2D2"]
position = Vector2(8, -8)
shape = SubResource("RectangleShape2D_7th4j")
[node name="RigidBody2D3" type="RigidBody2D" parent="."]
position = Vector2(32, 0)
gravity_scale = 0.0
lock_rotation = true
[node name="Sprite2D" type="Sprite2D" parent="RigidBody2D3"]
position = Vector2(8, -8)
texture = ExtResource("1_gsxjq")
region_enabled = true
region_rect = Rect2(2048, 160, 16, 16)
[node name="CollisionShape2D" type="CollisionShape2D" parent="RigidBody2D3"]
position = Vector2(8, -8)
shape = SubResource("RectangleShape2D_7th4j")
[node name="RigidBody2D4" type="RigidBody2D" parent="."]
position = Vector2(48, 0)
gravity_scale = 0.0
lock_rotation = true
[node name="Sprite2D" type="Sprite2D" parent="RigidBody2D4"]
position = Vector2(8, -8)
texture = ExtResource("1_gsxjq")
region_enabled = true
region_rect = Rect2(2048, 160, 16, 16)
[node name="CollisionShape2D" type="CollisionShape2D" parent="RigidBody2D4"]
position = Vector2(8, -8)
shape = SubResource("RectangleShape2D_7th4j")
[node name="RigidBody2D5" type="RigidBody2D" parent="."]
position = Vector2(64, 0)
gravity_scale = 0.0
lock_rotation = true
[node name="Sprite2D" type="Sprite2D" parent="RigidBody2D5"]
position = Vector2(8, -8)
texture = ExtResource("1_gsxjq")
region_enabled = true
region_rect = Rect2(2048, 160, 16, 16)
[node name="CollisionShape2D" type="CollisionShape2D" parent="RigidBody2D5"]
position = Vector2(8, -8)
shape = SubResource("RectangleShape2D_7th4j")
[node name="RigidBody2D6" type="RigidBody2D" parent="."]
position = Vector2(80, 0)
gravity_scale = 0.0
lock_rotation = true
[node name="Sprite2D" type="Sprite2D" parent="RigidBody2D6"]
position = Vector2(8, -8)
texture = ExtResource("1_gsxjq")
region_enabled = true
region_rect = Rect2(2048, 160, 16, 16)
[node name="CollisionShape2D" type="CollisionShape2D" parent="RigidBody2D6"]
position = Vector2(8, -8)
shape = SubResource("RectangleShape2D_7th4j")
[node name="RigidBody2D7" type="RigidBody2D" parent="."]
position = Vector2(96, 0)
gravity_scale = 0.0
lock_rotation = true
[node name="Sprite2D" type="Sprite2D" parent="RigidBody2D7"]
position = Vector2(8, -8)
texture = ExtResource("1_gsxjq")
region_enabled = true
region_rect = Rect2(2048, 160, 16, 16)
[node name="CollisionShape2D" type="CollisionShape2D" parent="RigidBody2D7"]
position = Vector2(8, -8)
shape = SubResource("RectangleShape2D_7th4j")
[node name="RigidBody2D8" type="RigidBody2D" parent="."]
position = Vector2(112, 0)
gravity_scale = 0.0
lock_rotation = true
[node name="Sprite2D" type="Sprite2D" parent="RigidBody2D8"]
position = Vector2(8, -8)
texture = ExtResource("1_gsxjq")
region_enabled = true
region_rect = Rect2(2048, 160, 16, 16)
[node name="CollisionShape2D" type="CollisionShape2D" parent="RigidBody2D8"]
position = Vector2(8, -8)
shape = SubResource("RectangleShape2D_7th4j")
[node name="RigidBody2D9" type="RigidBody2D" parent="."]
position = Vector2(128, 0)
gravity_scale = 0.0
lock_rotation = true
[node name="Sprite2D" type="Sprite2D" parent="RigidBody2D9"]
position = Vector2(8, -8)
texture = ExtResource("1_gsxjq")
region_enabled = true
region_rect = Rect2(2048, 160, 16, 16)
[node name="CollisionShape2D" type="CollisionShape2D" parent="RigidBody2D9"]
position = Vector2(8, -8)
shape = SubResource("RectangleShape2D_7th4j")
[node name="RigidBody2D10" type="RigidBody2D" parent="."]
position = Vector2(144, 0)
gravity_scale = 0.0
lock_rotation = true
[node name="Sprite2D" type="Sprite2D" parent="RigidBody2D10"]
position = Vector2(8, -8)
texture = ExtResource("1_gsxjq")
region_enabled = true
region_rect = Rect2(2048, 160, 16, 16)
[node name="CollisionShape2D" type="CollisionShape2D" parent="RigidBody2D10"]
position = Vector2(8, -8)
shape = SubResource("RectangleShape2D_7th4j")
[node name="RigidBody2D11" type="RigidBody2D" parent="."]
position = Vector2(160, 0)
gravity_scale = 0.0
lock_rotation = true
[node name="Sprite2D" type="Sprite2D" parent="RigidBody2D11"]
position = Vector2(8, -8)
texture = ExtResource("1_gsxjq")
region_enabled = true
region_rect = Rect2(2048, 160, 16, 16)
[node name="CollisionShape2D" type="CollisionShape2D" parent="RigidBody2D11"]
position = Vector2(8, -8)
shape = SubResource("RectangleShape2D_7th4j")
[node name="RigidBody2D12" type="RigidBody2D" parent="."]
position = Vector2(176, 0)
gravity_scale = 0.0
lock_rotation = true
[node name="Sprite2D" type="Sprite2D" parent="RigidBody2D12"]
position = Vector2(8, -8)
texture = ExtResource("1_gsxjq")
region_enabled = true
region_rect = Rect2(2048, 160, 16, 16)
[node name="CollisionShape2D" type="CollisionShape2D" parent="RigidBody2D12"]
position = Vector2(8, -8)
shape = SubResource("RectangleShape2D_7th4j")
[node name="RigidBody2D13" type="RigidBody2D" parent="."]
position = Vector2(192, 0)
gravity_scale = 0.0
lock_rotation = true
[node name="Sprite2D" type="Sprite2D" parent="RigidBody2D13"]
position = Vector2(8, -8)
texture = ExtResource("1_gsxjq")
region_enabled = true
region_rect = Rect2(2048, 160, 16, 16)
[node name="CollisionShape2D" type="CollisionShape2D" parent="RigidBody2D13"]
position = Vector2(8, -8)
shape = SubResource("RectangleShape2D_7th4j")
[node name="chain" type="Sprite2D" parent="."]
position = Vector2(200, -24)
texture = ExtResource("1_gsxjq")
region_enabled = true
region_rect = Rect2(2240, 144, 16, 16)
[node name="Area2D" type="Area2D" parent="."]
collision_layer = 2
collision_mask = 2
[node name="Sprite2D15" type="Sprite2D" parent="Area2D"]
position = Vector2(216, -40)
texture = ExtResource("1_gsxjq")
region_enabled = true
region_rect = Rect2(2256, 128, 16, 16)
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
position = Vector2(216, -40)
shape = SubResource("RectangleShape2D_6td4j")
[node name="Timer" type="Timer" parent="."]
wait_time = 0.2
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("3_aqpeh")
[connection signal="body_entered" from="Area2D" to="." method="_on_area_2d_body_entered"]
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]
[connection signal="finished" from="AudioStreamPlayer" to="." method="_on_audio_stream_player_finished"]
+3 -2
View File
@@ -51,6 +51,7 @@ lock_rotation = true
script = ExtResource("1_iin32") script = ExtResource("1_iin32")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
z_index = 3
position = Vector2(8, -12) position = Vector2(8, -12)
sprite_frames = SubResource("SpriteFrames_g2x7m") sprite_frames = SubResource("SpriteFrames_g2x7m")
autoplay = "default" autoplay = "default"
@@ -62,7 +63,7 @@ shape = SubResource("CapsuleShape2D_8406q")
[node name="RayCastLeft" type="RayCast2D" parent="."] [node name="RayCastLeft" type="RayCast2D" parent="."]
position = Vector2(8, -8) position = Vector2(8, -8)
target_position = Vector2(-8, 0) target_position = Vector2(-8, 0)
collision_mask = 17 collision_mask = 145
[node name="RayCastLeft2" type="RayCast2D" parent="."] [node name="RayCastLeft2" type="RayCast2D" parent="."]
position = Vector2(8, -8) position = Vector2(8, -8)
@@ -77,7 +78,7 @@ collision_mask = 128
[node name="RayCastRight" type="RayCast2D" parent="."] [node name="RayCastRight" type="RayCast2D" parent="."]
position = Vector2(8, -8) position = Vector2(8, -8)
target_position = Vector2(8, 0) target_position = Vector2(8, 0)
collision_mask = 17 collision_mask = 145
[node name="RayCastRight2" type="RayCast2D" parent="."] [node name="RayCastRight2" type="RayCast2D" parent="."]
position = Vector2(8, -8) position = Vector2(8, -8)
+95
View File
@@ -0,0 +1,95 @@
[gd_scene load_steps=9 format=3 uid="uid://b4rid627344t4"]
[ext_resource type="Texture2D" uid="uid://ddl5f3lldrp2n" path="res://assets/enemies.png" id="1_gwkcq"]
[ext_resource type="Script" path="res://scripts/enemies/fire_wand.gd" id="1_lapua"]
[sub_resource type="AtlasTexture" id="AtlasTexture_yd1fw"]
atlas = ExtResource("1_gwkcq")
region = Rect2(26, 150, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_owi6g"]
atlas = ExtResource("1_gwkcq")
region = Rect2(41, 150, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_e5nv8"]
atlas = ExtResource("1_gwkcq")
region = Rect2(26, 165, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_5oy1g"]
atlas = ExtResource("1_gwkcq")
region = Rect2(41, 165, 8, 8)
[sub_resource type="SpriteFrames" id="SpriteFrames_6y4se"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_yd1fw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_owi6g")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_e5nv8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5oy1g")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_2qrrp"]
size = Vector2(58, 8)
[node name="fire_wand" type="Area2D"]
collision_mask = 2
script = ExtResource("1_lapua")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
sprite_frames = SubResource("SpriteFrames_6y4se")
autoplay = "default"
frame = 1
frame_progress = 0.284379
[node name="AnimatedSprite2D3" type="AnimatedSprite2D" parent="."]
position = Vector2(10, 0)
sprite_frames = SubResource("SpriteFrames_6y4se")
autoplay = "default"
frame_progress = 0.428306
[node name="AnimatedSprite2D2" type="AnimatedSprite2D" parent="."]
position = Vector2(20, 0)
sprite_frames = SubResource("SpriteFrames_6y4se")
autoplay = "default"
frame = 1
frame_progress = 0.284379
[node name="AnimatedSprite2D4" type="AnimatedSprite2D" parent="."]
position = Vector2(30, 0)
sprite_frames = SubResource("SpriteFrames_6y4se")
autoplay = "default"
frame_progress = 0.428306
[node name="AnimatedSprite2D5" type="AnimatedSprite2D" parent="."]
position = Vector2(40, 0)
sprite_frames = SubResource("SpriteFrames_6y4se")
autoplay = "default"
frame = 1
frame_progress = 0.284379
[node name="AnimatedSprite2D6" type="AnimatedSprite2D" parent="."]
position = Vector2(50, 0)
sprite_frames = SubResource("SpriteFrames_6y4se")
autoplay = "default"
frame_progress = 0.428306
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(25, 0)
shape = SubResource("RectangleShape2D_2qrrp")
[node name="Timer" type="Timer" parent="."]
one_shot = true
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]
+3 -2
View File
@@ -50,6 +50,7 @@ lock_rotation = true
script = ExtResource("1_o30u3") script = ExtResource("1_o30u3")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
z_index = 3
position = Vector2(8, -8) position = Vector2(8, -8)
sprite_frames = SubResource("SpriteFrames_xnecu") sprite_frames = SubResource("SpriteFrames_xnecu")
autoplay = "default" autoplay = "default"
@@ -61,7 +62,7 @@ shape = SubResource("CircleShape2D_l4q7u")
[node name="RayCastLeft" type="RayCast2D" parent="."] [node name="RayCastLeft" type="RayCast2D" parent="."]
position = Vector2(8, -8) position = Vector2(8, -8)
target_position = Vector2(-9, 0) target_position = Vector2(-9, 0)
collision_mask = 17 collision_mask = 145
[node name="RayCastLeft2" type="RayCast2D" parent="."] [node name="RayCastLeft2" type="RayCast2D" parent="."]
position = Vector2(8, -8) position = Vector2(8, -8)
@@ -71,7 +72,7 @@ collision_mask = 2
[node name="RayCastRight" type="RayCast2D" parent="."] [node name="RayCastRight" type="RayCast2D" parent="."]
position = Vector2(8, -8) position = Vector2(8, -8)
target_position = Vector2(9, 0) target_position = Vector2(9, 0)
collision_mask = 17 collision_mask = 145
[node name="RayCastRight2" type="RayCast2D" parent="."] [node name="RayCastRight2" type="RayCast2D" parent="."]
position = Vector2(8, -8) position = Vector2(8, -8)
+1
View File
@@ -39,6 +39,7 @@ can_sleep = false
script = ExtResource("1_c103u") script = ExtResource("1_c103u")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
z_index = 20
sprite_frames = SubResource("SpriteFrames_unbxs") sprite_frames = SubResource("SpriteFrames_unbxs")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+80
View File
@@ -0,0 +1,80 @@
[gd_scene load_steps=11 format=3 uid="uid://cwhx0kcemeyx"]
[ext_resource type="Script" path="res://scripts/blocks/itemblock.gd" id="1_rbj5t"]
[ext_resource type="PackedScene" uid="uid://bp71ntkh281k5" path="res://scenes/items/fire_flower.tscn" id="2_ov77e"]
[ext_resource type="Texture2D" uid="uid://dth47lmb44qk8" path="res://assets/items.png" id="3_v5sih"]
[sub_resource type="AtlasTexture" id="AtlasTexture_lo6hv"]
atlas = ExtResource("3_v5sih")
region = Rect2(4, 4, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_ghd0r"]
atlas = ExtResource("3_v5sih")
region = Rect2(34, 4, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_5py80"]
atlas = ExtResource("3_v5sih")
region = Rect2(64, 4, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_4m3oc"]
atlas = ExtResource("3_v5sih")
region = Rect2(4, 4, 16, 16)
[sub_resource type="SpriteFrames" id="SpriteFrames_r54gk"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_lo6hv")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ghd0r")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5py80")
}],
"loop": false,
"name": &"destroy",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_4m3oc")
}],
"loop": true,
"name": &"idle",
"speed": 5.0
}]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_4kmo0"]
size = Vector2(16, 16)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_enc16"]
size = Vector2(10, 1)
[node name="itemblock" type="RigidBody2D"]
gravity_scale = 0.0
script = ExtResource("1_rbj5t")
hit_object = ExtResource("2_ov77e")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
position = Vector2(8, -8)
sprite_frames = SubResource("SpriteFrames_r54gk")
animation = &"destroy"
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(8, -8)
shape = SubResource("RectangleShape2D_4kmo0")
[node name="activate" type="Area2D" parent="."]
collision_mask = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="activate"]
position = Vector2(8, 0.5)
shape = SubResource("RectangleShape2D_enc16")
[node name="Timer" type="Timer" parent="."]
wait_time = 0.3
one_shot = true
[connection signal="body_entered" from="activate" to="." method="_on_activate_body_entered"]
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]
+80
View File
@@ -0,0 +1,80 @@
[gd_scene load_steps=11 format=3 uid="uid://d032da33bfwtu"]
[ext_resource type="Script" path="res://scripts/blocks/itemblock.gd" id="1_3b5hu"]
[ext_resource type="Texture2D" uid="uid://dth47lmb44qk8" path="res://assets/items.png" id="2_iid7x"]
[ext_resource type="PackedScene" uid="uid://b4dp88urmm7g8" path="res://scenes/items/mushroom.tscn" id="2_np1mh"]
[sub_resource type="AtlasTexture" id="AtlasTexture_lo6hv"]
atlas = ExtResource("2_iid7x")
region = Rect2(4, 4, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_ghd0r"]
atlas = ExtResource("2_iid7x")
region = Rect2(34, 4, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_5py80"]
atlas = ExtResource("2_iid7x")
region = Rect2(64, 4, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_4m3oc"]
atlas = ExtResource("2_iid7x")
region = Rect2(4, 4, 16, 16)
[sub_resource type="SpriteFrames" id="SpriteFrames_r54gk"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_lo6hv")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ghd0r")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5py80")
}],
"loop": false,
"name": &"destroy",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_4m3oc")
}],
"loop": true,
"name": &"idle",
"speed": 5.0
}]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_4kmo0"]
size = Vector2(16, 16)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_enc16"]
size = Vector2(10, 1)
[node name="itemblock" type="RigidBody2D"]
gravity_scale = 0.0
script = ExtResource("1_3b5hu")
hit_object = ExtResource("2_np1mh")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
position = Vector2(8, -8)
sprite_frames = SubResource("SpriteFrames_r54gk")
animation = &"destroy"
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(8, -8)
shape = SubResource("RectangleShape2D_4kmo0")
[node name="activate" type="Area2D" parent="."]
collision_mask = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="activate"]
position = Vector2(8, 0.5)
shape = SubResource("RectangleShape2D_enc16")
[node name="Timer" type="Timer" parent="."]
wait_time = 0.3
one_shot = true
[connection signal="body_entered" from="activate" to="." method="_on_activate_body_entered"]
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]
+61
View File
@@ -0,0 +1,61 @@
[gd_scene load_steps=8 format=3 uid="uid://daaajdv7ve15a"]
[ext_resource type="Texture2D" uid="uid://dth47lmb44qk8" path="res://assets/items.png" id="1_cnc0s"]
[ext_resource type="Script" path="res://scripts/items/jump_thing.gd" id="1_nrv87"]
[sub_resource type="AtlasTexture" id="AtlasTexture_jjx8i"]
atlas = ExtResource("1_cnc0s")
region = Rect2(94, 0, 16, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_8phfu"]
atlas = ExtResource("1_cnc0s")
region = Rect2(154, 8, 16, 8)
[sub_resource type="SpriteFrames" id="SpriteFrames_1s1v4"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_jjx8i")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_8phfu")
}],
"loop": true,
"name": &"down",
"speed": 5.0
}]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_mnewg"]
size = Vector2(14, 47)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_luw3y"]
size = Vector2(16, 24)
[node name="jump_thing" type="Node2D"]
script = ExtResource("1_nrv87")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
position = Vector2(8, -12)
sprite_frames = SubResource("SpriteFrames_1s1v4")
autoplay = "default"
[node name="Area2D" type="Area2D" parent="."]
collision_mask = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
position = Vector2(8, -23.5)
shape = SubResource("RectangleShape2D_mnewg")
[node name="StaticBody2D" type="StaticBody2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"]
position = Vector2(8, -12)
shape = SubResource("RectangleShape2D_luw3y")
[connection signal="body_entered" from="Area2D" to="." method="_on_area_2d_body_entered"]
[connection signal="body_exited" from="Area2D" to="." method="_on_area_2d_body_exited"]
+1
View File
@@ -105,6 +105,7 @@ lock_rotation = true
script = ExtResource("1_qo5bm") script = ExtResource("1_qo5bm")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
z_index = 20
position = Vector2(8, -8) position = Vector2(8, -8)
sprite_frames = SubResource("SpriteFrames_s232e") sprite_frames = SubResource("SpriteFrames_s232e")
autoplay = "default" autoplay = "default"
+66 -7
View File
@@ -21,14 +21,15 @@ anchor_left = 0.5
anchor_top = 0.5 anchor_top = 0.5
anchor_right = 0.5 anchor_right = 0.5
anchor_bottom = 0.5 anchor_bottom = 0.5
offset_left = -288.0 offset_left = -240.0
offset_top = -36.0 offset_top = -148.0
offset_right = -80.0 offset_right = -32.0
offset_bottom = 28.0 offset_bottom = -84.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
theme_override_fonts/font = ExtResource("2_3ebbo") theme_override_fonts/font = ExtResource("2_3ebbo")
theme_override_font_sizes/font_size = 24 theme_override_font_sizes/font_size = 24
disabled = true
text = "Level 1" text = "Level 1"
[node name="Button_2" type="Button" parent="Control"] [node name="Button_2" type="Button" parent="Control"]
@@ -38,15 +39,73 @@ anchor_left = 0.5
anchor_top = 0.5 anchor_top = 0.5
anchor_right = 0.5 anchor_right = 0.5
anchor_bottom = 0.5 anchor_bottom = 0.5
offset_left = 80.0 offset_left = 32.0
offset_top = -148.0
offset_right = 240.0
offset_bottom = -84.0
grow_horizontal = 2
grow_vertical = 2
theme_override_fonts/font = ExtResource("2_3ebbo")
theme_override_font_sizes/font_size = 24
disabled = true
text = "Level 2"
[node name="Button_3" type="Button" parent="Control"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -240.0
offset_top = -36.0 offset_top = -36.0
offset_right = 288.0 offset_right = -32.0
offset_bottom = 28.0 offset_bottom = 28.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
theme_override_fonts/font = ExtResource("2_3ebbo") theme_override_fonts/font = ExtResource("2_3ebbo")
theme_override_font_sizes/font_size = 24 theme_override_font_sizes/font_size = 24
text = "Level 2" disabled = true
text = "Level 3"
[node name="Button_4" type="Button" parent="Control"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = 32.0
offset_top = -36.0
offset_right = 240.0
offset_bottom = 28.0
grow_horizontal = 2
grow_vertical = 2
theme_override_fonts/font = ExtResource("2_3ebbo")
theme_override_font_sizes/font_size = 24
disabled = true
text = "Level 4"
[node name="Button_5" type="Button" parent="Control"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -240.0
offset_top = 76.0
offset_right = -32.0
offset_bottom = 140.0
grow_horizontal = 2
grow_vertical = 2
theme_override_fonts/font = ExtResource("2_3ebbo")
theme_override_font_sizes/font_size = 24
disabled = true
text = "Level 5"
[connection signal="pressed" from="Control/Button_1" to="." method="_on_button_pressed" binds= ["1"]] [connection signal="pressed" from="Control/Button_1" to="." method="_on_button_pressed" binds= ["1"]]
[connection signal="pressed" from="Control/Button_2" to="." method="_on_button_pressed" binds= ["2"]] [connection signal="pressed" from="Control/Button_2" to="." method="_on_button_pressed" binds= ["2"]]
[connection signal="pressed" from="Control/Button_3" to="." method="_on_button_pressed" binds= ["3"]]
[connection signal="pressed" from="Control/Button_4" to="." method="_on_button_pressed" binds= ["4"]]
[connection signal="pressed" from="Control/Button_5" to="." method="_on_button_pressed" binds= ["5"]]
+61 -8
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=20 format=3 uid="uid://dv50be68omp73"] [gd_scene load_steps=21 format=3 uid="uid://dv50be68omp73"]
[ext_resource type="Texture2D" uid="uid://chrld8oybp4me" path="res://assets/bg-1-1.png" id="1_p04bh"] [ext_resource type="Texture2D" uid="uid://chrld8oybp4me" path="res://assets/bg-1-1.png" id="1_p04bh"]
[ext_resource type="PackedScene" uid="uid://dk1aby88pygtr" path="res://scenes/player.tscn" id="2_j2a2f"] [ext_resource type="PackedScene" uid="uid://dk1aby88pygtr" path="res://scenes/player.tscn" id="2_j2a2f"]
@@ -15,6 +15,7 @@
[ext_resource type="Script" path="res://scripts/WorldBoundDown.gd" id="13_je7o8"] [ext_resource type="Script" path="res://scripts/WorldBoundDown.gd" id="13_je7o8"]
[ext_resource type="PackedScene" uid="uid://bm04qp5vgbi10" path="res://scenes/flag.tscn" id="14_ry537"] [ext_resource type="PackedScene" uid="uid://bm04qp5vgbi10" path="res://scenes/flag.tscn" id="14_ry537"]
[ext_resource type="PackedScene" uid="uid://dflvi18e358ek" path="res://scenes/blocks/enimie_barrier.tscn" id="15_ac2kk"] [ext_resource type="PackedScene" uid="uid://dflvi18e358ek" path="res://scenes/blocks/enimie_barrier.tscn" id="15_ac2kk"]
[ext_resource type="PackedScene" uid="uid://bkpny146y0y0e" path="res://scenes/enemies/coopa.tscn" id="16_dfvj4"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_sdqov"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_sdqov"]
texture = ExtResource("1_p04bh") texture = ExtResource("1_p04bh")
@@ -19088,6 +19089,8 @@ auto_collect = true
[node name="destroyblock" parent="interactable_blocks" instance=ExtResource("5_k4kpc")] [node name="destroyblock" parent="interactable_blocks" instance=ExtResource("5_k4kpc")]
position = Vector2(160, -48) position = Vector2(160, -48)
hit_object = ExtResource("4_7ycg6")
auto_collect = true
[node name="itemblock2" parent="interactable_blocks" instance=ExtResource("3_4oas0")] [node name="itemblock2" parent="interactable_blocks" instance=ExtResource("3_4oas0")]
position = Vector2(176, -48) position = Vector2(176, -48)
@@ -19095,6 +19098,8 @@ hit_object = ExtResource("6_1e33i")
[node name="destroyblock2" parent="interactable_blocks" instance=ExtResource("5_k4kpc")] [node name="destroyblock2" parent="interactable_blocks" instance=ExtResource("5_k4kpc")]
position = Vector2(192, -48) position = Vector2(192, -48)
hit_object = ExtResource("4_7ycg6")
auto_collect = true
[node name="itemblock3" parent="interactable_blocks" instance=ExtResource("3_4oas0")] [node name="itemblock3" parent="interactable_blocks" instance=ExtResource("3_4oas0")]
position = Vector2(208, -48) position = Vector2(208, -48)
@@ -19159,6 +19164,8 @@ auto_collect = true
[node name="destroyblock17" parent="interactable_blocks" instance=ExtResource("5_k4kpc")] [node name="destroyblock17" parent="interactable_blocks" instance=ExtResource("5_k4kpc")]
position = Vector2(1424, -48) position = Vector2(1424, -48)
hit_object = ExtResource("4_7ycg6")
auto_collect = true
[node name="destroyblock18" parent="interactable_blocks" instance=ExtResource("5_k4kpc")] [node name="destroyblock18" parent="interactable_blocks" instance=ExtResource("5_k4kpc")]
position = Vector2(1520, -48) position = Vector2(1520, -48)
@@ -19315,28 +19322,52 @@ position = Vector2(736, 0)
position = Vector2(768, 0) position = Vector2(768, 0)
[node name="Gumba4" parent="Enemies" instance=ExtResource("8_6vd8t")] [node name="Gumba4" parent="Enemies" instance=ExtResource("8_6vd8t")]
position = Vector2(1120, 0) position = Vector2(1200, -128)
[node name="Gumba5" parent="Enemies" instance=ExtResource("8_6vd8t")] [node name="Gumba5" parent="Enemies" instance=ExtResource("8_6vd8t")]
position = Vector2(1152, 0) position = Vector2(1232, -128)
[node name="Gumba6" parent="Enemies" instance=ExtResource("8_6vd8t")] [node name="Gumba6" parent="Enemies" instance=ExtResource("8_6vd8t")]
position = Vector2(1472, 0) position = Vector2(1472, 0)
[node name="Gumba7" parent="Enemies" instance=ExtResource("8_6vd8t")] [node name="Gumba16" parent="Enemies" instance=ExtResource("8_6vd8t")]
position = Vector2(1648, 0) position = Vector2(1504, 0)
[node name="Gumba8" parent="Enemies" instance=ExtResource("8_6vd8t")] [node name="Gumba8" parent="Enemies" instance=ExtResource("8_6vd8t")]
position = Vector2(2672, 0) position = Vector2(2784, 0)
[node name="Gumba9" parent="Enemies" instance=ExtResource("8_6vd8t")] [node name="Gumba9" parent="Enemies" instance=ExtResource("8_6vd8t")]
position = Vector2(2752, 0) position = Vector2(2816, 0)
[node name="Gumba10" parent="Enemies" instance=ExtResource("8_6vd8t")]
position = Vector2(576, 0)
[node name="coopa" parent="Enemies" instance=ExtResource("16_dfvj4")]
position = Vector2(1632, 0)
[node name="Gumba7" parent="Enemies" instance=ExtResource("8_6vd8t")]
position = Vector2(1760, 0)
[node name="Gumba11" parent="Enemies" instance=ExtResource("8_6vd8t")]
position = Vector2(1792, 0)
[node name="Gumba12" parent="Enemies" instance=ExtResource("8_6vd8t")]
position = Vector2(1936, 0)
[node name="Gumba13" parent="Enemies" instance=ExtResource("8_6vd8t")]
position = Vector2(1968, 0)
[node name="Gumba14" parent="Enemies" instance=ExtResource("8_6vd8t")]
position = Vector2(2016, 0)
[node name="Gumba15" parent="Enemies" instance=ExtResource("8_6vd8t")]
position = Vector2(2048, 0)
[node name="Pipes" type="Node" parent="."] [node name="Pipes" type="Node" parent="."]
[node name="pipe" parent="Pipes" instance=ExtResource("9_sfjeq")] [node name="pipe" parent="Pipes" instance=ExtResource("9_sfjeq")]
position = Vector2(832, -64) position = Vector2(832, -64)
target = Vector2(800, 224) target = Vector2(640, 112)
[node name="pipe2" parent="Pipes" instance=ExtResource("9_sfjeq")] [node name="pipe2" parent="Pipes" instance=ExtResource("9_sfjeq")]
position = Vector2(816, 240) position = Vector2(816, 240)
@@ -19422,6 +19453,7 @@ text = "120"
[node name="Flag" parent="." instance=ExtResource("14_ry537")] [node name="Flag" parent="." instance=ExtResource("14_ry537")]
load_level = "level_0" load_level = "level_0"
level_score = 2
[node name="StaticBody2D" parent="." instance=ExtResource("15_ac2kk")] [node name="StaticBody2D" parent="." instance=ExtResource("15_ac2kk")]
position = Vector2(1040, 0) position = Vector2(1040, 0)
@@ -19432,5 +19464,26 @@ position = Vector2(1296, 0)
[node name="StaticBody2D3" parent="." instance=ExtResource("15_ac2kk")] [node name="StaticBody2D3" parent="." instance=ExtResource("15_ac2kk")]
position = Vector2(1328, 0) position = Vector2(1328, 0)
[node name="Camera2D" type="Camera2D" parent="."]
unique_name_in_owner = true
position = Vector2(35, 0)
zoom = Vector2(3, 3)
limit_left = -160
limit_top = -184
limit_bottom = 32
position_smoothing_enabled = true
position_smoothing_speed = 10.0
[node name="ColorRect" type="ColorRect" parent="Camera2D"]
unique_name_in_owner = true
visible = false
z_index = 50
offset_left = -3995.0
offset_top = -1678.0
offset_right = 3965.0
offset_bottom = 1594.0
mouse_filter = 1
color = Color(0, 0, 0, 1)
[connection signal="body_entered" from="WorldBoundDown" to="WorldBoundDown" method="_on_body_entered"] [connection signal="body_entered" from="WorldBoundDown" to="WorldBoundDown" method="_on_body_entered"]
[connection signal="timeout" from="WorldBoundDown/Timer" to="WorldBoundDown" method="_on_timer_timeout"] [connection signal="timeout" from="WorldBoundDown/Timer" to="WorldBoundDown" method="_on_timer_timeout"]
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+14 -49
View File
@@ -190,7 +190,7 @@ length = 0.001
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
tracks/0/path = NodePath("Camera2D/ColorRect:visible") tracks/0/path = NodePath("dieSound:playing")
tracks/0/interp = 1 tracks/0/interp = 1
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
@@ -199,18 +199,6 @@ tracks/0/keys = {
"update": 1, "update": 1,
"values": [false] "values": [false]
} }
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("dieSound:playing")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_jgvs8"] [sub_resource type="Animation" id="Animation_jgvs8"]
resource_name = "die" resource_name = "die"
@@ -218,34 +206,22 @@ length = 3.0
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
tracks/0/path = NodePath("Camera2D/ColorRect:visible") tracks/0/path = NodePath("dieSound:playing")
tracks/0/interp = 1 tracks/0/interp = 1
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("dieSound:playing")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.1), "times": PackedFloat32Array(0.1),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 1, "update": 1,
"values": [true] "values": [true]
} }
tracks/2/type = "method" tracks/1/type = "method"
tracks/2/imported = false tracks/1/imported = false
tracks/2/enabled = true tracks/1/enabled = true
tracks/2/path = NodePath(".") tracks/1/path = NodePath(".")
tracks/2/interp = 1 tracks/1/interp = 1
tracks/2/loop_wrap = true tracks/1/loop_wrap = true
tracks/2/keys = { tracks/1/keys = {
"times": PackedFloat32Array(3), "times": PackedFloat32Array(3),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"values": [{ "values": [{
@@ -266,23 +242,8 @@ collision_layer = 2
script = ExtResource("1_lm7ix") script = ExtResource("1_lm7ix")
fireball_prefab = ExtResource("2_owoxk") fireball_prefab = ExtResource("2_owoxk")
[node name="Camera2D" type="Camera2D" parent="."]
position = Vector2(35, 0)
zoom = Vector2(3, 3)
limit_left = -160
limit_bottom = 32
[node name="ColorRect" type="ColorRect" parent="Camera2D"]
visible = false
z_index = 10
offset_left = -3995.0
offset_top = -1678.0
offset_right = 3965.0
offset_bottom = 1594.0
mouse_filter = 1
color = Color(0, 0, 0, 1)
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
z_index = 25
position = Vector2(0, 2) position = Vector2(0, 2)
sprite_frames = SubResource("SpriteFrames_l5s58") sprite_frames = SubResource("SpriteFrames_l5s58")
animation = &"run_flower" animation = &"run_flower"
@@ -367,9 +328,13 @@ libraries = {
"": SubResource("AnimationLibrary_uuoiq") "": SubResource("AnimationLibrary_uuoiq")
} }
[node name="timer_fire" type="Timer" parent="."]
one_shot = true
[connection signal="area_entered" from="pipedetector_ground" to="." method="_on_pipedetector_area_entered"] [connection signal="area_entered" from="pipedetector_ground" to="." method="_on_pipedetector_area_entered"]
[connection signal="area_exited" from="pipedetector_ground" to="." method="_on_pipedetector_area_exited"] [connection signal="area_exited" from="pipedetector_ground" to="." method="_on_pipedetector_area_exited"]
[connection signal="area_entered" from="pipedetector_right" to="." method="_on_pipedetector_right_area_entered"] [connection signal="area_entered" from="pipedetector_right" to="." method="_on_pipedetector_right_area_entered"]
[connection signal="area_exited" from="pipedetector_right" to="." method="_on_pipedetector_right_area_exited"] [connection signal="area_exited" from="pipedetector_right" to="." method="_on_pipedetector_right_area_exited"]
[connection signal="timeout" from="pipe_timer" to="." method="_on_pipe_timer_timeout"] [connection signal="timeout" from="pipe_timer" to="." method="_on_pipe_timer_timeout"]
[connection signal="timeout" from="pipe_timer_half" to="." method="_on_pipe_timer_half_timeout"] [connection signal="timeout" from="pipe_timer_half" to="." method="_on_pipe_timer_half_timeout"]
[connection signal="timeout" from="timer_fire" to="." method="_on_timer_fire_timeout"]
+10 -1
View File
@@ -5,7 +5,7 @@ extends Area2D
@onready var player = %player @onready var player = %player
@onready var audio_stream_player = $AudioStreamPlayer @onready var audio_stream_player = $AudioStreamPlayer
@onready var music = %Music @onready var music = %Music
@export var level_score : int
func _on_body_entered(body): func _on_body_entered(body):
animation_player.play("change_scene") animation_player.play("change_scene")
@@ -13,5 +13,14 @@ func _on_body_entered(body):
music.stop() music.stop()
func load_new_scene(): func load_new_scene():
var config = ConfigFile.new()
var err = config.load("user://config.cfg")
if err == OK:
var available_level = config.get_value("level", "available_level", 0)
level_score = level_score if level_score > available_level else available_level
config.set_value("level", "available_level", level_score)
config.save("user://config.cfg")
get_tree().change_scene_to_file("res://scenes/levels/" + load_level + ".tscn") get_tree().change_scene_to_file("res://scenes/levels/" + load_level + ".tscn")
+5 -1
View File
@@ -8,9 +8,13 @@ func _ready():
var platform = "" var platform = ""
match OS.get_name(): match OS.get_name():
"Windows", "macOS", "Linux", "FreeBSD", "NetBSD", "OpenBSD", "BSD", "Web": "Windows", "macOS", "Linux", "FreeBSD", "NetBSD", "OpenBSD", "BSD":
label.text = "A, S, D To Move" label.text = "A, S, D To Move"
label_2.text = "Space To Jump" label_2.text = "Space To Jump"
label_3.text = "E To Fire" label_3.text = "E To Fire"
"Web":
label.text = "Swipe Left/W, S, A, D"
label_2.text = "Right Down Tap/Space"
label_3.text = "Right Up Tap/E"
"Android", "iOS": "Android", "iOS":
pass pass
+13 -6
View File
@@ -1,15 +1,22 @@
extends CanvasLayer extends CanvasLayer
@onready var buttons = [$Control/Button_1, $Control/Button_2, $Control/Button_3,
$Control/Button_4, $Control/Button_5
]
var available_level = 0
# Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
pass # Replace with function body. var config = ConfigFile.new()
var err = config.load("user://config.cfg")
if err == OK:
available_level = config.get_value("level", "available_level", 1)
else:
available_level = 1
# Called every frame. 'delta' is the elapsed time since the previous frame. for i in range(0, available_level):
func _process(delta): if i < len(buttons):
pass buttons[i].disabled = false
func _on_button_pressed(extra_arg_0): func _on_button_pressed(extra_arg_0):
get_tree().change_scene_to_file("res://scenes/levels/level_"+ extra_arg_0 +".tscn") get_tree().change_scene_to_file("res://scenes/levels/level_"+ extra_arg_0 +".tscn")
+14 -2
View File
@@ -2,10 +2,22 @@ extends RigidBody2D
@onready var animated_sprite_2d = $AnimatedSprite2D @onready var animated_sprite_2d = $AnimatedSprite2D
@onready var animation_player = $AnimationPlayer @onready var animation_player = $AnimationPlayer
@export var hit_object : PackedScene
@export var auto_collect : bool
const ITEMBLOCK = preload("res://scenes/blocks/itemblock.tscn")
func _ready(): func _ready():
animated_sprite_2d.play("default") animated_sprite_2d.play("default")
func _on_activate_body_entered(body): func _on_activate_body_entered(body):
if body.is_big: if hit_object == null:
animation_player.play("destroy") if body.is_big:
animation_player.play("destroy")
else:
var inst2 = ITEMBLOCK.instantiate()
get_parent().add_child(inst2)
inst2.position.x = position.x
inst2.position.y = position.y
inst2.hit_object = hit_object
inst2.auto_collect = auto_collect
queue_free()
+19
View File
@@ -0,0 +1,19 @@
extends RigidBody2D
@export var hit_object:PackedScene
@onready var collision_shape_2d = $CollisionShape2D
func _ready():
collision_shape_2d.disabled = true
func _on_activate_body_entered(body):
if hit_object == null:
return
if body.velocity.y > 0:
return
var instance = hit_object.instantiate()
get_parent().add_child(instance)
instance.position.x = position.x
instance.position.y = position.y
queue_free()
+19
View File
@@ -0,0 +1,19 @@
extends Area2D
@export var speed = 80
@onready var audio_stream_player_2d = $AudioStreamPlayer2D
func _on_die_body_entered(body):
queue_free()
func _physics_process(delta):
position.x += speed * delta
func _on_body_entered_player(body):
body.shrink()
queue_free()
func _on_audio_stream_player_2d_finished():
audio_stream_player_2d.play()
+43
View File
@@ -0,0 +1,43 @@
extends RigidBody2D
@onready var player = %player
@onready var animated_sprite_2d = $AnimatedSprite2D
@onready var shoot_spawner = $ShootSpawner
const BOWSER_JR_FIRE = preload("res://scenes/enemies/bowser_jr_fire.tscn")
var shoot_direction = -1
const jump_force = 250
@onready var timer = $Timer
var pause = false
func _process(delta):
if pause:
return
if player.position.x > position.x:
animated_sprite_2d.flip_h = true
shoot_direction = 1
shoot_spawner.position.x = 32
else:
animated_sprite_2d.flip_h = false
shoot_direction = -1
shoot_spawner.position.x = 0
func shoot():
if pause:
return
animated_sprite_2d.play("open_mouth")
timer.start()
var instance = BOWSER_JR_FIRE.instantiate()
instance.speed *= shoot_direction
get_parent().add_child(instance)
instance.position.x = shoot_spawner.global_position.x
instance.position.y = shoot_spawner.global_position.y
func jump():
if pause:
return
linear_velocity.y = -jump_force
func f_die():
pass
func _on_timer_timeout():
animated_sprite_2d.play("default")
+46
View File
@@ -0,0 +1,46 @@
extends Node2D
@onready var bridge_parts = [
$RigidBody2D13,
$RigidBody2D12,$RigidBody2D11,$RigidBody2D10,$RigidBody2D9,$RigidBody2D8,
$RigidBody2D7,$RigidBody2D6,$RigidBody2D5,$RigidBody2D4,$RigidBody2D3,
$RigidBody2D2,$RigidBody2D
]
@onready var chain = $chain
@onready var timer = $Timer
@onready var sprite_2d_15 = $Area2D/Sprite2D15
@onready var player = %player
@onready var bowserjr = %bowserjr
@onready var audio_stream_player = $AudioStreamPlayer
@onready var music = %Music
@export var level_score : int
var curr_down = 0
func _on_area_2d_body_entered(body):
music.stop()
audio_stream_player.play()
chain.visible = false
player.on_pause = true
bowserjr.pause = true
sprite_2d_15.rotation_degrees = -90
timer.start()
func _on_timer_timeout():
if curr_down < len(bridge_parts):
bridge_parts[curr_down].gravity_scale = 1
curr_down += 1
else:
timer.stop()
func _on_audio_stream_player_finished():
var config = ConfigFile.new()
var err = config.load("user://config.cfg")
if err == OK:
var available_level = config.get_value("level", "available_level", 0)
level_score = level_score if level_score > available_level else available_level
config.set_value("level", "available_level", level_score)
config.save("user://config.cfg")
get_tree().change_scene_to_file("res://scenes/levels/level_0.tscn")
+9 -1
View File
@@ -14,6 +14,7 @@ var is_down = false
@onready var collision_shape_2d = $CollisionShape2D @onready var collision_shape_2d = $CollisionShape2D
@onready var ray_cast_left_3 = $RayCastLeft3 @onready var ray_cast_left_3 = $RayCastLeft3
@onready var ray_cast_right_3 = $RayCastRight3 @onready var ray_cast_right_3 = $RayCastRight3
@onready var player = %player
func _ready(): func _ready():
var coll = CapsuleShape2D.new() var coll = CapsuleShape2D.new()
@@ -22,7 +23,8 @@ func _ready():
collision_shape_2d.shape = coll collision_shape_2d.shape = coll
func _physics_process(delta): func _physics_process(delta):
linear_velocity.x = speed if abs(position.x - player.position.x) < 225 or is_down:
linear_velocity.x = speed
if ray_cast_left_2 == null: if ray_cast_left_2 == null:
return return
@@ -73,6 +75,9 @@ func _physics_process(delta):
@onready var die_sound = $dieSound @onready var die_sound = $dieSound
func f_die(): func f_die():
gravity_scale = 0
collision_shape_2d.queue_free()
die.queue_free()
die_sound.play() die_sound.play()
speed = 0 speed = 0
innocent = true innocent = true
@@ -82,6 +87,9 @@ func f_die():
func f_shrink(body): func f_shrink(body):
die_sound.play() die_sound.play()
if not is_down: if not is_down:
# collission mask only to walls
ray_cast_left.collision_mask = pow(2, 1-1)
ray_cast_right.collision_mask = pow(2, 1-1)
speed = 0 speed = 0
collision_shape_2d.shape.height -= 9 collision_shape_2d.shape.height -= 9
die.position.y += 2 die.position.y += 2
+20
View File
@@ -0,0 +1,20 @@
extends Area2D
@export var rot_speed = 3
@onready var timer = $Timer
var innocent = false
func _physics_process(delta):
rotate(rot_speed * delta)
func _on_body_entered(body):
if not innocent:
body.shrink()
innocent = true
timer.start()
func _on_timer_timeout():
innocent = false
+3 -1
View File
@@ -11,9 +11,11 @@ extends RigidBody2D
var innocent = false var innocent = false
@onready var timer_2 = $Timer2 @onready var timer_2 = $Timer2
@onready var gumba = $"." @onready var gumba = $"."
@onready var player = %player
func _physics_process(delta): func _physics_process(delta):
linear_velocity.x = speed if abs(position.x - player.position.x) < 225:
linear_velocity.x = speed
if ray_cast_left_2 == null: if ray_cast_left_2 == null:
return return
+18
View File
@@ -0,0 +1,18 @@
extends Node2D
@onready var animated_sprite_2d = $AnimatedSprite2D
@onready var collision_shape_2d = $StaticBody2D/CollisionShape2D
func _on_area_2d_body_entered(body):
animated_sprite_2d.play("down")
body.JUMPt_velocity *= 1.6
animated_sprite_2d.position.y += 8
collision_shape_2d.position.y += 8
collision_shape_2d.shape.size.y -= 16
func _on_area_2d_body_exited(body):
animated_sprite_2d.play("default")
body.JUMPt_velocity /= 1.6
animated_sprite_2d.position.y -= 8
collision_shape_2d.position.y -= 8
collision_shape_2d.shape.size.y += 16
+29 -6
View File
@@ -1,7 +1,7 @@
extends CharacterBody2D extends CharacterBody2D
@onready var animated_sprite_2d = $AnimatedSprite2D @onready var animated_sprite_2d = $AnimatedSprite2D
@onready var camera_2d = $Camera2D @onready var camera_2d = %Camera2D
@onready var color_rect = $Camera2D/ColorRect @onready var color_rect = %ColorRect
@onready var pipe_timer = $pipe_timer @onready var pipe_timer = $pipe_timer
@onready var pipe_timer_half = $pipe_timer_half @onready var pipe_timer_half = $pipe_timer_half
@onready var coin_amt = $CanvasLayer/Control/CoinAmt @onready var coin_amt = $CanvasLayer/Control/CoinAmt
@@ -12,10 +12,11 @@ extends CharacterBody2D
@onready var shrink_sound = $shrinkSound @onready var shrink_sound = $shrinkSound
@onready var die_player = $diePlayer @onready var die_player = $diePlayer
@onready var music = %Music @onready var music = %Music
@onready var timer_fire = $timer_fire
const SPEED = 130.0 const SPEED = 130.0
const JUMPt_velocity = -360.0 var JUMPt_velocity = -360.0
var on_pipe = false var on_pipe = false
var right_pipe = false var right_pipe = false
var left_pipe = false var left_pipe = false
@@ -36,6 +37,7 @@ var crawl = false
var fire = false var fire = false
var toucht_velocity = Vector2.ZERO var toucht_velocity = Vector2.ZERO
var t_velocity = 0 var t_velocity = 0
var can_fire = 0
@export var fireball_prefab : PackedScene @export var fireball_prefab : PackedScene
@@ -71,16 +73,25 @@ func _ready():
collision_shape_2d.shape.height = 15 collision_shape_2d.shape.height = 15
func _process(delta): func _process(delta):
camera_2d.position.x = position.x + 50
if is_on_floor() or velocity.y > 0 and camera_2d.position.y < position.y:
camera_2d.position.y = position.y if not is_big else position.y + 8
# set camera # set camera
if position.y <= 32: if position.y <= 32:
camera_2d.limit_bottom = 32 if position.y < -640:
camera_2d.limit_top = -1000000 camera_2d.limit_bottom = -640
else:
camera_2d.limit_bottom = 32
camera_2d.limit_top = -1000
else: else:
camera_2d.limit_bottom = 272 camera_2d.limit_bottom = 272
camera_2d.limit_top = 32 camera_2d.limit_top = 32
# check pipe # check pipe
if on_pipe and (Input.is_action_just_pressed("crawl") or crawl) and is_on_floor() or right_pipe and (Input.is_action_pressed("move_right") or t_velocity > 0): if on_pipe and (Input.is_action_just_pressed("crawl") or crawl) and is_on_floor() or right_pipe and (Input.is_action_pressed("move_right") or t_velocity > 0):
on_pause = true
pipe_sound.play() pipe_sound.play()
crawl = false crawl = false
t_velocity = 0 t_velocity = 0
@@ -101,7 +112,8 @@ func _physics_process(delta):
velocity.y = JUMPt_velocity velocity.y = JUMPt_velocity
# check fireball # check fireball
if is_flower and (Input.is_action_just_pressed("flower") or fire): if is_flower and (Input.is_action_just_pressed("flower") or fire) and can_fire < 2:
can_fire += 1
fire = false fire = false
var instance = fireball_prefab.instantiate() var instance = fireball_prefab.instantiate()
get_parent().add_child(instance) get_parent().add_child(instance)
@@ -110,6 +122,7 @@ func _physics_process(delta):
instance.linear_velocity.x = -200 if animated_sprite_2d.flip_h else 200 instance.linear_velocity.x = -200 if animated_sprite_2d.flip_h else 200
instance.linear_velocity.y = 50 instance.linear_velocity.y = 50
instance.angular_velocity = 0 instance.angular_velocity = 0
timer_fire.start()
# get input # get input
@@ -159,6 +172,8 @@ func _physics_process(delta):
func grow(): func grow():
if not is_big: if not is_big:
is_big = true is_big = true
if is_on_floor():
position.y -= 20
collision_shape_2d.shape.height = 31 collision_shape_2d.shape.height = 31
pipedetector_ground.position.y += 8 pipedetector_ground.position.y += 8
@@ -170,6 +185,9 @@ func flower():
is_flower = true is_flower = true
func shrink(): func shrink():
if on_pause:
return
if is_flower: if is_flower:
is_flower = false is_flower = false
shrink_sound.play() shrink_sound.play()
@@ -182,6 +200,7 @@ func shrink():
player_die() player_die()
func player_die(): func player_die():
visible = false
die_player.play("die") die_player.play("die")
on_pause = true on_pause = true
music.stop() music.stop()
@@ -216,3 +235,7 @@ func _on_pipe_timer_timeout():
func _on_pipe_timer_half_timeout(): func _on_pipe_timer_half_timeout():
position = pipe_target position = pipe_target
func _on_timer_fire_timeout():
can_fire = 0