feat: tatoebaspil m kiva hammasbaksu au andrjoku
BIN
Assets/Audio/Music/level_loop.wav
Normal file
24
Assets/Audio/Music/level_loop.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://m864y6umy1ru"
|
||||
path="res://.godot/imported/level_loop.wav-045b43462a44a4b0f5bb9918be1dd550.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Audio/Music/level_loop.wav"
|
||||
dest_files=["res://.godot/imported/level_loop.wav-045b43462a44a4b0f5bb9918be1dd550.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=2
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=2
|
||||
BIN
Assets/Audio/Music/victory.wav
Normal file
24
Assets/Audio/Music/victory.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://b5numv44k2cdi"
|
||||
path="res://.godot/imported/victory.wav-24b8369fe71b626de1d8ac47877351c9.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Audio/Music/victory.wav"
|
||||
dest_files=["res://.godot/imported/victory.wav-24b8369fe71b626de1d8ac47877351c9.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=2
|
||||
BIN
Assets/Audio/SFX/hit_01.wav
Normal file
24
Assets/Audio/SFX/hit_01.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://col2gbda38ce2"
|
||||
path="res://.godot/imported/hit_01.wav-01ff076471720616866a727869539108.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Audio/SFX/hit_01.wav"
|
||||
dest_files=["res://.godot/imported/hit_01.wav-01ff076471720616866a727869539108.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=2
|
||||
BIN
Assets/Audio/SFX/hit_02.wav
Normal file
24
Assets/Audio/SFX/hit_02.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://dobsokvlbuy20"
|
||||
path="res://.godot/imported/hit_02.wav-d112ebb1fa22c131937fbfaa18c06c06.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Audio/SFX/hit_02.wav"
|
||||
dest_files=["res://.godot/imported/hit_02.wav-d112ebb1fa22c131937fbfaa18c06c06.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=2
|
||||
BIN
Assets/Audio/SFX/jump_01.wav
Normal file
24
Assets/Audio/SFX/jump_01.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://db1ix2udu1c2r"
|
||||
path="res://.godot/imported/jump_01.wav-497c6e71130145db0eb7b4784713d549.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Audio/SFX/jump_01.wav"
|
||||
dest_files=["res://.godot/imported/jump_01.wav-497c6e71130145db0eb7b4784713d549.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=2
|
||||
BIN
Assets/Audio/SFX/jump_02.wav
Normal file
24
Assets/Audio/SFX/jump_02.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://bana4sfscvucv"
|
||||
path="res://.godot/imported/jump_02.wav-e60b50a673f0941b9ba2ae8f814365ea.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Audio/SFX/jump_02.wav"
|
||||
dest_files=["res://.godot/imported/jump_02.wav-e60b50a673f0941b9ba2ae8f814365ea.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=2
|
||||
BIN
Assets/Audio/SFX/pickup_01.wav
Normal file
24
Assets/Audio/SFX/pickup_01.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://cxnrlqrfwt3ip"
|
||||
path="res://.godot/imported/pickup_01.wav-831256293911f7437010ad69fbd7c790.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Audio/SFX/pickup_01.wav"
|
||||
dest_files=["res://.godot/imported/pickup_01.wav-831256293911f7437010ad69fbd7c790.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=2
|
||||
BIN
Assets/Audio/SFX/pickup_02.wav
Normal file
24
Assets/Audio/SFX/pickup_02.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://c2iv8brn58x4x"
|
||||
path="res://.godot/imported/pickup_02.wav-2822addb3aef3a4206f3c9fe11adede9.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Audio/SFX/pickup_02.wav"
|
||||
dest_files=["res://.godot/imported/pickup_02.wav-2822addb3aef3a4206f3c9fe11adede9.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=2
|
||||
BIN
Assets/Audio/SFX/ui_blip_01.wav
Normal file
24
Assets/Audio/SFX/ui_blip_01.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://cuf4h7akoii76"
|
||||
path="res://.godot/imported/ui_blip_01.wav-b283e7f8fb54769b67bbd8f1223075fd.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Audio/SFX/ui_blip_01.wav"
|
||||
dest_files=["res://.godot/imported/ui_blip_01.wav-b283e7f8fb54769b67bbd8f1223075fd.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=2
|
||||
BIN
Assets/Audio/SFX/ui_blip_02.wav
Normal file
24
Assets/Audio/SFX/ui_blip_02.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://djrkydgktdbqb"
|
||||
path="res://.godot/imported/ui_blip_02.wav-443786907d09ef6fc7926cb6d507736b.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Audio/SFX/ui_blip_02.wav"
|
||||
dest_files=["res://.godot/imported/ui_blip_02.wav-443786907d09ef6fc7926cb6d507736b.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=2
|
||||
BIN
Assets/Visual/Characters/enemy_ground.png
Normal file
|
After Width: | Height: | Size: 380 B |
34
Assets/Visual/Characters/enemy_ground.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ch7n8bdsviq0v"
|
||||
path="res://.godot/imported/enemy_ground.png-07ddbf50a7e1cd772b8adfff8bdd6e75.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Visual/Characters/enemy_ground.png"
|
||||
dest_files=["res://.godot/imported/enemy_ground.png-07ddbf50a7e1cd772b8adfff8bdd6e75.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
Assets/Visual/Characters/main_character.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
34
Assets/Visual/Characters/main_character.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bhc0ibq7lwqx1"
|
||||
path="res://.godot/imported/main_character.png-e78cbe4ecc20bf3926b7a54392e35a28.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Visual/Characters/main_character.png"
|
||||
dest_files=["res://.godot/imported/main_character.png-e78cbe4ecc20bf3926b7a54392e35a28.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
Assets/Visual/Environments/Background/background_coulds.png
Normal file
|
After Width: | Height: | Size: 839 B |
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dhnqr7v4hf11t"
|
||||
path="res://.godot/imported/background_coulds.png-ab74d54e42c9839e14def6769e26ffda.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Visual/Environments/Background/background_coulds.png"
|
||||
dest_files=["res://.godot/imported/background_coulds.png-ab74d54e42c9839e14def6769e26ffda.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
Assets/Visual/Environments/Background/background_mountains.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://fwystnst4im2"
|
||||
path="res://.godot/imported/background_mountains.png-85a7d56d51e92d3b100e3c3114c1af21.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Visual/Environments/Background/background_mountains.png"
|
||||
dest_files=["res://.godot/imported/background_mountains.png-85a7d56d51e92d3b100e3c3114c1af21.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
Assets/Visual/Environments/Background/background_sky.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dc7um7jifrv2q"
|
||||
path="res://.godot/imported/background_sky.png-d42abcaafddaa9cbc897b952c3324c65.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Visual/Environments/Background/background_sky.png"
|
||||
dest_files=["res://.godot/imported/background_sky.png-d42abcaafddaa9cbc897b952c3324c65.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
Assets/Visual/Environments/moving_platform.png
Normal file
|
After Width: | Height: | Size: 153 B |
34
Assets/Visual/Environments/moving_platform.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dequ0ve5i7ir1"
|
||||
path="res://.godot/imported/moving_platform.png-3c58aa7669b89e488b81bd141cdb28db.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Visual/Environments/moving_platform.png"
|
||||
dest_files=["res://.godot/imported/moving_platform.png-3c58aa7669b89e488b81bd141cdb28db.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
Assets/Visual/Environments/tileset.gif
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
Assets/Visual/Environments/tileset.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
34
Assets/Visual/Environments/tileset.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://colupuvbfchwd"
|
||||
path="res://.godot/imported/tileset.png-cb9afc0deb4b8d76456c12e9cabdedc2.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Visual/Environments/tileset.png"
|
||||
dest_files=["res://.godot/imported/tileset.png-cb9afc0deb4b8d76456c12e9cabdedc2.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
Assets/Visual/Items/apple.png
Normal file
|
After Width: | Height: | Size: 170 B |
34
Assets/Visual/Items/apple.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c646w8fxcpnlo"
|
||||
path="res://.godot/imported/apple.png-2256145e6411d3b6e50b092b4307bc5d.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Visual/Items/apple.png"
|
||||
dest_files=["res://.godot/imported/apple.png-2256145e6411d3b6e50b092b4307bc5d.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
Assets/Visual/Items/finish.png
Normal file
|
After Width: | Height: | Size: 171 B |
34
Assets/Visual/Items/finish.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ca5jn54tsxqpm"
|
||||
path="res://.godot/imported/finish.png-b4af8f7ba91f244b90d663415d9da907.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Visual/Items/finish.png"
|
||||
dest_files=["res://.godot/imported/finish.png-b4af8f7ba91f244b90d663415d9da907.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
Assets/Visual/Items/piano.png
Normal file
|
After Width: | Height: | Size: 518 B |
40
Assets/Visual/Items/piano.png.import
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cj35ne2auxoww"
|
||||
path="res://.godot/imported/piano.png-0c9682e5facaf8d81a147b9011c44558.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Visual/Items/piano.png"
|
||||
dest_files=["res://.godot/imported/piano.png-0c9682e5facaf8d81a147b9011c44558.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
Assets/Visual/Placeholder/clouds.png
Normal file
|
After Width: | Height: | Size: 6 KiB |
34
Assets/Visual/Placeholder/clouds.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cb3hu1um0oo53"
|
||||
path="res://.godot/imported/clouds.png-3a3e1352c1438b28d35e188b506cc674.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Visual/Placeholder/clouds.png"
|
||||
dest_files=["res://.godot/imported/clouds.png-3a3e1352c1438b28d35e188b506cc674.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
Assets/Visual/Placeholder/far-grounds.png
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
34
Assets/Visual/Placeholder/far-grounds.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cfsss6vhuxcox"
|
||||
path="res://.godot/imported/far-grounds.png-0ff77dc0a588fc1c1abfff220c964eb3.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Visual/Placeholder/far-grounds.png"
|
||||
dest_files=["res://.godot/imported/far-grounds.png-0ff77dc0a588fc1c1abfff220c964eb3.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
Assets/Visual/Placeholder/sea.png
Normal file
|
After Width: | Height: | Size: 803 B |
34
Assets/Visual/Placeholder/sea.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://l8i772vu5ju1"
|
||||
path="res://.godot/imported/sea.png-7648496e13e1c5ff924f53ddc17f35d9.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Visual/Placeholder/sea.png"
|
||||
dest_files=["res://.godot/imported/sea.png-7648496e13e1c5ff924f53ddc17f35d9.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
Assets/Visual/Placeholder/sky.png
Normal file
|
After Width: | Height: | Size: 744 B |
34
Assets/Visual/Placeholder/sky.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cjh46442urbcn"
|
||||
path="res://.godot/imported/sky.png-39f92a9c06a650ca763444132cc6b0de.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Visual/Placeholder/sky.png"
|
||||
dest_files=["res://.godot/imported/sky.png-39f92a9c06a650ca763444132cc6b0de.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
|
||||
21
Assets/Visual/UI/base_theme.tres
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
[gd_resource type="Theme" format=3 uid="uid://dmha0ysm5urx7"]
|
||||
|
||||
[ext_resource type="FontFile" uid="uid://d2raxm4th2svb" path="res://Assets/Visual/UI/monogram.ttf" id="1_g57ay"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_g57ay"]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_8qdy6"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_bey2p"]
|
||||
bg_color = Color(0.405542, 0.426432, 0.582274, 1)
|
||||
|
||||
[resource]
|
||||
default_font_size = 48
|
||||
Button/fonts/font = ExtResource("1_g57ay")
|
||||
Button/styles/focus = SubResource("StyleBoxFlat_g57ay")
|
||||
Button/styles/normal = SubResource("StyleBoxEmpty_8qdy6")
|
||||
Button/styles/pressed = SubResource("StyleBoxFlat_bey2p")
|
||||
Label/colors/font_outline_color = Color(0.101961, 0.109804, 0.172549, 1)
|
||||
Label/constants/outline_size = 4
|
||||
Label/font_sizes/font_size = 16
|
||||
Label/fonts/font = ExtResource("1_g57ay")
|
||||
BIN
Assets/Visual/UI/health_icon.png
Normal file
|
After Width: | Height: | Size: 172 B |
34
Assets/Visual/UI/health_icon.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c8dx103r8mw3y"
|
||||
path="res://.godot/imported/health_icon.png-593373e74c1f6f4577df479350c2a897.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Visual/UI/health_icon.png"
|
||||
dest_files=["res://.godot/imported/health_icon.png-593373e74c1f6f4577df479350c2a897.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
Assets/Visual/UI/monogram.ttf
Normal file
35
Assets/Visual/UI/monogram.ttf.import
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://d2raxm4th2svb"
|
||||
path="res://.godot/imported/monogram.ttf-9ecd35ab122ba3b186a7c512e149bfea.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Visual/UI/monogram.ttf"
|
||||
dest_files=["res://.godot/imported/monogram.ttf-9ecd35ab122ba3b186a7c512e149bfea.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=4
|
||||
keep_rounding_remainders=true
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
||||
BIN
Assets/Visual/game_icon.png
Normal file
|
After Width: | Height: | Size: 437 B |
34
Assets/Visual/game_icon.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bb332l6blaoim"
|
||||
path="res://.godot/imported/game_icon.png-2cda1bee21c24643e892d035759e5565.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Visual/game_icon.png"
|
||||
dest_files=["res://.godot/imported/game_icon.png-2cda1bee21c24643e892d035759e5565.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
|
||||
7
Resources/Settings/jump_curve.tres
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
[gd_resource type="Curve" format=3 uid="uid://0sic47riyrm0"]
|
||||
|
||||
[resource]
|
||||
_limits = [0.0, 1.0, 0.0, 2.0]
|
||||
bake_resolution = 1
|
||||
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1.07303, 0), 0.0, 0.0, 0, 0]
|
||||
point_count = 2
|
||||
403
Resources/Tilesets/tileset_jungle.tres
Normal file
|
|
@ -0,0 +1,403 @@
|
|||
[gd_resource type="TileSet" format=3 uid="uid://dtg8a2s6k1mnt"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://colupuvbfchwd" path="res://Assets/Visual/Environments/tileset.png" id="1_ig216"]
|
||||
[ext_resource type="Texture2D" uid="uid://b0xwumd1vuqvr" path="res://tilesets/sci-fi platformer - free/tileset.png" id="2_06l3p"]
|
||||
|
||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_aqk2v"]
|
||||
texture = ExtResource("1_ig216")
|
||||
0:0/0 = 0
|
||||
0:0/0/terrain_set = 0
|
||||
0:0/0/terrain = 0
|
||||
0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
0:0/0/terrains_peering_bit/right_side = 0
|
||||
1:0/0 = 0
|
||||
1:0/0/terrain_set = 0
|
||||
1:0/0/terrain = 0
|
||||
1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
1:0/0/terrains_peering_bit/right_side = 0
|
||||
1:0/0/terrains_peering_bit/left_side = 0
|
||||
2:0/0 = 0
|
||||
2:0/0/terrain_set = 0
|
||||
2:0/0/terrain = 0
|
||||
2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:0/0/terrains_peering_bit/left_side = 0
|
||||
0:1/0 = 0
|
||||
0:1/0/terrain_set = 0
|
||||
0:1/0/terrain = 0
|
||||
0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
0:1/0/terrains_peering_bit/right_side = 0
|
||||
0:1/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
0:1/0/terrains_peering_bit/bottom_side = 0
|
||||
1:1/0 = 0
|
||||
1:1/0/terrain_set = 0
|
||||
1:1/0/terrain = 0
|
||||
1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
1:1/0/terrains_peering_bit/right_side = 0
|
||||
1:1/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
1:1/0/terrains_peering_bit/bottom_side = 0
|
||||
1:1/0/terrains_peering_bit/bottom_left_corner = 0
|
||||
1:1/0/terrains_peering_bit/left_side = 0
|
||||
2:1/0 = 0
|
||||
2:1/0/terrain_set = 0
|
||||
2:1/0/terrain = 0
|
||||
2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:1/0/terrains_peering_bit/bottom_side = 0
|
||||
2:1/0/terrains_peering_bit/bottom_left_corner = 0
|
||||
2:1/0/terrains_peering_bit/left_side = 0
|
||||
0:2/0 = 0
|
||||
0:2/0/terrain_set = 0
|
||||
0:2/0/terrain = 0
|
||||
0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
0:2/0/terrains_peering_bit/right_side = 0
|
||||
0:2/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
0:2/0/terrains_peering_bit/bottom_side = 0
|
||||
0:2/0/terrains_peering_bit/top_side = 0
|
||||
0:2/0/terrains_peering_bit/top_right_corner = 0
|
||||
1:2/0 = 0
|
||||
1:2/0/terrain_set = 0
|
||||
1:2/0/terrain = 0
|
||||
1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
1:2/0/terrains_peering_bit/right_side = 0
|
||||
1:2/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
1:2/0/terrains_peering_bit/bottom_side = 0
|
||||
1:2/0/terrains_peering_bit/bottom_left_corner = 0
|
||||
1:2/0/terrains_peering_bit/left_side = 0
|
||||
1:2/0/terrains_peering_bit/top_left_corner = 0
|
||||
1:2/0/terrains_peering_bit/top_side = 0
|
||||
1:2/0/terrains_peering_bit/top_right_corner = 0
|
||||
2:2/0 = 0
|
||||
2:2/0/terrain_set = 0
|
||||
2:2/0/terrain = 0
|
||||
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:2/0/terrains_peering_bit/bottom_side = 0
|
||||
2:2/0/terrains_peering_bit/bottom_left_corner = 0
|
||||
2:2/0/terrains_peering_bit/left_side = 0
|
||||
2:2/0/terrains_peering_bit/top_left_corner = 0
|
||||
2:2/0/terrains_peering_bit/top_side = 0
|
||||
0:3/0 = 0
|
||||
0:3/0/terrain_set = 0
|
||||
0:3/0/terrain = 0
|
||||
0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
0:3/0/terrains_peering_bit/right_side = 0
|
||||
0:3/0/terrains_peering_bit/top_side = 0
|
||||
0:3/0/terrains_peering_bit/top_right_corner = 0
|
||||
1:3/0 = 0
|
||||
1:3/0/terrain_set = 0
|
||||
1:3/0/terrain = 0
|
||||
1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
1:3/0/terrains_peering_bit/right_side = 0
|
||||
1:3/0/terrains_peering_bit/left_side = 0
|
||||
1:3/0/terrains_peering_bit/top_left_corner = 0
|
||||
1:3/0/terrains_peering_bit/top_side = 0
|
||||
1:3/0/terrains_peering_bit/top_right_corner = 0
|
||||
2:3/0 = 0
|
||||
2:3/0/terrain_set = 0
|
||||
2:3/0/terrain = 0
|
||||
2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:3/0/terrains_peering_bit/left_side = 0
|
||||
2:3/0/terrains_peering_bit/top_left_corner = 0
|
||||
2:3/0/terrains_peering_bit/top_side = 0
|
||||
3:0/0 = 0
|
||||
3:0/0/terrain_set = 0
|
||||
3:0/0/terrain = 0
|
||||
3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:1/0 = 0
|
||||
3:1/0/terrain_set = 0
|
||||
3:1/0/terrain = 0
|
||||
3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:1/0/terrains_peering_bit/bottom_side = 0
|
||||
3:2/0 = 0
|
||||
3:2/0/terrain_set = 0
|
||||
3:2/0/terrain = 0
|
||||
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:2/0/terrains_peering_bit/bottom_side = 0
|
||||
3:2/0/terrains_peering_bit/top_side = 0
|
||||
3:3/0 = 0
|
||||
3:3/0/terrain_set = 0
|
||||
3:3/0/terrain = 0
|
||||
3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:3/0/terrains_peering_bit/top_side = 0
|
||||
0:4/0 = 0
|
||||
0:4/0/terrain_set = 0
|
||||
0:4/0/terrain = 0
|
||||
0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
0:4/0/terrains_peering_bit/right_side = 0
|
||||
0:4/0/terrains_peering_bit/bottom_side = 0
|
||||
0:4/0/terrains_peering_bit/bottom_left_corner = 0
|
||||
0:4/0/terrains_peering_bit/left_side = 0
|
||||
0:4/0/terrains_peering_bit/top_left_corner = 0
|
||||
0:4/0/terrains_peering_bit/top_side = 0
|
||||
0:4/0/terrains_peering_bit/top_right_corner = 0
|
||||
0:5/0 = 0
|
||||
0:5/0/terrain_set = 0
|
||||
0:5/0/terrain = 0
|
||||
0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
0:5/0/terrains_peering_bit/right_side = 0
|
||||
0:5/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
0:5/0/terrains_peering_bit/bottom_side = 0
|
||||
0:5/0/terrains_peering_bit/bottom_left_corner = 0
|
||||
0:5/0/terrains_peering_bit/left_side = 0
|
||||
0:5/0/terrains_peering_bit/top_left_corner = 0
|
||||
0:5/0/terrains_peering_bit/top_side = 0
|
||||
1:5/0 = 0
|
||||
1:5/0/terrain_set = 0
|
||||
1:5/0/terrain = 0
|
||||
1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
1:5/0/terrains_peering_bit/right_side = 0
|
||||
1:5/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
1:5/0/terrains_peering_bit/bottom_side = 0
|
||||
1:5/0/terrains_peering_bit/bottom_left_corner = 0
|
||||
1:5/0/terrains_peering_bit/left_side = 0
|
||||
1:5/0/terrains_peering_bit/top_side = 0
|
||||
1:5/0/terrains_peering_bit/top_right_corner = 0
|
||||
1:4/0 = 0
|
||||
1:4/0/terrain_set = 0
|
||||
1:4/0/terrain = 0
|
||||
1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
1:4/0/terrains_peering_bit/right_side = 0
|
||||
1:4/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
1:4/0/terrains_peering_bit/bottom_side = 0
|
||||
1:4/0/terrains_peering_bit/left_side = 0
|
||||
1:4/0/terrains_peering_bit/top_left_corner = 0
|
||||
1:4/0/terrains_peering_bit/top_side = 0
|
||||
1:4/0/terrains_peering_bit/top_right_corner = 0
|
||||
2:4/0 = 0
|
||||
2:4/0/terrain_set = 0
|
||||
2:4/0/terrain = 0
|
||||
2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:4/0/terrains_peering_bit/right_side = 0
|
||||
2:4/0/terrains_peering_bit/bottom_side = 0
|
||||
2:4/0/terrains_peering_bit/bottom_left_corner = 0
|
||||
2:4/0/terrains_peering_bit/left_side = 0
|
||||
2:4/0/terrains_peering_bit/top_left_corner = 0
|
||||
2:4/0/terrains_peering_bit/top_side = 0
|
||||
3:4/0 = 0
|
||||
3:4/0/terrain_set = 0
|
||||
3:4/0/terrain = 0
|
||||
3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:4/0/terrains_peering_bit/right_side = 0
|
||||
3:4/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
3:4/0/terrains_peering_bit/bottom_side = 0
|
||||
3:4/0/terrains_peering_bit/left_side = 0
|
||||
3:4/0/terrains_peering_bit/top_side = 0
|
||||
3:4/0/terrains_peering_bit/top_right_corner = 0
|
||||
2:5/0 = 0
|
||||
2:5/0/terrain_set = 0
|
||||
2:5/0/terrain = 0
|
||||
2:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:5/0/terrains_peering_bit/right_side = 0
|
||||
2:5/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
2:5/0/terrains_peering_bit/bottom_side = 0
|
||||
2:5/0/terrains_peering_bit/bottom_left_corner = 0
|
||||
2:5/0/terrains_peering_bit/left_side = 0
|
||||
2:5/0/terrains_peering_bit/top_side = 0
|
||||
3:5/0 = 0
|
||||
3:5/0/terrain_set = 0
|
||||
3:5/0/terrain = 0
|
||||
3:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:5/0/terrains_peering_bit/right_side = 0
|
||||
3:5/0/terrains_peering_bit/bottom_side = 0
|
||||
3:5/0/terrains_peering_bit/left_side = 0
|
||||
3:5/0/terrains_peering_bit/top_left_corner = 0
|
||||
3:5/0/terrains_peering_bit/top_side = 0
|
||||
3:5/0/terrains_peering_bit/top_right_corner = 0
|
||||
4:0/0 = 0
|
||||
4:0/0/terrain_set = 0
|
||||
4:0/0/terrain = 0
|
||||
4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:0/0/terrains_peering_bit/right_side = 0
|
||||
4:0/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
4:0/0/terrains_peering_bit/bottom_side = 0
|
||||
4:0/0/terrains_peering_bit/top_side = 0
|
||||
4:1/0 = 0
|
||||
4:1/0/terrain_set = 0
|
||||
4:1/0/terrain = 0
|
||||
4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:1/0/terrains_peering_bit/right_side = 0
|
||||
4:1/0/terrains_peering_bit/bottom_side = 0
|
||||
4:1/0/terrains_peering_bit/top_side = 0
|
||||
4:1/0/terrains_peering_bit/top_right_corner = 0
|
||||
5:1/0 = 0
|
||||
5:1/0/terrain_set = 0
|
||||
5:1/0/terrain = 0
|
||||
5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:1/0/terrains_peering_bit/bottom_side = 0
|
||||
5:1/0/terrains_peering_bit/left_side = 0
|
||||
5:1/0/terrains_peering_bit/top_left_corner = 0
|
||||
5:1/0/terrains_peering_bit/top_side = 0
|
||||
5:0/0 = 0
|
||||
5:0/0/terrain_set = 0
|
||||
5:0/0/terrain = 0
|
||||
5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:0/0/terrains_peering_bit/bottom_side = 0
|
||||
5:0/0/terrains_peering_bit/bottom_left_corner = 0
|
||||
5:0/0/terrains_peering_bit/left_side = 0
|
||||
5:0/0/terrains_peering_bit/top_side = 0
|
||||
4:2/0 = 0
|
||||
4:2/0/terrain_set = 0
|
||||
4:2/0/terrain = 0
|
||||
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:2/0/terrains_peering_bit/right_side = 0
|
||||
4:2/0/terrains_peering_bit/left_side = 0
|
||||
4:2/0/terrains_peering_bit/top_left_corner = 0
|
||||
4:2/0/terrains_peering_bit/top_side = 0
|
||||
5:2/0 = 0
|
||||
5:2/0/terrain_set = 0
|
||||
5:2/0/terrain = 0
|
||||
5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:2/0/terrains_peering_bit/right_side = 0
|
||||
5:2/0/terrains_peering_bit/left_side = 0
|
||||
5:2/0/terrains_peering_bit/top_side = 0
|
||||
5:2/0/terrains_peering_bit/top_right_corner = 0
|
||||
4:3/0 = 0
|
||||
4:3/0/terrain_set = 0
|
||||
4:3/0/terrain = 0
|
||||
4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:3/0/terrains_peering_bit/right_side = 0
|
||||
4:3/0/terrains_peering_bit/bottom_side = 0
|
||||
4:3/0/terrains_peering_bit/bottom_left_corner = 0
|
||||
4:3/0/terrains_peering_bit/left_side = 0
|
||||
5:3/0 = 0
|
||||
5:3/0/terrain_set = 0
|
||||
5:3/0/terrain = 0
|
||||
5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:3/0/terrains_peering_bit/right_side = 0
|
||||
5:3/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
5:3/0/terrains_peering_bit/bottom_side = 0
|
||||
5:3/0/terrains_peering_bit/left_side = 0
|
||||
5:5/0 = 0
|
||||
5:5/0/terrain_set = 0
|
||||
5:5/0/terrain = 0
|
||||
5:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:5/0/terrains_peering_bit/left_side = 0
|
||||
5:5/0/terrains_peering_bit/top_side = 0
|
||||
5:4/0 = 0
|
||||
5:4/0/terrain_set = 0
|
||||
5:4/0/terrain = 0
|
||||
5:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:4/0/terrains_peering_bit/bottom_side = 0
|
||||
5:4/0/terrains_peering_bit/left_side = 0
|
||||
4:4/0 = 0
|
||||
4:4/0/terrain_set = 0
|
||||
4:4/0/terrain = 0
|
||||
4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:4/0/terrains_peering_bit/right_side = 0
|
||||
4:4/0/terrains_peering_bit/bottom_side = 0
|
||||
4:5/0 = 0
|
||||
4:5/0/terrain_set = 0
|
||||
4:5/0/terrain = 0
|
||||
4:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:5/0/terrains_peering_bit/right_side = 0
|
||||
4:5/0/terrains_peering_bit/top_side = 0
|
||||
0:6/0 = 0
|
||||
0:6/0/terrain_set = 0
|
||||
0:6/0/terrain = 0
|
||||
0:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
0:6/0/terrains_peering_bit/right_side = 0
|
||||
0:6/0/terrains_peering_bit/bottom_side = 0
|
||||
0:6/0/terrains_peering_bit/left_side = 0
|
||||
1:6/0 = 0
|
||||
1:6/0/terrain_set = 0
|
||||
1:6/0/terrain = 1
|
||||
1:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
1:6/0/terrains_peering_bit/right_side = 1
|
||||
2:6/0 = 0
|
||||
2:6/0/terrain_set = 0
|
||||
2:6/0/terrain = 1
|
||||
2:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:6/0/terrains_peering_bit/right_side = 1
|
||||
2:6/0/terrains_peering_bit/left_side = 1
|
||||
3:6/0 = 0
|
||||
3:6/0/terrain_set = 0
|
||||
3:6/0/terrain = 1
|
||||
3:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:6/0/terrains_peering_bit/left_side = 1
|
||||
4:6/0 = 0
|
||||
4:6/0/terrain_set = 0
|
||||
4:6/0/terrain = 1
|
||||
4:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
|
||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_3kgov"]
|
||||
texture = ExtResource("2_06l3p")
|
||||
0:0/0 = 0
|
||||
1:0/0 = 0
|
||||
15:0/0 = 0
|
||||
16:0/0 = 0
|
||||
0:1/0 = 0
|
||||
1:1/0 = 0
|
||||
2:1/0 = 0
|
||||
3:1/0 = 0
|
||||
4:1/0 = 0
|
||||
5:1/0 = 0
|
||||
6:1/0 = 0
|
||||
8:1/0 = 0
|
||||
9:1/0 = 0
|
||||
12:1/0 = 0
|
||||
13:1/0 = 0
|
||||
14:1/0 = 0
|
||||
15:1/0 = 0
|
||||
16:1/0 = 0
|
||||
0:2/0 = 0
|
||||
2:2/0 = 0
|
||||
3:2/0 = 0
|
||||
4:2/0 = 0
|
||||
5:2/0 = 0
|
||||
6:2/0 = 0
|
||||
8:2/0 = 0
|
||||
9:2/0 = 0
|
||||
10:2/0 = 0
|
||||
12:2/0 = 0
|
||||
13:2/0 = 0
|
||||
0:3/0 = 0
|
||||
1:3/0 = 0
|
||||
2:3/0 = 0
|
||||
12:3/0 = 0
|
||||
13:3/0 = 0
|
||||
14:3/0 = 0
|
||||
15:3/0 = 0
|
||||
16:3/0 = 0
|
||||
17:3/0 = 0
|
||||
0:4/0 = 0
|
||||
1:4/0 = 0
|
||||
2:4/0 = 0
|
||||
3:4/0 = 0
|
||||
4:4/0 = 0
|
||||
5:4/0 = 0
|
||||
0:5/0 = 0
|
||||
1:5/0 = 0
|
||||
2:5/0 = 0
|
||||
3:5/0 = 0
|
||||
5:5/0 = 0
|
||||
12:5/0 = 0
|
||||
13:5/0 = 0
|
||||
14:5/0 = 0
|
||||
15:5/0 = 0
|
||||
3:6/0 = 0
|
||||
4:6/0 = 0
|
||||
5:6/0 = 0
|
||||
13:6/0 = 0
|
||||
14:6/0 = 0
|
||||
15:6/0 = 0
|
||||
0:7/0 = 0
|
||||
1:7/0 = 0
|
||||
2:7/0 = 0
|
||||
3:7/0 = 0
|
||||
4:7/0 = 0
|
||||
5:7/0 = 0
|
||||
12:7/0 = 0
|
||||
13:7/0 = 0
|
||||
14:7/0 = 0
|
||||
15:7/0 = 0
|
||||
0:9/0 = 0
|
||||
1:9/0 = 0
|
||||
2:9/0 = 0
|
||||
|
||||
[resource]
|
||||
physics_layer_0/collision_layer = 1
|
||||
terrain_set_0/mode = 0
|
||||
terrain_set_0/terrain_0/name = "Terrain 0"
|
||||
terrain_set_0/terrain_0/color = Color(0.262745, 0.717647, 0.866667, 1)
|
||||
terrain_set_0/terrain_1/name = "Terrain 1"
|
||||
terrain_set_0/terrain_1/color = Color(0.501961, 0.870588, 0.25098, 1)
|
||||
sources/0 = SubResource("TileSetAtlasSource_aqk2v")
|
||||
sources/1 = SubResource("TileSetAtlasSource_3kgov")
|
||||
15
default_bus_layout.tres
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[gd_resource type="AudioBusLayout" format=3 uid="uid://qh3qyp2da54e"]
|
||||
|
||||
[resource]
|
||||
bus/1/name = &"Effects"
|
||||
bus/1/solo = false
|
||||
bus/1/mute = false
|
||||
bus/1/bypass_fx = false
|
||||
bus/1/volume_db = 0.0
|
||||
bus/1/send = &"Master"
|
||||
bus/2/name = &"Music"
|
||||
bus/2/solo = false
|
||||
bus/2/mute = false
|
||||
bus/2/bypass_fx = false
|
||||
bus/2/volume_db = 0.0
|
||||
bus/2/send = &"Master"
|
||||
110
export_presets.cfg
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
[preset.0]
|
||||
|
||||
name="Web"
|
||||
platform="Web"
|
||||
runnable=true
|
||||
advanced_options=false
|
||||
dedicated_server=false
|
||||
custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter=""
|
||||
export_path="../Builds/Web/MinimalPlatformer.html"
|
||||
patches=PackedStringArray()
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
seed=0
|
||||
encrypt_pck=false
|
||||
encrypt_directory=false
|
||||
script_export_mode=2
|
||||
|
||||
[preset.0.options]
|
||||
|
||||
custom_template/debug=""
|
||||
custom_template/release=""
|
||||
variant/extensions_support=false
|
||||
variant/thread_support=false
|
||||
vram_texture_compression/for_desktop=true
|
||||
vram_texture_compression/for_mobile=false
|
||||
html/export_icon=true
|
||||
html/custom_html_shell=""
|
||||
html/head_include=""
|
||||
html/canvas_resize_policy=2
|
||||
html/focus_canvas_on_start=true
|
||||
html/experimental_virtual_keyboard=false
|
||||
progressive_web_app/enabled=false
|
||||
progressive_web_app/ensure_cross_origin_isolation_headers=true
|
||||
progressive_web_app/offline_page=""
|
||||
progressive_web_app/display=1
|
||||
progressive_web_app/orientation=0
|
||||
progressive_web_app/icon_144x144=""
|
||||
progressive_web_app/icon_180x180=""
|
||||
progressive_web_app/icon_512x512=""
|
||||
progressive_web_app/background_color=Color(0, 0, 0, 1)
|
||||
|
||||
[preset.1]
|
||||
|
||||
name="Windows Desktop"
|
||||
platform="Windows Desktop"
|
||||
runnable=true
|
||||
advanced_options=false
|
||||
dedicated_server=false
|
||||
custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter=""
|
||||
export_path="../Builds/Win/MinimalPlatformer.exe"
|
||||
patches=PackedStringArray()
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
seed=0
|
||||
encrypt_pck=false
|
||||
encrypt_directory=false
|
||||
script_export_mode=2
|
||||
|
||||
[preset.1.options]
|
||||
|
||||
custom_template/debug=""
|
||||
custom_template/release=""
|
||||
debug/export_console_wrapper=1
|
||||
binary_format/embed_pck=false
|
||||
texture_format/s3tc_bptc=true
|
||||
texture_format/etc2_astc=false
|
||||
binary_format/architecture="x86_64"
|
||||
codesign/enable=false
|
||||
codesign/timestamp=true
|
||||
codesign/timestamp_server_url=""
|
||||
codesign/digest_algorithm=1
|
||||
codesign/description=""
|
||||
codesign/custom_options=PackedStringArray()
|
||||
application/modify_resources=true
|
||||
application/icon=""
|
||||
application/console_wrapper_icon=""
|
||||
application/icon_interpolation=4
|
||||
application/file_version=""
|
||||
application/product_version=""
|
||||
application/company_name=""
|
||||
application/product_name=""
|
||||
application/file_description=""
|
||||
application/copyright=""
|
||||
application/trademarks=""
|
||||
application/export_angle=0
|
||||
application/export_d3d12=0
|
||||
application/d3d12_agility_sdk_multiarch=true
|
||||
ssh_remote_deploy/enabled=false
|
||||
ssh_remote_deploy/host="user@host_ip"
|
||||
ssh_remote_deploy/port="22"
|
||||
ssh_remote_deploy/extra_args_ssh=""
|
||||
ssh_remote_deploy/extra_args_scp=""
|
||||
ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
|
||||
$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
|
||||
$trigger = New-ScheduledTaskTrigger -Once -At 00:00
|
||||
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
|
||||
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
|
||||
Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
|
||||
Start-ScheduledTask -TaskName godot_remote_debug
|
||||
while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
|
||||
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
|
||||
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
|
||||
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
|
||||
Remove-Item -Recurse -Force '{temp_dir}'"
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bqq8luy3bcmer"
|
||||
uid="uid://dvfq7cynm0x8x"
|
||||
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
|
|
@ -18,8 +18,6 @@ dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.cte
|
|||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
|
|
@ -27,10 +25,6 @@ mipmaps/generate=false
|
|||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
|
|
|
|||
148
prefabs/Characters/enemy_ground.tscn
Normal file
|
|
@ -0,0 +1,148 @@
|
|||
[gd_scene load_steps=13 format=3 uid="uid://bta6rg6alpwct"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://ch7n8bdsviq0v" path="res://Assets/Visual/Characters/enemy_ground.png" id="1_klmuj"]
|
||||
[ext_resource type="Script" uid="uid://ow780v11j4gt" path="res://Scripts/Characters/Enemy/enemy_ground.gd" id="1_s5foq"]
|
||||
[ext_resource type="Script" uid="uid://dekx8meo31r21" path="res://Scripts/Characters/Enemy/attack_box.gd" id="3_i34dp"]
|
||||
[ext_resource type="AudioStream" uid="uid://col2gbda38ce2" path="res://Assets/Audio/SFX/hit_01.wav" id="3_k1hhr"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_s5foq"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Sprite:frame")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [1]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_i34dp"]
|
||||
resource_name = "death"
|
||||
length = 0.1
|
||||
step = 0.1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Sprite:frame")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [6]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_klmuj"]
|
||||
resource_name = "walk"
|
||||
length = 0.6
|
||||
loop_mode = 1
|
||||
step = 0.1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Sprite:frame")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
|
||||
"update": 1,
|
||||
"values": [0, 1, 2, 3, 4, 5]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_k1hhr"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_s5foq"),
|
||||
&"death": SubResource("Animation_i34dp"),
|
||||
&"walk": SubResource("Animation_klmuj")
|
||||
}
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_2nl5r"]
|
||||
random_pitch = 1.2
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("3_k1hhr")
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_s5foq"]
|
||||
size = Vector2(10, 8)
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_i34dp"]
|
||||
size = Vector2(16, 6)
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_s5foq"]
|
||||
radius = 4.0
|
||||
|
||||
[node name="EnemyGround" type="CharacterBody2D" groups=["enemy"]]
|
||||
script = ExtResource("1_s5foq")
|
||||
|
||||
[node name="Visual" type="Node2D" parent="."]
|
||||
|
||||
[node name="Sprite" type="Sprite2D" parent="Visual"]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(0, -8)
|
||||
texture = ExtResource("1_klmuj")
|
||||
hframes = 6
|
||||
vframes = 2
|
||||
frame = 1
|
||||
|
||||
[node name="Animator" type="AnimationPlayer" parent="Visual"]
|
||||
unique_name_in_owner = true
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_k1hhr")
|
||||
}
|
||||
|
||||
[node name="Audio" type="Node2D" parent="."]
|
||||
|
||||
[node name="DeathSoundPlayer" type="AudioStreamPlayer" parent="Audio"]
|
||||
unique_name_in_owner = true
|
||||
stream = SubResource("AudioStreamRandomizer_2nl5r")
|
||||
bus = &"Effects"
|
||||
|
||||
[node name="Hurtbox" type="Area2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
collision_layer = 2
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hurtbox"]
|
||||
position = Vector2(0, -4)
|
||||
shape = SubResource("RectangleShape2D_s5foq")
|
||||
|
||||
[node name="AttackBox" type="Area2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
collision_layer = 2
|
||||
script = ExtResource("3_i34dp")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="AttackBox"]
|
||||
position = Vector2(0, -4)
|
||||
shape = SubResource("RectangleShape2D_i34dp")
|
||||
|
||||
[node name="Raycasts" type="Node2D" parent="."]
|
||||
|
||||
[node name="GroundRayLeft" type="RayCast2D" parent="Raycasts"]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(-8, -4)
|
||||
target_position = Vector2(0, 8)
|
||||
|
||||
[node name="GroundRayRight" type="RayCast2D" parent="Raycasts"]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(8, -4)
|
||||
target_position = Vector2(0, 8)
|
||||
|
||||
[node name="WallRayLeft" type="RayCast2D" parent="Raycasts"]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(0, -4)
|
||||
target_position = Vector2(-8, 0)
|
||||
|
||||
[node name="WallRayRight" type="RayCast2D" parent="Raycasts"]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(0, -4)
|
||||
target_position = Vector2(8, 0)
|
||||
|
||||
[node name="CollisionShape2D2" type="CollisionShape2D" parent="."]
|
||||
position = Vector2(0, -4)
|
||||
shape = SubResource("CircleShape2D_s5foq")
|
||||
|
||||
[connection signal="area_entered" from="AttackBox" to="AttackBox" method="_on_area_entered"]
|
||||
192
prefabs/Characters/player.tscn
Normal file
|
|
@ -0,0 +1,192 @@
|
|||
[gd_scene load_steps=19 format=3 uid="uid://dno8cee2noo4j"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dt3v7jvorf4o3" path="res://Scripts/Characters/PlayerCharacter/player.gd" id="1_25cl6"]
|
||||
[ext_resource type="Texture2D" uid="uid://bhc0ibq7lwqx1" path="res://Assets/Visual/Characters/main_character.png" id="2_jmcfr"]
|
||||
[ext_resource type="AudioStream" uid="uid://db1ix2udu1c2r" path="res://Assets/Audio/SFX/jump_01.wav" id="3_ahvcc"]
|
||||
[ext_resource type="AudioStream" uid="uid://bana4sfscvucv" path="res://Assets/Audio/SFX/jump_02.wav" id="4_rnjr3"]
|
||||
[ext_resource type="AudioStream" uid="uid://dobsokvlbuy20" path="res://Assets/Audio/SFX/hit_02.wav" id="5_vcg4a"]
|
||||
[ext_resource type="Script" uid="uid://5p5u8dtod1cj" path="res://Scripts/Characters/PlayerCharacter/attack_ray.gd" id="6_oefvu"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_u1ipw"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("MainSprite:frame")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [1]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_wgyg4"]
|
||||
resource_name = "attack"
|
||||
length = 0.6
|
||||
step = 0.1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("MainSprite:frame")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.4),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 1,
|
||||
"values": [24, 25, 26]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_p1r5x"]
|
||||
resource_name = "idle"
|
||||
length = 0.4
|
||||
loop_mode = 1
|
||||
step = 0.1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("MainSprite:frame")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [0, 1]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_iyggp"]
|
||||
resource_name = "jump"
|
||||
length = 0.3
|
||||
step = 0.1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("MainSprite:frame")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.1, 0.2),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 1,
|
||||
"values": [12, 13, 14]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_r1f3e"]
|
||||
resource_name = "land"
|
||||
length = 0.4
|
||||
step = 0.1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("MainSprite:frame")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [18]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_xpv8o"]
|
||||
resource_name = "run"
|
||||
length = 0.6
|
||||
loop_mode = 1
|
||||
step = 0.1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("MainSprite:frame")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
|
||||
"update": 1,
|
||||
"values": [6, 7, 8, 9, 10, 11]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_iyggp"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_u1ipw"),
|
||||
&"attack": SubResource("Animation_wgyg4"),
|
||||
&"idle": SubResource("Animation_p1r5x"),
|
||||
&"jump": SubResource("Animation_iyggp"),
|
||||
&"land": SubResource("Animation_r1f3e"),
|
||||
&"run": SubResource("Animation_xpv8o")
|
||||
}
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_wgyg4"]
|
||||
random_pitch = 1.2
|
||||
streams_count = 2
|
||||
stream_0/stream = ExtResource("3_ahvcc")
|
||||
stream_1/stream = ExtResource("4_rnjr3")
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_7a23l"]
|
||||
random_pitch = 1.2
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("5_vcg4a")
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_780bu"]
|
||||
radius = 4.0
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_p1r5x"]
|
||||
size = Vector2(8, 5)
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_u1ipw"]
|
||||
size = Vector2(10, 8)
|
||||
|
||||
[node name="Player" type="CharacterBody2D" groups=["player"]]
|
||||
script = ExtResource("1_25cl6")
|
||||
|
||||
[node name="Visuals" type="Node2D" parent="."]
|
||||
position = Vector2(0, 7)
|
||||
|
||||
[node name="MainSprite" type="Sprite2D" parent="Visuals"]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(0, -23)
|
||||
texture = ExtResource("2_jmcfr")
|
||||
hframes = 6
|
||||
vframes = 5
|
||||
frame = 1
|
||||
|
||||
[node name="Animator" type="AnimationPlayer" parent="Visuals"]
|
||||
unique_name_in_owner = true
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_iyggp")
|
||||
}
|
||||
|
||||
[node name="Audio" type="Node2D" parent="."]
|
||||
|
||||
[node name="JumpSound" type="AudioStreamPlayer" parent="Audio"]
|
||||
unique_name_in_owner = true
|
||||
stream = SubResource("AudioStreamRandomizer_wgyg4")
|
||||
bus = &"Effects"
|
||||
|
||||
[node name="HurtSound" type="AudioStreamPlayer" parent="Audio"]
|
||||
unique_name_in_owner = true
|
||||
stream = SubResource("AudioStreamRandomizer_7a23l")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
position = Vector2(0, -4)
|
||||
shape = SubResource("CircleShape2D_780bu")
|
||||
|
||||
[node name="AttackRay" type="ShapeCast2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
shape = SubResource("RectangleShape2D_p1r5x")
|
||||
target_position = Vector2(0, 1)
|
||||
collision_mask = 2
|
||||
collide_with_areas = true
|
||||
collide_with_bodies = false
|
||||
script = ExtResource("6_oefvu")
|
||||
|
||||
[node name="Hurtbox" type="Area2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
collision_mask = 2
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hurtbox"]
|
||||
position = Vector2(0, -4)
|
||||
shape = SubResource("RectangleShape2D_u1ipw")
|
||||
81
prefabs/Items/apple_pickup.tscn
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
[gd_scene load_steps=10 format=3 uid="uid://dn15yopg5ekxa"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bj6chufeyeibu" path="res://Scripts/Items/apple_pickup.gd" id="1_dlhta"]
|
||||
[ext_resource type="Texture2D" uid="uid://c646w8fxcpnlo" path="res://Assets/Visual/Items/apple.png" id="1_n0nxq"]
|
||||
[ext_resource type="Script" uid="uid://58ppxtqvgxmy" path="res://Scripts/Generic/animation_player_play_loop.gd" id="3_r2i6a"]
|
||||
[ext_resource type="AudioStream" uid="uid://c2iv8brn58x4x" path="res://Assets/Audio/SFX/pickup_02.wav" id="4_d1i5d"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_r2i6a"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Sprite2D:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, -6)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_dlhta"]
|
||||
resource_name = "loop"
|
||||
length = 0.8
|
||||
loop_mode = 1
|
||||
step = 0.1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Sprite2D:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.4),
|
||||
"transitions": PackedFloat32Array(0.75, 0.75),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, -8), Vector2(0, -6)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_d1i5d"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_r2i6a"),
|
||||
&"loop": SubResource("Animation_dlhta")
|
||||
}
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_n0nxq"]
|
||||
radius = 8.0
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_r00b0"]
|
||||
random_pitch = 1.2
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("4_d1i5d")
|
||||
|
||||
[node name="ApplePickup" type="Area2D"]
|
||||
collision_layer = 2
|
||||
script = ExtResource("1_dlhta")
|
||||
|
||||
[node name="Visuals" type="Node2D" parent="."]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="Visuals"]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(0, -6)
|
||||
texture = ExtResource("1_n0nxq")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="Visuals"]
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_d1i5d")
|
||||
}
|
||||
script = ExtResource("3_r2i6a")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
position = Vector2(0, -8)
|
||||
shape = SubResource("CircleShape2D_n0nxq")
|
||||
|
||||
[node name="PickupSoundPlayer" type="AudioStreamPlayer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
stream = SubResource("AudioStreamRandomizer_r00b0")
|
||||
bus = &"Effects"
|
||||
|
||||
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
||||
27
prefabs/Items/finish.tscn
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://bnnq2puespaw"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://d18eis4okksih" path="res://Scripts/Items/finish.gd" id="1_vjr45"]
|
||||
[ext_resource type="Texture2D" uid="uid://ca5jn54tsxqpm" path="res://Assets/Visual/Items/finish.png" id="2_47ak6"]
|
||||
[ext_resource type="AudioStream" uid="uid://b5numv44k2cdi" path="res://Assets/Audio/Music/victory.wav" id="3_47ak6"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_lquyx"]
|
||||
size = Vector2(16, 16)
|
||||
|
||||
[node name="Finish" type="Area2D"]
|
||||
script = ExtResource("1_vjr45")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
position = Vector2(0, -8)
|
||||
texture = ExtResource("2_47ak6")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
position = Vector2(0, -8)
|
||||
shape = SubResource("RectangleShape2D_lquyx")
|
||||
|
||||
[node name="VictorySound" type="AudioStreamPlayer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
stream = ExtResource("3_47ak6")
|
||||
volume_db = -8.0
|
||||
bus = &"Music"
|
||||
|
||||
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
||||
76
prefabs/UI/fail_screen.tscn
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://dx3iqfsxsm26a"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://c38vevdvg1rq5" path="res://Scripts/UI/fail_screen.gd" id="1_oharj"]
|
||||
[ext_resource type="Theme" uid="uid://dmha0ysm5urx7" path="res://Assets/Visual/UI/base_theme.tres" id="1_rfk4e"]
|
||||
[ext_resource type="AudioStream" uid="uid://djrkydgktdbqb" path="res://Assets/Audio/SFX/ui_blip_02.wav" id="2_oharj"]
|
||||
|
||||
[node name="FailScreen" type="Control"]
|
||||
process_mode = 2
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_oharj")
|
||||
|
||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||
layer = 110
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="CanvasLayer"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
color = Color(0.101961, 0.109804, 0.172549, 0.752941)
|
||||
|
||||
[node name="Name" type="Label" parent="CanvasLayer"]
|
||||
anchors_preset = 5
|
||||
anchor_left = 0.5
|
||||
anchor_right = 0.5
|
||||
offset_left = -216.0
|
||||
offset_top = 80.0
|
||||
offset_right = 216.0
|
||||
offset_bottom = 118.0
|
||||
grow_horizontal = 2
|
||||
theme = ExtResource("1_rfk4e")
|
||||
theme_override_font_sizes/font_size = 32
|
||||
text = "YOU FAILED"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = 239.0
|
||||
offset_top = 152.0
|
||||
offset_right = -239.0
|
||||
offset_bottom = -104.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
alignment = 1
|
||||
|
||||
[node name="ButtonRetry" type="Button" parent="CanvasLayer/VBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(200, 0)
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_rfk4e")
|
||||
text = "TRY AGAIN"
|
||||
|
||||
[node name="ButtonQuit" type="Button" parent="CanvasLayer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_rfk4e")
|
||||
text = "QUIT
|
||||
"
|
||||
|
||||
[node name="ButtonHoverSound" type="AudioStreamPlayer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
stream = ExtResource("2_oharj")
|
||||
bus = &"Effects"
|
||||
|
||||
[connection signal="button_down" from="CanvasLayer/VBoxContainer/ButtonRetry" to="." method="_on_button_retry_button_down"]
|
||||
[connection signal="focus_entered" from="CanvasLayer/VBoxContainer/ButtonRetry" to="." method="_on_button_retry_focus_entered"]
|
||||
[connection signal="button_down" from="CanvasLayer/VBoxContainer/ButtonQuit" to="." method="_on_button_quit_button_down"]
|
||||
[connection signal="focus_entered" from="CanvasLayer/VBoxContainer/ButtonQuit" to="." method="_on_button_quit_focus_entered"]
|
||||
80
prefabs/UI/hud.tscn
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://bybftuq1lw7b3"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://c8dx103r8mw3y" path="res://Assets/Visual/UI/health_icon.png" id="1_oh2ji"]
|
||||
[ext_resource type="Script" uid="uid://codclvby6ay7g" path="res://Scripts/UI/hud.gd" id="1_xdtoa"]
|
||||
[ext_resource type="Theme" uid="uid://dmha0ysm5urx7" path="res://Assets/Visual/UI/base_theme.tres" id="2_xdtoa"]
|
||||
[ext_resource type="Texture2D" uid="uid://c646w8fxcpnlo" path="res://Assets/Visual/Items/apple.png" id="4_ofty5"]
|
||||
|
||||
[node name="HUD" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_xdtoa")
|
||||
|
||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||
layer = 100
|
||||
|
||||
[node name="Control" type="Control" parent="CanvasLayer"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
offset_right = 112.0
|
||||
offset_bottom = 48.0
|
||||
|
||||
[node name="Health" type="Control" parent="CanvasLayer/Control"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="Icon" type="TextureRect" parent="CanvasLayer/Control/Health"]
|
||||
clip_contents = true
|
||||
layout_mode = 2
|
||||
offset_left = 8.0
|
||||
offset_top = 8.0
|
||||
offset_right = 29.0
|
||||
offset_bottom = 38.0
|
||||
texture = ExtResource("1_oh2ji")
|
||||
|
||||
[node name="HealthNumber" type="Label" parent="CanvasLayer/Control/Health"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 0
|
||||
offset_left = 40.0
|
||||
offset_right = 80.0
|
||||
offset_bottom = 38.0
|
||||
scale = Vector2(3, 3)
|
||||
theme = ExtResource("2_xdtoa")
|
||||
text = "10"
|
||||
|
||||
[node name="Apples" type="Control" parent="CanvasLayer/Control"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_top = 38.0
|
||||
offset_bottom = 38.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="Icon" type="TextureRect" parent="CanvasLayer/Control/Apples"]
|
||||
clip_contents = true
|
||||
layout_mode = 2
|
||||
offset_left = 5.0
|
||||
offset_top = 8.0
|
||||
offset_right = 35.0
|
||||
offset_bottom = 38.0
|
||||
texture = ExtResource("4_ofty5")
|
||||
|
||||
[node name="AppleNumber" type="Label" parent="CanvasLayer/Control/Apples"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 0
|
||||
offset_left = 40.0
|
||||
offset_right = 80.0
|
||||
offset_bottom = 38.0
|
||||
scale = Vector2(3, 3)
|
||||
theme = ExtResource("2_xdtoa")
|
||||
text = "10"
|
||||
64
prefabs/World/moving_platform.tscn
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
[gd_scene load_steps=7 format=3 uid="uid://hadbyy62vq5i"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://dequ0ve5i7ir1" path="res://Assets/Visual/Environments/moving_platform.png" id="1_qjg3h"]
|
||||
[ext_resource type="Script" uid="uid://58ppxtqvgxmy" path="res://Scripts/Generic/animation_player_play_loop.gd" id="2_gl7w6"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_8qe87"]
|
||||
size = Vector2(32, 8)
|
||||
|
||||
[sub_resource type="Animation" id="Animation_qjg3h"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("CharacterBody2D:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 64)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_8lwus"]
|
||||
resource_name = "loop"
|
||||
length = 6.0
|
||||
loop_mode = 1
|
||||
step = 0.1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("CharacterBody2D:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 3),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 0), Vector2(0, 64)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_mtr6x"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_qjg3h"),
|
||||
&"loop": SubResource("Animation_8lwus")
|
||||
}
|
||||
|
||||
[node name="MovingPlatform" type="Node2D"]
|
||||
|
||||
[node name="CharacterBody2D" type="CharacterBody2D" parent="."]
|
||||
position = Vector2(0, 64)
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="CharacterBody2D"]
|
||||
texture = ExtResource("1_qjg3h")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="CharacterBody2D"]
|
||||
position = Vector2(0, -4)
|
||||
shape = SubResource("RectangleShape2D_8qe87")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_mtr6x")
|
||||
}
|
||||
script = ExtResource("2_gl7w6")
|
||||
6
prefabs/data_bus_singleton.tscn
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://c5osqwvkfgnbf"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cbacrk8c1nvin" path="res://Scripts/data_bus_singleton.gd" id="1_g7idq"]
|
||||
|
||||
[node name="DataBusSingleton" type="Node"]
|
||||
script = ExtResource("1_g7idq")
|
||||
3
prefabs/player.tscn
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
[gd_scene format=3 uid="uid://1a7tsdkyl7k0"]
|
||||
|
||||
[node name="Player" type="Node2D" unique_id=1602386697]
|
||||
|
|
@ -8,31 +8,84 @@
|
|||
|
||||
config_version=5
|
||||
|
||||
[animation]
|
||||
|
||||
compatibility/default_parent_skeleton_in_mesh_instance_3d=true
|
||||
|
||||
[application]
|
||||
|
||||
config/name="vdskamagspil-2026t"
|
||||
config/features=PackedStringArray("4.7", "GL Compatibility")
|
||||
config/icon="res://icon.svg"
|
||||
config/name="Minimalist Pixel Platformer"
|
||||
run/main_scene="uid://cvd4jqb08af6c"
|
||||
config/features=PackedStringArray("4.6", "Forward Plus")
|
||||
run/max_fps=60
|
||||
config/icon="uid://bb332l6blaoim"
|
||||
|
||||
[autoload]
|
||||
|
||||
DataBusSingleton="*res://Prefabs/data_bus_singleton.tscn"
|
||||
|
||||
[display]
|
||||
|
||||
window/stretch/mode="canvas_items"
|
||||
window/stretch/aspect="expand"
|
||||
window/size/viewport_width=640
|
||||
window/size/viewport_height=360
|
||||
window/size/window_width_override=1280
|
||||
window/size/window_height_override=720
|
||||
window/stretch/mode="viewport"
|
||||
|
||||
[file_customization]
|
||||
[global_group]
|
||||
|
||||
folder_colors={
|
||||
"res://scenes/": "blue",
|
||||
"res://scripts/": "green",
|
||||
"res://tilesets/": "red"
|
||||
player=""
|
||||
enemy="Group of all enemies and entities that can hurt the player"
|
||||
|
||||
[gui]
|
||||
|
||||
fonts/dynamic_fonts/use_oversampling=false
|
||||
|
||||
[input]
|
||||
|
||||
ui_accept={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194309,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194310,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null)
|
||||
]
|
||||
}
|
||||
move_right={
|
||||
"deadzone": 0.2,
|
||||
"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":68,"key_label":0,"unicode":100,"location":0,"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":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null)
|
||||
]
|
||||
}
|
||||
move_left={
|
||||
"deadzone": 0.2,
|
||||
"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":65,"key_label":0,"unicode":97,"location":0,"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":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null)
|
||||
]
|
||||
}
|
||||
jump={
|
||||
"deadzone": 0.2,
|
||||
"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":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
[layer_names]
|
||||
|
||||
2d_physics/layer_1="Base"
|
||||
2d_physics/layer_2="Entity"
|
||||
2d_physics/layer_3="Item"
|
||||
|
||||
[physics]
|
||||
|
||||
3d/physics_engine="Jolt Physics"
|
||||
2d/physics_engine="GodotPhysics2D"
|
||||
|
||||
[rendering]
|
||||
|
||||
rendering_device/driver.windows="d3d12"
|
||||
textures/canvas_textures/default_texture_filter=3
|
||||
renderer/rendering_method="gl_compatibility"
|
||||
renderer/rendering_method.mobile="gl_compatibility"
|
||||
textures/decals/filter=0
|
||||
textures/light_projectors/filter=0
|
||||
|
|
|
|||
264
scenes/level.tscn
Normal file
92
scenes/main_menu.tscn
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://cvd4jqb08af6c"]
|
||||
|
||||
[ext_resource type="Theme" uid="uid://dmha0ysm5urx7" path="res://Assets/Visual/UI/base_theme.tres" id="1_28flt"]
|
||||
[ext_resource type="Script" uid="uid://cm47jdsrt4rqd" path="res://Scripts/UI/main_menu.gd" id="1_48xlc"]
|
||||
[ext_resource type="PackedScene" uid="uid://bvam4vqfwqmfl" path="res://Scenes/level.tscn" id="2_ce3w2"]
|
||||
[ext_resource type="AudioStream" uid="uid://djrkydgktdbqb" path="res://Assets/Audio/SFX/ui_blip_02.wav" id="3_1ehe0"]
|
||||
|
||||
[node name="MainMenu" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_48xlc")
|
||||
level = ExtResource("2_ce3w2")
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
color = Color(0.101961, 0.109804, 0.172549, 1)
|
||||
|
||||
[node name="Name" type="Label" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 5
|
||||
anchor_left = 0.5
|
||||
anchor_right = 0.5
|
||||
offset_left = -216.0
|
||||
offset_top = 80.0
|
||||
offset_right = 216.0
|
||||
offset_bottom = 118.0
|
||||
grow_horizontal = 2
|
||||
theme = ExtResource("1_28flt")
|
||||
theme_override_font_sizes/font_size = 48
|
||||
text = "MINIMAL PIXEL PLATFORMER"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="Name2" type="Label" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 5
|
||||
anchor_left = 0.5
|
||||
anchor_right = 0.5
|
||||
offset_left = -216.0
|
||||
offset_top = 112.0
|
||||
offset_right = 216.0
|
||||
offset_bottom = 150.0
|
||||
grow_horizontal = 2
|
||||
theme = ExtResource("1_28flt")
|
||||
theme_override_font_sizes/font_size = 32
|
||||
text = "created by @chroma_dave"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = 272.0
|
||||
offset_top = 152.0
|
||||
offset_right = -272.0
|
||||
offset_bottom = -104.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
alignment = 1
|
||||
|
||||
[node name="ButtonPlay" type="Button" parent="VBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_28flt")
|
||||
text = "PLAY"
|
||||
|
||||
[node name="ButtonQuit" type="Button" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_28flt")
|
||||
text = "QUIT
|
||||
"
|
||||
|
||||
[node name="ButtonHoverSound" type="AudioStreamPlayer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
stream = ExtResource("3_1ehe0")
|
||||
bus = &"Effects"
|
||||
|
||||
[connection signal="button_down" from="VBoxContainer/ButtonPlay" to="." method="_on_button_play_button_down"]
|
||||
[connection signal="focus_entered" from="VBoxContainer/ButtonPlay" to="." method="_on_button_play_focus_entered"]
|
||||
[connection signal="button_down" from="VBoxContainer/ButtonQuit" to="." method="_on_button_quit_button_down"]
|
||||
[connection signal="focus_entered" from="VBoxContainer/ButtonQuit" to="." method="_on_button_quit_focus_entered"]
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
[gd_scene format=3 uid="uid://dth6u45uf1t3c"]
|
||||
[gd_scene format=3 uid="uid://dxdk24hv5fs7s"]
|
||||
|
||||
[node name="MainScene" type="Node2D" unique_id=823166666]
|
||||
|
|
|
|||
11
scenes/piano.gd
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
extends AnimatedSprite2D
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
play("default")
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
1
scenes/piano.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://dmr7e7dpqf0nc
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://ghwesfieu2r5"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://0vqlvjw0m521" path="res://scripts/vigel.gd" id="1_d1u2y"]
|
||||
|
||||
[node name="Ranya" type="Node2D" unique_id=1593700828]
|
||||
script = ExtResource("1_d1u2y")
|
||||
16
scripts/Characters/Enemy/attack_box.gd
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
extends Area2D
|
||||
|
||||
@onready var character = get_parent()
|
||||
var damage = 1
|
||||
|
||||
func _on_area_entered(target: Area2D) -> void:
|
||||
|
||||
# Damage target area if it has _take_damage method
|
||||
if target.has_method("_take_damage"):
|
||||
target._take_damage(damage)
|
||||
character._take_damage()
|
||||
|
||||
# Damage target area parent if it has _take_damage method
|
||||
if target.get_parent().has_method("_take_damage"):
|
||||
target.get_parent()._take_damage(damage)
|
||||
character._take_damage()
|
||||
1
scripts/Characters/Enemy/attack_box.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://dekx8meo31r21
|
||||
59
scripts/Characters/Enemy/enemy_ground.gd
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
extends CharacterBody2D
|
||||
|
||||
@export var speed: float = 40.0
|
||||
var move_right = true
|
||||
|
||||
|
||||
@onready var ground_ray_left = %GroundRayLeft
|
||||
@onready var ground_ray_right = %GroundRayRight
|
||||
@onready var wall_ray_left = %WallRayLeft
|
||||
@onready var wall_ray_right = %WallRayRight
|
||||
|
||||
@onready var attack_box = %AttackBox
|
||||
|
||||
@onready var animator = %Animator
|
||||
@onready var sprite = %Sprite
|
||||
|
||||
@onready var death_sound_player: AudioStreamPlayer = %DeathSoundPlayer
|
||||
|
||||
func _ready() -> void:
|
||||
animator.play("walk")
|
||||
|
||||
func _physics_process(delta):
|
||||
# Set the velocity to move in the given direction
|
||||
if !wall_ray_left.is_colliding() and !wall_ray_right.is_colliding():
|
||||
if !ground_ray_left.is_colliding() or !ground_ray_right.is_colliding():
|
||||
if velocity.x >0:
|
||||
move_right = false
|
||||
else :
|
||||
move_right = true
|
||||
else:
|
||||
if velocity.x >0:
|
||||
move_right = false
|
||||
else :
|
||||
move_right = true
|
||||
|
||||
if move_right:
|
||||
velocity.x = 1 * speed
|
||||
else :
|
||||
velocity.x = -1 * speed
|
||||
|
||||
# Optionally, flip the sprite to face the new direction
|
||||
sprite.flip_h = !move_right
|
||||
|
||||
# Move the enemy according to the velocity
|
||||
move_and_slide()
|
||||
|
||||
func _take_damage():
|
||||
# Disable attack box so it can't hurt the player
|
||||
attack_box.monitoring = false
|
||||
|
||||
death_sound_player.play()
|
||||
|
||||
# Blink red
|
||||
sprite.modulate = Color(255, 0,0)
|
||||
|
||||
# Delay death
|
||||
await get_tree().create_timer(0.1).timeout
|
||||
|
||||
queue_free()
|
||||
1
scripts/Characters/Enemy/enemy_ground.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://ow780v11j4gt
|
||||
17
scripts/Characters/PlayerCharacter/attack_ray.gd
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
extends ShapeCast2D
|
||||
|
||||
@onready var character = get_parent()
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
if get_collider(0):
|
||||
if character.velocity.y > 0 and get_collider(0):
|
||||
var target = get_collider(0)
|
||||
|
||||
# Damage target if it has _take_damage method
|
||||
if target.has_method("_take_damage"):
|
||||
target._take_damage()
|
||||
character.velocity.y = -300
|
||||
# Damage target parent if it has _take_damage method
|
||||
elif target.get_parent().has_method("_take_damage"):
|
||||
target.get_parent()._take_damage()
|
||||
character.velocity.y = -300
|
||||
1
scripts/Characters/PlayerCharacter/attack_ray.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://5p5u8dtod1cj
|
||||
185
scripts/Characters/PlayerCharacter/player.gd
Normal file
|
|
@ -0,0 +1,185 @@
|
|||
extends CharacterBody2D
|
||||
|
||||
# === Stat Settings ===
|
||||
@export var health = 3
|
||||
|
||||
# === Movement Settings ===
|
||||
@export var speed: float = 100.0
|
||||
@export var jump_velocity: float = -300.0
|
||||
@export var gravity: float = 1200.0
|
||||
@export var max_fall_speed: float = 1200.0
|
||||
|
||||
# === Jump Features ===
|
||||
@export var coyote_time: float = 0.15
|
||||
@export var jump_buffer_time: float = 0.15
|
||||
|
||||
# === Double Jump ===
|
||||
@export var allow_double_jump: bool = true
|
||||
@export var max_jumps: int = 2 # 1 = normal jump only, 2 = double jump, etc.
|
||||
var jumps_left: int = 0
|
||||
|
||||
# === Animation Lock ===
|
||||
@export var landing_animation_duration: float = 0.1
|
||||
|
||||
# === Internal Timers ===
|
||||
var coyote_timer: float = 0.0
|
||||
var jump_buffer_timer: float = 0.0
|
||||
var jump_cutoff_timer: float = 0.0
|
||||
var landing_lock_timer: float = 0.0
|
||||
|
||||
var was_on_floor: bool = false
|
||||
|
||||
# === Nodes ===
|
||||
@onready var sprite: Sprite2D = %MainSprite
|
||||
@onready var animator: AnimationPlayer = %Animator
|
||||
@onready var attack_ray: ShapeCast2D = %AttackRay
|
||||
|
||||
@onready var jump_audio_player: AudioStreamPlayer = %JumpSound
|
||||
@onready var hurt_audio_player: AudioStreamPlayer = %HurtSound
|
||||
|
||||
func _ready() -> void:
|
||||
DataBusSingleton.player = self
|
||||
|
||||
func _physics_process(delta):
|
||||
# === Handle Timers ===
|
||||
_update_timers(delta)
|
||||
|
||||
# === Handle Input ===
|
||||
var direction = Input.get_axis("move_left", "move_right")
|
||||
var is_jumping = Input.is_action_just_pressed("jump")
|
||||
var holding_jump = Input.is_action_pressed("jump")
|
||||
|
||||
# === Horizontal Movement ===
|
||||
velocity.x = direction * speed
|
||||
|
||||
# === Jump Logic ===
|
||||
_process_jump(is_jumping, holding_jump)
|
||||
|
||||
# === Apply Gravity ===
|
||||
_apply_gravity(delta)
|
||||
|
||||
# === Movement ===
|
||||
move_and_slide()
|
||||
|
||||
# === Landing Detection ===
|
||||
_check_landing()
|
||||
|
||||
# === Sprite Orientation ===
|
||||
_flip_sprite()
|
||||
|
||||
# === Play Animations ===
|
||||
_play_animations(direction)
|
||||
|
||||
# === Update Data Bus ===
|
||||
_update_data_bus()
|
||||
|
||||
# === Debug ===
|
||||
_debug(true) # Change to false to disable
|
||||
|
||||
# --------------------------
|
||||
# === HELPER FUNCTIONS ===
|
||||
# --------------------------
|
||||
|
||||
func _update_timers(delta):
|
||||
if is_on_floor():
|
||||
coyote_timer = coyote_time
|
||||
else:
|
||||
coyote_timer -= delta
|
||||
|
||||
if Input.is_action_just_pressed("jump"):
|
||||
jump_buffer_timer = jump_buffer_time
|
||||
jump_audio_player.play()
|
||||
else:
|
||||
jump_buffer_timer -= delta
|
||||
|
||||
jump_cutoff_timer = max(jump_cutoff_timer - delta, 0.0)
|
||||
landing_lock_timer = max(landing_lock_timer - delta, 0.0)
|
||||
|
||||
func _process_jump(is_jumping: bool, holding_jump: bool):
|
||||
if is_jumping:
|
||||
# Ground or coyote jump
|
||||
if (coyote_timer > 0.0 or is_on_floor()) and jumps_left > 0:
|
||||
velocity.y = jump_velocity
|
||||
jump_buffer_timer = 0.0
|
||||
coyote_timer = 0.0
|
||||
jump_cutoff_timer = 0.0
|
||||
jumps_left -= 1
|
||||
# Mid-air jump (double jump)
|
||||
elif allow_double_jump and jumps_left > 0:
|
||||
velocity.y = jump_velocity
|
||||
jumps_left -= 1
|
||||
jump_cutoff_timer = 0.0
|
||||
jump_buffer_timer = 0.0
|
||||
|
||||
# Variable Jump Height (cutoff when button released early)
|
||||
if jump_cutoff_timer <= 0.0 and not holding_jump and velocity.y < 0:
|
||||
velocity.y *= 0.5
|
||||
|
||||
func _apply_gravity(delta):
|
||||
velocity.y += gravity * delta
|
||||
if velocity.y > max_fall_speed:
|
||||
velocity.y = max_fall_speed
|
||||
|
||||
func _check_landing():
|
||||
var just_landed = not was_on_floor and is_on_floor()
|
||||
was_on_floor = is_on_floor()
|
||||
|
||||
if just_landed:
|
||||
landing_lock_timer = landing_animation_duration
|
||||
animator.play("land")
|
||||
jumps_left = max_jumps # Reset jumps on landing
|
||||
|
||||
# Also reset on floor contact in general
|
||||
if is_on_floor():
|
||||
jumps_left = max_jumps
|
||||
|
||||
func _flip_sprite():
|
||||
if velocity.x < -1:
|
||||
sprite.flip_h = true
|
||||
elif velocity.x > 1:
|
||||
sprite.flip_h = false
|
||||
|
||||
func _play_animations(direction):
|
||||
if landing_lock_timer > 0.0:
|
||||
return
|
||||
|
||||
if not is_on_floor():
|
||||
animator.play("jump")
|
||||
elif abs(velocity.x) > 1:
|
||||
animator.play("run")
|
||||
else:
|
||||
animator.play("idle")
|
||||
|
||||
# Change animation speed based on movement speed for the run animation
|
||||
# so it doesn't animate at full speed when walking slowly
|
||||
if animator.current_animation == "run":
|
||||
animator.speed_scale = abs(direction)
|
||||
else:
|
||||
animator.speed_scale = 1.0
|
||||
|
||||
func _update_data_bus():
|
||||
# Updates DataBusSingleton - an autoload scene for transfering data between scenes
|
||||
DataBusSingleton.player_health = health
|
||||
|
||||
func _debug(enabled):
|
||||
# If enabled prints out various metrics
|
||||
if enabled:
|
||||
print("Health: ", health)
|
||||
print("Velocity X and Y: ", velocity)
|
||||
print("Jumps Left: ", jumps_left)
|
||||
|
||||
func _take_damage(damage):
|
||||
# Function activated from other nodes
|
||||
health -= damage
|
||||
|
||||
# Change sprite color to solid red and play hurt sound
|
||||
sprite.modulate = Color(255, 0, 0, 255)
|
||||
hurt_audio_player.play()
|
||||
|
||||
# If health is lower than 1 - die
|
||||
if health < 1:
|
||||
DataBusSingleton._spawn_fail_screen()
|
||||
|
||||
# Wait a bit for color to reset
|
||||
await get_tree().create_timer(0.1).timeout
|
||||
sprite.modulate = Color(1, 1, 1, 1)
|
||||
1
scripts/Characters/PlayerCharacter/player.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://dt3v7jvorf4o3
|
||||
5
scripts/Generic/animation_player_play_loop.gd
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
extends AnimationPlayer
|
||||
|
||||
func _ready() -> void:
|
||||
# Simply play looping animation
|
||||
play("loop")
|
||||
1
scripts/Generic/animation_player_play_loop.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://58ppxtqvgxmy
|
||||
5
scripts/Generic/level.gd
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
extends Node2D
|
||||
|
||||
func _ready() -> void:
|
||||
# Update DataBusSingleton - an autoload scene
|
||||
DataBusSingleton.current_scene = self
|
||||
1
scripts/Generic/level.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://bwc7lnpu6py3j
|
||||
20
scripts/Items/apple_pickup.gd
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
extends Area2D
|
||||
|
||||
@onready var sprite: Sprite2D = %Sprite2D
|
||||
@onready var pickup_sound_player = %PickupSoundPlayer
|
||||
|
||||
func _on_body_entered(body: Node2D) -> void:
|
||||
if body.is_in_group("player"):
|
||||
|
||||
# Update DataBusSingleton
|
||||
DataBusSingleton.apples_collected += 1
|
||||
|
||||
# Disable the collision and visuals for the apple
|
||||
monitoring = false
|
||||
sprite.visible = false
|
||||
pickup_sound_player.play()
|
||||
|
||||
# Wait for a bit so the sound plays fully
|
||||
await get_tree().create_timer(0.2).timeout
|
||||
|
||||
queue_free()
|
||||
1
scripts/Items/apple_pickup.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://bj6chufeyeibu
|
||||
17
scripts/Items/finish.gd
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
extends Area2D
|
||||
|
||||
@export var ending_delay:float = 3.0
|
||||
@onready var victory_sound_player = %VictorySound
|
||||
|
||||
func _on_body_entered(body: Node2D) -> void:
|
||||
if body.is_in_group("player"):
|
||||
_victory()
|
||||
|
||||
func _victory():
|
||||
victory_sound_player.play()
|
||||
|
||||
# Wait for a bit so the sound plays fully
|
||||
await get_tree().create_timer(ending_delay).timeout
|
||||
|
||||
# Change scene to main menu
|
||||
get_tree().change_scene_to_file("res://Scenes/main_menu.tscn")
|
||||
1
scripts/Items/finish.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://d18eis4okksih
|
||||
24
scripts/UI/fail_screen.gd
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
extends Control
|
||||
|
||||
@onready var retry_button = %ButtonRetry
|
||||
@onready var button_hover_sound_player = %ButtonHoverSound
|
||||
|
||||
func _ready() -> void:
|
||||
retry_button.grab_focus()
|
||||
get_tree().paused = true
|
||||
|
||||
func _on_button_retry_button_down() -> void:
|
||||
get_tree().paused = false
|
||||
get_tree().reload_current_scene()
|
||||
|
||||
func _on_button_quit_button_down() -> void:
|
||||
get_tree().quit()
|
||||
|
||||
func _on_button_retry_focus_entered() -> void:
|
||||
_play_button_sound()
|
||||
|
||||
func _on_button_quit_focus_entered() -> void:
|
||||
_play_button_sound()
|
||||
|
||||
func _play_button_sound():
|
||||
button_hover_sound_player.play()
|
||||
1
scripts/UI/fail_screen.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://c38vevdvg1rq5
|
||||
14
scripts/UI/hud.gd
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
extends Control
|
||||
|
||||
@onready var health_number_label = %HealthNumber
|
||||
@onready var apples_number_label = %AppleNumber
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
|
||||
# Update UI based on information from DataBusSingleton
|
||||
|
||||
var player_health = DataBusSingleton.player_health
|
||||
var apples = DataBusSingleton.apples_collected
|
||||
|
||||
health_number_label.text = str(player_health)
|
||||
apples_number_label.text = str(apples)
|
||||
1
scripts/UI/hud.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://codclvby6ay7g
|
||||
25
scripts/UI/main_menu.gd
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
extends Control
|
||||
|
||||
@export var level:PackedScene
|
||||
|
||||
@onready var play_button = %ButtonPlay
|
||||
@onready var button_hover_sound_player = %ButtonHoverSound
|
||||
|
||||
func _ready() -> void:
|
||||
play_button.grab_focus()
|
||||
|
||||
|
||||
func _on_button_play_button_down() -> void:
|
||||
get_tree().change_scene_to_packed(level)
|
||||
|
||||
func _on_button_quit_button_down() -> void:
|
||||
get_tree().quit()
|
||||
|
||||
func _on_button_play_focus_entered() -> void:
|
||||
_play_button_sound()
|
||||
|
||||
func _on_button_quit_focus_entered() -> void:
|
||||
_play_button_sound()
|
||||
|
||||
func _play_button_sound():
|
||||
button_hover_sound_player.play()
|
||||
1
scripts/UI/main_menu.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://cm47jdsrt4rqd
|
||||
27
scripts/data_bus_singleton.gd
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
extends Node
|
||||
|
||||
@onready var fail_screen = preload("res://Prefabs/UI/fail_screen.tscn")
|
||||
|
||||
# Data collected from various scenes
|
||||
# current_scene is updated from level.gd on _ready()
|
||||
var current_scene
|
||||
|
||||
# player is updated from player.gd on _ready()
|
||||
var player
|
||||
# player is updated continously from player.gd
|
||||
var player_health = 0
|
||||
# apples_collected is updated when apple is picked up
|
||||
var apples_collected = 0
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
|
||||
# Exchange 5 apples for 1 health
|
||||
if apples_collected >= 5:
|
||||
apples_collected = 0
|
||||
player.health += 1
|
||||
|
||||
# _spawn_fail_screen is called from player.gd when health goes under 1
|
||||
func _spawn_fail_screen():
|
||||
# Spawns fails screen
|
||||
var fail_screen_instance = fail_screen.instantiate()
|
||||
current_scene.add_child(fail_screen_instance)
|
||||