Quellcode durchsuchen

Remake art assets of the 2D platformer demo

valentinas vor 2 Jahren
Ursprung
Commit
c17d803a1b
78 geänderte Dateien mit 1430 neuen und 599 gelöschten Zeilen
  1. BIN
      2d/platformer/assets/art/background/cloud_1.png
  2. BIN
      2d/platformer/assets/art/background/cloud_2.png
  3. BIN
      2d/platformer/assets/art/background/cloud_3.png
  4. BIN
      2d/platformer/assets/art/background/distant_platforms_1.png
  5. BIN
      2d/platformer/assets/art/background/distant_platforms_2.png
  6. BIN
      2d/platformer/assets/art/background/sky.png
  7. BIN
      2d/platformer/assets/art/coin/coin.png
  8. BIN
      2d/platformer/assets/art/enemy/enemy.png
  9. BIN
      2d/platformer/assets/art/platforms/moving_platform.png
  10. BIN
      2d/platformer/assets/art/platforms/one_way_platform.png
  11. BIN
      2d/platformer/assets/art/player/bullet/bullet.png
  12. BIN
      2d/platformer/assets/art/player/robot.png
  13. 3 3
      2d/platformer/assets/art/player/robot.png.import
  14. BIN
      2d/platformer/assets/art/player/robot_demo.png
  15. BIN
      2d/platformer/assets/art/props/bush_1.png
  16. 35 0
      2d/platformer/assets/art/props/bush_1.png.import
  17. BIN
      2d/platformer/assets/art/props/fern_1.png
  18. 35 0
      2d/platformer/assets/art/props/fern_1.png.import
  19. BIN
      2d/platformer/assets/art/props/flower_1.png
  20. 35 0
      2d/platformer/assets/art/props/flower_1.png.import
  21. BIN
      2d/platformer/assets/art/props/grass_1.png
  22. 35 0
      2d/platformer/assets/art/props/grass_1.png.import
  23. BIN
      2d/platformer/assets/art/props/grass_2.png
  24. 35 0
      2d/platformer/assets/art/props/grass_2.png.import
  25. BIN
      2d/platformer/assets/art/props/grass_3.png
  26. 35 0
      2d/platformer/assets/art/props/grass_3.png.import
  27. BIN
      2d/platformer/assets/art/props/ground_flowers_1.png
  28. 35 0
      2d/platformer/assets/art/props/ground_flowers_1.png.import
  29. BIN
      2d/platformer/assets/art/props/rock_1.png
  30. 35 0
      2d/platformer/assets/art/props/rock_1.png.import
  31. BIN
      2d/platformer/assets/art/props/tree_1.png
  32. 35 0
      2d/platformer/assets/art/props/tree_1.png.import
  33. BIN
      2d/platformer/assets/art/props/tree_2.png
  34. 35 0
      2d/platformer/assets/art/props/tree_2.png.import
  35. BIN
      2d/platformer/assets/art/props/vine_1.png
  36. 35 0
      2d/platformer/assets/art/props/vine_1.png.import
  37. BIN
      2d/platformer/assets/art/props/vine_2.png
  38. 35 0
      2d/platformer/assets/art/props/vine_2.png.import
  39. BIN
      2d/platformer/assets/art/tileset/tiles_demo.png
  40. 352 232
      2d/platformer/assets/art/tileset/tileset.tres
  41. BIN
      2d/platformer/assets/art/ui/touch_button_fire.png
  42. BIN
      2d/platformer/assets/art/ui/touch_button_jump.png
  43. BIN
      2d/platformer/assets/art/ui/touch_button_left.png
  44. BIN
      2d/platformer/assets/art/ui/touch_button_right.png
  45. 3 1
      2d/platformer/assets/audio/sfx/coin_pickup.wav.import
  46. 3 1
      2d/platformer/assets/audio/sfx/explode.wav.import
  47. 3 1
      2d/platformer/assets/audio/sfx/hit.wav.import
  48. 3 1
      2d/platformer/assets/audio/sfx/jump.wav.import
  49. 3 1
      2d/platformer/assets/audio/sfx/shoot.wav.import
  50. 58 0
      2d/platformer/assets/shaders/wind_sway.tres
  51. 46 25
      2d/platformer/assets/theme/user_interface.tres
  52. BIN
      2d/platformer/icon.png
  53. 9 8
      2d/platformer/project.godot
  54. 0 55
      2d/platformer/src/Level/Level.tscn
  55. 0 21
      2d/platformer/src/Platforms/Platform.tscn
  56. 0 60
      2d/platformer/src/UserInterface/CoinsCounter.tscn
  57. 0 0
      2d/platformer/src/actors/actor.gd
  58. 3 2
      2d/platformer/src/actors/enemy.gd
  59. 22 9
      2d/platformer/src/actors/enemy.tscn
  60. 2 2
      2d/platformer/src/actors/gun.gd
  61. 7 6
      2d/platformer/src/actors/player.gd
  62. 56 56
      2d/platformer/src/actors/player.tscn
  63. 0 0
      2d/platformer/src/level/level.gd
  64. 71 0
      2d/platformer/src/level/level.tscn
  65. 0 0
      2d/platformer/src/level/music.gd
  66. 65 83
      2d/platformer/src/level/parallax_background.tscn
  67. 0 0
      2d/platformer/src/main/game.gd
  68. 8 5
      2d/platformer/src/main/game.tscn
  69. 5 5
      2d/platformer/src/main/split_screen.tscn
  70. 0 0
      2d/platformer/src/objects/bullet.gd
  71. 5 2
      2d/platformer/src/objects/bullet.tscn
  72. 0 0
      2d/platformer/src/objects/coin.gd
  73. 10 8
      2d/platformer/src/objects/coin.tscn
  74. 178 0
      2d/platformer/src/platforms/platform.tscn
  75. 0 0
      2d/platformer/src/ui/coins_counter.gd
  76. 89 0
      2d/platformer/src/ui/coins_counter.tscn
  77. 0 0
      2d/platformer/src/ui/pause_menu.gd
  78. 6 12
      2d/platformer/src/ui/pause_menu.tscn

BIN
2d/platformer/assets/art/background/cloud_1.png


BIN
2d/platformer/assets/art/background/cloud_2.png


BIN
2d/platformer/assets/art/background/cloud_3.png


BIN
2d/platformer/assets/art/background/distant_platforms_1.png


BIN
2d/platformer/assets/art/background/distant_platforms_2.png


BIN
2d/platformer/assets/art/background/sky.png


BIN
2d/platformer/assets/art/coin/coin.png


BIN
2d/platformer/assets/art/enemy/enemy.png


BIN
2d/platformer/assets/art/platforms/moving_platform.png


BIN
2d/platformer/assets/art/platforms/one_way_platform.png


BIN
2d/platformer/assets/art/player/bullet/bullet.png


BIN
2d/platformer/assets/art/player/robot.png


+ 3 - 3
2d/platformer/assets/art/player/robot_demo.png.import → 2d/platformer/assets/art/player/robot.png.import

@@ -2,15 +2,15 @@
 
 importer="texture"
 type="StreamTexture"
-path="res://.import/robot_demo.png-cd7cbcf6d0c47d4a233ea7ce93b142c2.stex"
+path="res://.import/robot.png-27287450bd4c41a095bcac0b0e7c1704.stex"
 metadata={
 "vram_texture": false
 }
 
 [deps]
 
-source_file="res://assets/art/player/robot_demo.png"
-dest_files=[ "res://.import/robot_demo.png-cd7cbcf6d0c47d4a233ea7ce93b142c2.stex" ]
+source_file="res://assets/art/player/robot.png"
+dest_files=[ "res://.import/robot.png-27287450bd4c41a095bcac0b0e7c1704.stex" ]
 
 [params]
 

BIN
2d/platformer/assets/art/player/robot_demo.png


BIN
2d/platformer/assets/art/props/bush_1.png


+ 35 - 0
2d/platformer/assets/art/props/bush_1.png.import

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

BIN
2d/platformer/assets/art/props/fern_1.png


+ 35 - 0
2d/platformer/assets/art/props/fern_1.png.import

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

BIN
2d/platformer/assets/art/props/flower_1.png


+ 35 - 0
2d/platformer/assets/art/props/flower_1.png.import

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

BIN
2d/platformer/assets/art/props/grass_1.png


+ 35 - 0
2d/platformer/assets/art/props/grass_1.png.import

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

BIN
2d/platformer/assets/art/props/grass_2.png


+ 35 - 0
2d/platformer/assets/art/props/grass_2.png.import

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

BIN
2d/platformer/assets/art/props/grass_3.png


+ 35 - 0
2d/platformer/assets/art/props/grass_3.png.import

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

BIN
2d/platformer/assets/art/props/ground_flowers_1.png


+ 35 - 0
2d/platformer/assets/art/props/ground_flowers_1.png.import

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

BIN
2d/platformer/assets/art/props/rock_1.png


+ 35 - 0
2d/platformer/assets/art/props/rock_1.png.import

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

BIN
2d/platformer/assets/art/props/tree_1.png


+ 35 - 0
2d/platformer/assets/art/props/tree_1.png.import

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

BIN
2d/platformer/assets/art/props/tree_2.png


+ 35 - 0
2d/platformer/assets/art/props/tree_2.png.import

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

BIN
2d/platformer/assets/art/props/vine_1.png


+ 35 - 0
2d/platformer/assets/art/props/vine_1.png.import

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

BIN
2d/platformer/assets/art/props/vine_2.png


+ 35 - 0
2d/platformer/assets/art/props/vine_2.png.import

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

BIN
2d/platformer/assets/art/tileset/tiles_demo.png


+ 352 - 232
2d/platformer/assets/art/tileset/tileset.tres

@@ -1,230 +1,77 @@
-[gd_resource type="TileSet" load_steps=14 format=2]
+[gd_resource type="TileSet" load_steps=19 format=2]
 
 [ext_resource path="res://assets/art/tileset/tiles_demo.png" type="Texture" id=1]
 
-[sub_resource type="ConvexPolygonShape2D" id=1]
-points = PoolVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 )
+[sub_resource type="ConvexPolygonShape2D" id=8]
+points = PoolVector2Array( 0, 10, 64, 10, 64, 64, 0, 64 )
 
-[sub_resource type="ConvexPolygonShape2D" id=2]
-points = PoolVector2Array( 0, 6, 28, 6, 28, 32, 0, 32 )
+[sub_resource type="ConvexPolygonShape2D" id=9]
+points = PoolVector2Array( 0, 10, 64, 10, 64, 46, 0, 46 )
 
-[sub_resource type="ConvexPolygonShape2D" id=3]
-points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
+[sub_resource type="ConvexPolygonShape2D" id=10]
+points = PoolVector2Array( 0, 10, 64, 10, 64, 43, 0, 43 )
 
-[sub_resource type="ConvexPolygonShape2D" id=4]
-points = PoolVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 )
+[sub_resource type="ConvexPolygonShape2D" id=11]
+points = PoolVector2Array( 0, 0, 64, 0, 64, 64, 0, 64 )
 
-[sub_resource type="ConvexPolygonShape2D" id=5]
-points = PoolVector2Array( 32, 38, 32, 64, 0, 64, 0, 6 )
+[sub_resource type="ConvexPolygonShape2D" id=12]
+points = PoolVector2Array( 0, 0, 64, 0, 64, 64, 0, 64 )
 
-[sub_resource type="ConvexPolygonShape2D" id=6]
-points = PoolVector2Array( 0, 0, 28, 0, 28, 32, 0, 32 )
+[sub_resource type="ConvexPolygonShape2D" id=13]
+points = PoolVector2Array( 0, 0, 64, 0, 64, 64, 0, 64 )
 
 [sub_resource type="ConvexPolygonShape2D" id=7]
-points = PoolVector2Array( 28, 6, 32, 6, 32, 32, 0, 32, 0, 0, 28, 0 )
+points = PoolVector2Array( 0, 47.2426, 0, 7.25462, 58.1805, 64, 0, 64 )
 
-[sub_resource type="ConvexPolygonShape2D" id=8]
-points = PoolVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 )
+[sub_resource type="ConvexPolygonShape2D" id=14]
+points = PoolVector2Array( 0, 0, 64, 0, 64, 64, 0, 64 )
 
-[sub_resource type="ConvexPolygonShape2D" id=9]
-points = PoolVector2Array( 0, 6, 28, 6, 28, 32, 0, 32 )
+[sub_resource type="ConvexPolygonShape2D" id=15]
+points = PoolVector2Array( 0, 10, 64, 10, 64, 64, 0, 64 )
 
-[sub_resource type="ConvexPolygonShape2D" id=10]
-points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
+[sub_resource type="ConvexPolygonShape2D" id=16]
+points = PoolVector2Array( 0, 10, 64, 10, 64, 64, 0, 64 )
 
-[sub_resource type="ConvexPolygonShape2D" id=11]
-points = PoolVector2Array( 0, 0, 32, 0, 32, 24, 0, 24 )
+[sub_resource type="ConvexPolygonShape2D" id=17]
+points = PoolVector2Array( 0, 10, 64, 10, 64, 64, 0, 64 )
 
-[sub_resource type="ConvexPolygonShape2D" id=12]
-points = PoolVector2Array( 0, 0, 28, 0, 28, 24, 0, 24 )
+[sub_resource type="ConvexPolygonShape2D" id=18]
+points = PoolVector2Array( 0, 0, 64, 0, 64, 64, 0, 64 )
+
+[sub_resource type="ConvexPolygonShape2D" id=19]
+points = PoolVector2Array( 0, 0, 64, 0, 64, 64, 0, 64 )
+
+[sub_resource type="ConvexPolygonShape2D" id=20]
+points = PoolVector2Array( 0, 0, 64, 0, 64, 64, 0, 64 )
+
+[sub_resource type="ConvexPolygonShape2D" id=21]
+points = PoolVector2Array( 0, 0, 64, 0, 64, 64, 0, 64 )
+
+[sub_resource type="ConvexPolygonShape2D" id=22]
+points = PoolVector2Array( 0, 0, 64, 0, 64, 64, 0, 64 )
+
+[sub_resource type="ConvexPolygonShape2D" id=23]
+points = PoolVector2Array( 0, 10, 64, 10, 64, 64, 0, 64 )
 
 [resource]
-0/name = "ground"
-0/texture = ExtResource( 1 )
-0/tex_offset = Vector2( 0, 0 )
-0/modulate = Color( 1, 1, 1, 1 )
-0/region = Rect2( 0, 0, 32, 32 )
-0/tile_mode = 0
-0/occluder_offset = Vector2( 0, 0 )
-0/navigation_offset = Vector2( 0, 0 )
-0/shape_offset = Vector2( 0, 0 )
-0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-0/shape = SubResource( 1 )
-0/shape_one_way = false
-0/shape_one_way_margin = 1.0
-0/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 1 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-0/z_index = 0
-1/name = "ground_end"
-1/texture = ExtResource( 1 )
-1/tex_offset = Vector2( 0, 0 )
-1/modulate = Color( 1, 1, 1, 1 )
-1/region = Rect2( 32, 0, 32, 32 )
-1/tile_mode = 0
-1/occluder_offset = Vector2( 0, 0 )
-1/navigation_offset = Vector2( 0, 0 )
-1/shape_offset = Vector2( 0, 0 )
-1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-1/shape = SubResource( 2 )
-1/shape_one_way = false
-1/shape_one_way_margin = 1.0
-1/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 2 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-1/z_index = 0
-2/name = "slope"
-2/texture = ExtResource( 1 )
-2/tex_offset = Vector2( 0, 0 )
-2/modulate = Color( 1, 1, 1, 1 )
-2/region = Rect2( 64, 64, 32, 64 )
-2/tile_mode = 0
-2/occluder_offset = Vector2( 0, 0 )
-2/navigation_offset = Vector2( 0, 0 )
-2/shape_offset = Vector2( 0, 0 )
-2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-2/shape = SubResource( 5 )
-2/shape_one_way = false
-2/shape_one_way_margin = 1.0
-2/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 5 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-2/z_index = 0
-3/name = "wall"
-3/texture = ExtResource( 1 )
-3/tex_offset = Vector2( 0, 0 )
-3/modulate = Color( 1, 1, 1, 1 )
-3/region = Rect2( 32, 32, 32, 32 )
-3/tile_mode = 0
-3/occluder_offset = Vector2( 0, 0 )
-3/navigation_offset = Vector2( 0, 0 )
-3/shape_offset = Vector2( 0, 0 )
-3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-3/shape = SubResource( 6 )
-3/shape_one_way = false
-3/shape_one_way_margin = 1.0
-3/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 6 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-3/z_index = 0
-4/name = "slope_top"
-4/texture = ExtResource( 1 )
-4/tex_offset = Vector2( 0, 0 )
-4/modulate = Color( 1, 1, 1, 1 )
-4/region = Rect2( 32, 64, 32, 32 )
-4/tile_mode = 0
-4/occluder_offset = Vector2( 0, 0 )
-4/navigation_offset = Vector2( 0, 0 )
-4/shape_offset = Vector2( 0, 0 )
-4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-4/shape = SubResource( 7 )
-4/shape_one_way = false
-4/shape_one_way_margin = 1.0
-4/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 7 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-4/z_index = 0
-5/name = "one_way"
-5/texture = ExtResource( 1 )
-5/tex_offset = Vector2( 0, 0 )
-5/modulate = Color( 1, 1, 1, 1 )
-5/region = Rect2( 64, 0, 32, 32 )
-5/tile_mode = 0
-5/occluder_offset = Vector2( 0, 0 )
-5/navigation_offset = Vector2( 0, 0 )
-5/shape_offset = Vector2( 0, 0 )
-5/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-5/shape = SubResource( 8 )
-5/shape_one_way = true
-5/shape_one_way_margin = 1.0
-5/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": true,
-"one_way_margin": 1.0,
-"shape": SubResource( 8 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-5/z_index = 0
-6/name = "one_way_end"
-6/texture = ExtResource( 1 )
-6/tex_offset = Vector2( 0, 0 )
-6/modulate = Color( 1, 1, 1, 1 )
-6/region = Rect2( 96, 0, 32, 32 )
-6/tile_mode = 0
-6/occluder_offset = Vector2( 0, 0 )
-6/navigation_offset = Vector2( 0, 0 )
-6/shape_offset = Vector2( 0, 0 )
-6/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-6/shape = SubResource( 9 )
-6/shape_one_way = true
-6/shape_one_way_margin = 1.0
-6/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": true,
-"one_way_margin": 1.0,
-"shape": SubResource( 9 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-6/z_index = 0
-7/name = "rock"
-7/texture = ExtResource( 1 )
-7/tex_offset = Vector2( 0, 0 )
-7/modulate = Color( 1, 1, 1, 1 )
-7/region = Rect2( 0, 32, 32, 32 )
-7/tile_mode = 0
-7/occluder_offset = Vector2( 0, 0 )
-7/navigation_offset = Vector2( 0, 0 )
-7/shape_offset = Vector2( 0, 0 )
-7/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-7/shape = SubResource( 10 )
-7/shape_one_way = false
-7/shape_one_way_margin = 1.0
-7/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 10 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-7/z_index = 0
 8/name = "bottom"
 8/texture = ExtResource( 1 )
 8/tex_offset = Vector2( 0, 0 )
 8/modulate = Color( 1, 1, 1, 1 )
-8/region = Rect2( 192, 32, 32, 32 )
+8/region = Rect2( 0, 0, 64, 64 )
 8/tile_mode = 0
 8/occluder_offset = Vector2( 0, 0 )
 8/navigation_offset = Vector2( 0, 0 )
 8/shape_offset = Vector2( 0, 0 )
 8/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-8/shape = SubResource( 11 )
+8/shape = SubResource( 23 )
 8/shape_one_way = false
 8/shape_one_way_margin = 1.0
 8/shapes = [ {
 "autotile_coord": Vector2( 0, 0 ),
 "one_way": false,
 "one_way_margin": 1.0,
-"shape": SubResource( 11 ),
+"shape": SubResource( 23 ),
 "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
 } ]
 8/z_index = 0
@@ -232,104 +79,377 @@ points = PoolVector2Array( 0, 0, 28, 0, 28, 24, 0, 24 )
 9/texture = ExtResource( 1 )
 9/tex_offset = Vector2( 0, 0 )
 9/modulate = Color( 1, 1, 1, 1 )
-9/region = Rect2( 224, 32, 32, 32 )
+9/region = Rect2( 256, 64, 64, 64 )
 9/tile_mode = 0
 9/occluder_offset = Vector2( 0, 0 )
 9/navigation_offset = Vector2( 0, 0 )
 9/shape_offset = Vector2( 0, 0 )
 9/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-9/shape = SubResource( 12 )
 9/shape_one_way = false
-9/shape_one_way_margin = 1.0
-9/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 12 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
+9/shape_one_way_margin = 0.0
+9/shapes = [  ]
 9/z_index = 0
-10/name = "bottom_corner"
+10/name = "tiles_demo.png 10"
 10/texture = ExtResource( 1 )
 10/tex_offset = Vector2( 0, 0 )
 10/modulate = Color( 1, 1, 1, 1 )
-10/region = Rect2( 160, 32, 32, 32 )
+10/region = Rect2( 64, 0, 64, 64 )
 10/tile_mode = 0
 10/occluder_offset = Vector2( 0, 0 )
 10/navigation_offset = Vector2( 0, 0 )
 10/shape_offset = Vector2( 0, 0 )
 10/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-10/shape = SubResource( 3 )
+10/shape = SubResource( 8 )
 10/shape_one_way = false
 10/shape_one_way_margin = 1.0
 10/shapes = [ {
 "autotile_coord": Vector2( 0, 0 ),
 "one_way": false,
 "one_way_margin": 1.0,
-"shape": SubResource( 3 ),
+"shape": SubResource( 8 ),
 "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
 } ]
 10/z_index = 0
-11/name = "tree_trunk_0"
+11/name = "tiles_demo.png 11"
 11/texture = ExtResource( 1 )
 11/tex_offset = Vector2( 0, 0 )
 11/modulate = Color( 1, 1, 1, 1 )
-11/region = Rect2( 128, 64, 32, 32 )
+11/region = Rect2( 128, 0, 64, 64 )
 11/tile_mode = 0
 11/occluder_offset = Vector2( 0, 0 )
 11/navigation_offset = Vector2( 0, 0 )
 11/shape_offset = Vector2( 0, 0 )
 11/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+11/shape = SubResource( 9 )
 11/shape_one_way = false
-11/shape_one_way_margin = 0.0
-11/shapes = [  ]
+11/shape_one_way_margin = 1.0
+11/shapes = [ {
+"autotile_coord": Vector2( 0, 0 ),
+"one_way": false,
+"one_way_margin": 1.0,
+"shape": SubResource( 9 ),
+"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
+} ]
 11/z_index = 0
-12/name = "tree_trunk_1"
+12/name = "tiles_demo.png 12"
 12/texture = ExtResource( 1 )
 12/tex_offset = Vector2( 0, 0 )
 12/modulate = Color( 1, 1, 1, 1 )
-12/region = Rect2( 128, 32, 32, 32 )
+12/region = Rect2( 192, 0, 64, 64 )
 12/tile_mode = 0
 12/occluder_offset = Vector2( 0, 0 )
 12/navigation_offset = Vector2( 0, 0 )
 12/shape_offset = Vector2( 0, 0 )
 12/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+12/shape = SubResource( 10 )
 12/shape_one_way = false
-12/shape_one_way_margin = 0.0
-12/shapes = [  ]
+12/shape_one_way_margin = 1.0
+12/shapes = [ {
+"autotile_coord": Vector2( 0, 0 ),
+"one_way": false,
+"one_way_margin": 1.0,
+"shape": SubResource( 10 ),
+"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
+} ]
 12/z_index = 0
-13/name = "tree_base"
+13/name = "tiles_demo.png 13"
 13/texture = ExtResource( 1 )
 13/tex_offset = Vector2( 0, 0 )
 13/modulate = Color( 1, 1, 1, 1 )
-13/region = Rect2( 128, 96, 32, 32 )
+13/region = Rect2( 256, 0, 64, 64 )
 13/tile_mode = 0
 13/occluder_offset = Vector2( 0, 0 )
 13/navigation_offset = Vector2( 0, 0 )
 13/shape_offset = Vector2( 0, 0 )
 13/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-13/shape = SubResource( 4 )
 13/shape_one_way = false
-13/shape_one_way_margin = 1.0
-13/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 4 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
+13/shape_one_way_margin = 0.0
+13/shapes = [  ]
 13/z_index = 0
-14/name = "tree_top"
+14/name = "tiles_demo.png 14"
 14/texture = ExtResource( 1 )
 14/tex_offset = Vector2( 0, 0 )
 14/modulate = Color( 1, 1, 1, 1 )
-14/region = Rect2( 128, 0, 32, 32 )
+14/region = Rect2( 0, 64, 64, 64 )
 14/tile_mode = 0
 14/occluder_offset = Vector2( 0, 0 )
 14/navigation_offset = Vector2( 0, 0 )
 14/shape_offset = Vector2( 0, 0 )
 14/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+14/shape = SubResource( 11 )
 14/shape_one_way = false
-14/shape_one_way_margin = 0.0
-14/shapes = [  ]
+14/shape_one_way_margin = 1.0
+14/shapes = [ {
+"autotile_coord": Vector2( 0, 0 ),
+"one_way": false,
+"one_way_margin": 1.0,
+"shape": SubResource( 11 ),
+"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
+} ]
 14/z_index = 0
+15/name = "tiles_demo.png 15"
+15/texture = ExtResource( 1 )
+15/tex_offset = Vector2( 0, 0 )
+15/modulate = Color( 1, 1, 1, 1 )
+15/region = Rect2( 64, 64, 64, 64 )
+15/tile_mode = 0
+15/occluder_offset = Vector2( 0, 0 )
+15/navigation_offset = Vector2( 0, 0 )
+15/shape_offset = Vector2( 0, 0 )
+15/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+15/shape = SubResource( 12 )
+15/shape_one_way = false
+15/shape_one_way_margin = 1.0
+15/shapes = [ {
+"autotile_coord": Vector2( 0, 0 ),
+"one_way": false,
+"one_way_margin": 1.0,
+"shape": SubResource( 12 ),
+"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
+} ]
+15/z_index = 0
+16/name = "tiles_demo.png 16"
+16/texture = ExtResource( 1 )
+16/tex_offset = Vector2( 0, 0 )
+16/modulate = Color( 1, 1, 1, 1 )
+16/region = Rect2( 64, 128, 64, 64 )
+16/tile_mode = 0
+16/occluder_offset = Vector2( 0, 0 )
+16/navigation_offset = Vector2( 0, 0 )
+16/shape_offset = Vector2( 0, 0 )
+16/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+16/shape = SubResource( 13 )
+16/shape_one_way = false
+16/shape_one_way_margin = 1.0
+16/shapes = [ {
+"autotile_coord": Vector2( 0, 0 ),
+"one_way": false,
+"one_way_margin": 1.0,
+"shape": SubResource( 13 ),
+"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
+} ]
+16/z_index = 0
+17/name = "tiles_demo.png 17"
+17/texture = ExtResource( 1 )
+17/tex_offset = Vector2( 0, 0 )
+17/modulate = Color( 1, 1, 1, 1 )
+17/region = Rect2( 128, 128, 64, 64 )
+17/tile_mode = 0
+17/occluder_offset = Vector2( 0, 0 )
+17/navigation_offset = Vector2( 0, 0 )
+17/shape_offset = Vector2( 0, 0 )
+17/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+17/shape = SubResource( 7 )
+17/shape_one_way = true
+17/shape_one_way_margin = 1.0
+17/shapes = [ {
+"autotile_coord": Vector2( 0, 0 ),
+"one_way": true,
+"one_way_margin": 1.0,
+"shape": SubResource( 7 ),
+"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
+} ]
+17/z_index = 0
+18/name = "tiles_demo.png 18"
+18/texture = ExtResource( 1 )
+18/tex_offset = Vector2( 0, 0 )
+18/modulate = Color( 1, 1, 1, 1 )
+18/region = Rect2( 128, 192, 64, 64 )
+18/tile_mode = 0
+18/occluder_offset = Vector2( 0, 0 )
+18/navigation_offset = Vector2( 0, 0 )
+18/shape_offset = Vector2( 0, 0 )
+18/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+18/shape = SubResource( 14 )
+18/shape_one_way = false
+18/shape_one_way_margin = 1.0
+18/shapes = [ {
+"autotile_coord": Vector2( 0, 0 ),
+"one_way": false,
+"one_way_margin": 1.0,
+"shape": SubResource( 14 ),
+"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
+} ]
+18/z_index = 0
+19/name = "tiles_demo.png 19"
+19/texture = ExtResource( 1 )
+19/tex_offset = Vector2( 0, 0 )
+19/modulate = Color( 1, 1, 1, 1 )
+19/region = Rect2( 192, 192, 64, 64 )
+19/tile_mode = 0
+19/occluder_offset = Vector2( 0, 0 )
+19/navigation_offset = Vector2( 0, 0 )
+19/shape_offset = Vector2( 0, 0 )
+19/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+19/shape = SubResource( 15 )
+19/shape_one_way = false
+19/shape_one_way_margin = 1.0
+19/shapes = [ {
+"autotile_coord": Vector2( 0, 0 ),
+"one_way": false,
+"one_way_margin": 1.0,
+"shape": SubResource( 15 ),
+"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
+} ]
+19/z_index = 0
+20/name = "tiles_demo.png 20"
+20/texture = ExtResource( 1 )
+20/tex_offset = Vector2( 0, 0 )
+20/modulate = Color( 1, 1, 1, 1 )
+20/region = Rect2( 256, 192, 64, 64 )
+20/tile_mode = 0
+20/occluder_offset = Vector2( 0, 0 )
+20/navigation_offset = Vector2( 0, 0 )
+20/shape_offset = Vector2( 0, 0 )
+20/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+20/shape = SubResource( 16 )
+20/shape_one_way = false
+20/shape_one_way_margin = 1.0
+20/shapes = [ {
+"autotile_coord": Vector2( 0, 0 ),
+"one_way": false,
+"one_way_margin": 1.0,
+"shape": SubResource( 16 ),
+"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
+} ]
+20/z_index = 0
+21/name = "tiles_demo.png 21"
+21/texture = ExtResource( 1 )
+21/tex_offset = Vector2( 0, 0 )
+21/modulate = Color( 1, 1, 1, 1 )
+21/region = Rect2( 320, 192, 64, 64 )
+21/tile_mode = 0
+21/occluder_offset = Vector2( 0, 0 )
+21/navigation_offset = Vector2( 0, 0 )
+21/shape_offset = Vector2( 0, 0 )
+21/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+21/shape = SubResource( 17 )
+21/shape_one_way = false
+21/shape_one_way_margin = 1.0
+21/shapes = [ {
+"autotile_coord": Vector2( 0, 0 ),
+"one_way": false,
+"one_way_margin": 1.0,
+"shape": SubResource( 17 ),
+"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
+} ]
+21/z_index = 0
+22/name = "tiles_demo.png 22"
+22/texture = ExtResource( 1 )
+22/tex_offset = Vector2( 0, 0 )
+22/modulate = Color( 1, 1, 1, 1 )
+22/region = Rect2( 384, 64, 64, 64 )
+22/tile_mode = 0
+22/occluder_offset = Vector2( 0, 0 )
+22/navigation_offset = Vector2( 0, 0 )
+22/shape_offset = Vector2( 0, 0 )
+22/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+22/shape = SubResource( 18 )
+22/shape_one_way = false
+22/shape_one_way_margin = 1.0
+22/shapes = [ {
+"autotile_coord": Vector2( 0, 0 ),
+"one_way": false,
+"one_way_margin": 1.0,
+"shape": SubResource( 18 ),
+"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
+} ]
+22/z_index = 0
+23/name = "tiles_demo.png 23"
+23/texture = ExtResource( 1 )
+23/tex_offset = Vector2( 0, 0 )
+23/modulate = Color( 1, 1, 1, 1 )
+23/region = Rect2( 384, 0, 64, 64 )
+23/tile_mode = 0
+23/occluder_offset = Vector2( 0, 0 )
+23/navigation_offset = Vector2( 0, 0 )
+23/shape_offset = Vector2( 0, 0 )
+23/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+23/shape = SubResource( 19 )
+23/shape_one_way = false
+23/shape_one_way_margin = 1.0
+23/shapes = [ {
+"autotile_coord": Vector2( 0, 0 ),
+"one_way": false,
+"one_way_margin": 1.0,
+"shape": SubResource( 19 ),
+"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
+} ]
+23/z_index = 0
+24/name = "tiles_demo.png 24"
+24/texture = ExtResource( 1 )
+24/tex_offset = Vector2( 0, 0 )
+24/modulate = Color( 1, 1, 1, 1 )
+24/region = Rect2( 448, 64, 64, 64 )
+24/tile_mode = 0
+24/occluder_offset = Vector2( 0, 0 )
+24/navigation_offset = Vector2( 0, 0 )
+24/shape_offset = Vector2( 0, 0 )
+24/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+24/shape = SubResource( 20 )
+24/shape_one_way = false
+24/shape_one_way_margin = 1.0
+24/shapes = [ {
+"autotile_coord": Vector2( 0, 0 ),
+"one_way": false,
+"one_way_margin": 1.0,
+"shape": SubResource( 20 ),
+"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
+} ]
+24/z_index = 0
+26/name = "tiles_demo.png 26"
+26/texture = ExtResource( 1 )
+26/tex_offset = Vector2( 0, 0 )
+26/modulate = Color( 1, 1, 1, 1 )
+26/region = Rect2( 320, 128, 64, 64 )
+26/tile_mode = 0
+26/occluder_offset = Vector2( 0, 0 )
+26/navigation_offset = Vector2( 0, 0 )
+26/shape_offset = Vector2( 0, 0 )
+26/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+26/shape = SubResource( 21 )
+26/shape_one_way = false
+26/shape_one_way_margin = 1.0
+26/shapes = [ {
+"autotile_coord": Vector2( 0, 0 ),
+"one_way": false,
+"one_way_margin": 1.0,
+"shape": SubResource( 21 ),
+"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
+} ]
+26/z_index = 0
+27/name = "tiles_demo.png 27"
+27/texture = ExtResource( 1 )
+27/tex_offset = Vector2( 0, 0 )
+27/modulate = Color( 1, 1, 1, 1 )
+27/region = Rect2( 320, 64, 64, 64 )
+27/tile_mode = 0
+27/occluder_offset = Vector2( 0, 0 )
+27/navigation_offset = Vector2( 0, 0 )
+27/shape_offset = Vector2( 0, 0 )
+27/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+27/shape = SubResource( 22 )
+27/shape_one_way = false
+27/shape_one_way_margin = 1.0
+27/shapes = [ {
+"autotile_coord": Vector2( 0, 0 ),
+"one_way": false,
+"one_way_margin": 1.0,
+"shape": SubResource( 22 ),
+"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
+} ]
+27/z_index = 0
+28/name = "tiles_demo.png 28"
+28/texture = ExtResource( 1 )
+28/tex_offset = Vector2( 0, 0 )
+28/modulate = Color( 1, 1, 1, 1 )
+28/region = Rect2( 0, 0, 64, 64 )
+28/tile_mode = 0
+28/occluder_offset = Vector2( 0, 0 )
+28/navigation_offset = Vector2( 0, 0 )
+28/shape_offset = Vector2( 0, 0 )
+28/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+28/shape_one_way = false
+28/shape_one_way_margin = 0.0
+28/shapes = [  ]
+28/z_index = 0

BIN
2d/platformer/assets/art/ui/touch_button_fire.png


BIN
2d/platformer/assets/art/ui/touch_button_jump.png


BIN
2d/platformer/assets/art/ui/touch_button_left.png


BIN
2d/platformer/assets/art/ui/touch_button_right.png


+ 3 - 1
2d/platformer/assets/audio/sfx/coin_pickup.wav.import

@@ -17,5 +17,7 @@ force/max_rate=false
 force/max_rate_hz=44100
 edit/trim=true
 edit/normalize=true
-edit/loop=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
 compress/mode=0

+ 3 - 1
2d/platformer/assets/audio/sfx/explode.wav.import

@@ -17,5 +17,7 @@ force/max_rate=false
 force/max_rate_hz=44100
 edit/trim=true
 edit/normalize=true
-edit/loop=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
 compress/mode=0

+ 3 - 1
2d/platformer/assets/audio/sfx/hit.wav.import

@@ -17,5 +17,7 @@ force/max_rate=false
 force/max_rate_hz=44100
 edit/trim=true
 edit/normalize=true
-edit/loop=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
 compress/mode=0

+ 3 - 1
2d/platformer/assets/audio/sfx/jump.wav.import

@@ -17,5 +17,7 @@ force/max_rate=false
 force/max_rate_hz=44100
 edit/trim=true
 edit/normalize=true
-edit/loop=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
 compress/mode=0

+ 3 - 1
2d/platformer/assets/audio/sfx/shoot.wav.import

@@ -17,5 +17,7 @@ force/max_rate=false
 force/max_rate_hz=44100
 edit/trim=true
 edit/normalize=true
-edit/loop=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
 compress/mode=0

+ 58 - 0
2d/platformer/assets/shaders/wind_sway.tres

@@ -0,0 +1,58 @@
+[gd_resource type="ShaderMaterial" load_steps=2 format=2]
+
+[sub_resource type="Shader" id=1]
+code = "// original wind shader from https://github.com/Maujoe/godot-simple-wind-shader-2d/tree/master/assets/maujoe.simple_wind_shader_2d
+// original script modified by HungryProton so that the assets are moving differently : https://pastebin.com/VL3AfV8D
+//
+// speed - The speed of the wind movement.
+// minStrength - The minimal strength of the wind movement.
+// maxStrength - The maximal strength of the wind movement.
+// strengthScale - Scalefactor for the wind strength.
+// interval - The time between minimal and maximal strength changes.
+// detail - The detail (number of waves) of the wind movement.
+// distortion - The strength of geometry distortion.
+// heightOffset - The height where the wind begins to move. By default 0.0.
+
+shader_type canvas_item;
+render_mode blend_mix;
+
+// Wind settings.
+uniform float speed = 1.0;
+uniform float minStrength : hint_range(0.0, 1.0) = 0.05;
+uniform float maxStrength : hint_range(0.0, 1.0) = 0.01;
+uniform float strengthScale = 100.0;
+uniform float interval = 3.5;
+uniform float detail = 1.0;
+uniform float distortion : hint_range(0.0, 1.0);
+uniform float heightOffset : hint_range(0.0, 1.0);
+
+// With the offset value, you can if you want different moves for each asset. Just put a random value (1, 2, 3) in the editor. Don't forget to mark the material as unique if you use this
+uniform float offset = 0;
+
+
+float getWind(vec2 vertex, vec2 uv, float time){
+    float diff = pow(maxStrength - minStrength, 2.0);
+    float strength = clamp(minStrength + diff + sin(time / interval) * diff, minStrength, maxStrength) * strengthScale;
+    float wind = (sin(time) + cos(time * detail)) * strength * max(0.0, (1.0-uv.y) - heightOffset);
+
+    return wind;
+}
+
+void vertex() {
+    vec4 pos = WORLD_MATRIX * vec4(0.0, 0.0, 0.0, 1.0);
+    float time = TIME * speed + offset;
+    //float time = TIME * speed + pos.x * pos.y  ; not working when moving...
+    VERTEX.x += getWind(VERTEX.xy, UV, time);
+}"
+
+[resource]
+shader = SubResource( 1 )
+shader_param/speed = 1.0
+shader_param/minStrength = 0.05
+shader_param/maxStrength = 0.01
+shader_param/strengthScale = 100.0
+shader_param/interval = 3.5
+shader_param/detail = 1.0
+shader_param/distortion = null
+shader_param/heightOffset = null
+shader_param/offset = 0.0

+ 46 - 25
2d/platformer/assets/theme/user_interface.tres

@@ -23,52 +23,64 @@ content_margin_left = 6.0
 content_margin_right = 6.0
 content_margin_top = 4.0
 content_margin_bottom = 4.0
-bg_color = Color( 0.15, 0.1725, 0.2325, 1 )
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color( 0.41, 0.61, 0.91, 1 )
+bg_color = Color( 0.384314, 0.454902, 0.631373, 1 )
+border_width_left = 5
+border_width_top = 5
+border_width_right = 5
+border_width_bottom = 5
+border_color = Color( 0.14902, 0.203922, 0.345098, 1 )
+shadow_color = Color( 0.129412, 0.101961, 0.101961, 0.219608 )
+shadow_size = 1
+shadow_offset = Vector2( 2, 2 )
 
 [sub_resource type="StyleBoxFlat" id=3]
 content_margin_left = 6.0
 content_margin_right = 6.0
 content_margin_top = 4.0
 content_margin_bottom = 4.0
-bg_color = Color( 0.15, 0.1725, 0.2325, 1 )
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color( 0.4, 0.4225, 0.4825, 1 )
+bg_color = Color( 0.384314, 0.454902, 0.631373, 1 )
+border_width_left = 5
+border_width_top = 5
+border_width_right = 5
+border_width_bottom = 5
+border_color = Color( 0.14902, 0.203922, 0.345098, 1 )
+shadow_color = Color( 0.129412, 0.101961, 0.101961, 0.219608 )
+shadow_size = 1
+shadow_offset = Vector2( 2, 2 )
 
 [sub_resource type="StyleBoxFlat" id=4]
 content_margin_left = 6.0
 content_margin_right = 6.0
 content_margin_top = 4.0
 content_margin_bottom = 4.0
-bg_color = Color( 0.15, 0.1725, 0.2325, 1 )
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color( 0.125, 0.14375, 0.19375, 1 )
+bg_color = Color( 0.25098, 0.305882, 0.45098, 1 )
+border_width_left = 5
+border_width_top = 5
+border_width_right = 5
+border_width_bottom = 5
+border_color = Color( 0.14902, 0.203922, 0.345098, 1 )
+shadow_color = Color( 0.129412, 0.101961, 0.101961, 0.219608 )
+shadow_size = 1
+shadow_offset = Vector2( 2, 2 )
 
 [sub_resource type="StyleBoxFlat" id=5]
 content_margin_left = 6.0
 content_margin_right = 6.0
 content_margin_top = 4.0
 content_margin_bottom = 4.0
-bg_color = Color( 0.15, 0.1725, 0.2325, 1 )
-border_width_left = 1
-border_width_top = 1
-border_width_right = 1
-border_width_bottom = 1
-border_color = Color( 0.41, 0.61, 0.91, 1 )
+bg_color = Color( 0.443137, 0.541176, 0.8, 1 )
+border_width_left = 5
+border_width_top = 5
+border_width_right = 5
+border_width_bottom = 5
+border_color = Color( 0.14902, 0.203922, 0.345098, 1 )
+shadow_color = Color( 0.129412, 0.101961, 0.101961, 0.219608 )
+shadow_size = 1
+shadow_offset = Vector2( 2, 2 )
 
 [resource]
 default_font = SubResource( 6 )
-Button/colors/font_color = Color( 0.8, 0.8075, 0.8275, 1 )
+Button/colors/font_color = Color( 0.788235, 0.847059, 1, 1 )
 Button/colors/font_color_disabled = Color( 1, 1, 1, 0.3 )
 Button/colors/font_color_hover = Color( 0.88, 0.8845, 0.8965, 1 )
 Button/colors/font_color_pressed = Color( 0.411765, 0.611765, 0.909804, 1 )
@@ -81,3 +93,12 @@ Button/styles/focus = SubResource( 2 )
 Button/styles/hover = SubResource( 3 )
 Button/styles/normal = SubResource( 4 )
 Button/styles/pressed = SubResource( 5 )
+Label/colors/font_color = Color( 1, 1, 1, 1 )
+Label/colors/font_color_shadow = Color( 0.117647, 0.117647, 0.184314, 1 )
+Label/colors/font_outline_modulate = Color( 0, 0, 0, 1 )
+Label/constants/line_spacing = 3
+Label/constants/shadow_as_outline = 1
+Label/constants/shadow_offset_x = 2
+Label/constants/shadow_offset_y = 2
+Label/fonts/font = SubResource( 6 )
+Label/styles/normal = null

BIN
2d/platformer/icon.png


+ 9 - 8
2d/platformer/project.godot

@@ -12,32 +12,32 @@ _global_script_classes=[ {
 "base": "KinematicBody2D",
 "class": "Actor",
 "language": "GDScript",
-"path": "res://src/Actors/Actor.gd"
+"path": "res://src/actors/actor.gd"
 }, {
 "base": "RigidBody2D",
 "class": "Bullet",
 "language": "GDScript",
-"path": "res://src/Objects/Bullet.gd"
+"path": "res://src/objects/bullet.gd"
 }, {
 "base": "Area2D",
 "class": "Coin",
 "language": "GDScript",
-"path": "res://src/Objects/Coin.gd"
+"path": "res://src/objects/coin.gd"
 }, {
 "base": "Actor",
 "class": "Enemy",
 "language": "GDScript",
-"path": "res://src/Actors/Enemy.gd"
+"path": "res://src/actors/enemy.gd"
 }, {
 "base": "Position2D",
 "class": "Gun",
 "language": "GDScript",
-"path": "res://src/Actors/Gun.gd"
+"path": "res://src/actors/gun.gd"
 }, {
 "base": "Actor",
 "class": "Player",
 "language": "GDScript",
-"path": "res://src/Actors/Player.gd"
+"path": "res://src/actors/player.gd"
 } ]
 _global_script_class_icons={
 "Actor": "",
@@ -58,7 +58,7 @@ in a real game context. This is a relatively complete demo
 where the player can jump, walk on slopes, fire bullets,
 interact with enemies, and more. It contains one closed
 level, and the player is invincible, unlike the enemies."
-run/main_scene="res://src/Main/Game.tscn"
+run/main_scene="res://src/main/game.tscn"
 config/icon="res://icon.png"
 target_fps="60"
 
@@ -228,7 +228,7 @@ splitscreen={
 
 [physics]
 
-2d/default_gravity=900
+2d/default_gravity=1400
 
 [rasterizer]
 
@@ -244,6 +244,7 @@ quality/driver/driver_name="GLES2"
 quality/intended_usage/framebuffer_allocation=0
 quality/intended_usage/framebuffer_allocation.mobile=1
 2d/snapping/use_gpu_pixel_snap=true
+vram_compression/import_etc=true
 quality/filters/anisotropic_filter_level=2
 quality/filters/use_nearest_mipmap_filter=true
 quality/depth/hdr=false

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 55
2d/platformer/src/Level/Level.tscn


+ 0 - 21
2d/platformer/src/Platforms/Platform.tscn

@@ -1,21 +0,0 @@
-[gd_scene load_steps=3 format=2]
-
-[ext_resource path="res://assets/art/platforms/moving_platform.png" type="Texture" id=2]
-
-[sub_resource type="RectangleShape2D" id=1]
-extents = Vector2( 47, 6 )
-
-[node name="Platform" type="KinematicBody2D"]
-z_index = -1
-collision_layer = 8
-collision_mask = 0
-collision/safe_margin = 0.12
-motion/sync_to_physics = true
-
-[node name="Sprite" type="Sprite" parent="."]
-texture = ExtResource( 2 )
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-position = Vector2( 0, -4 )
-shape = SubResource( 1 )
-one_way_collision = true

+ 0 - 60
2d/platformer/src/UserInterface/CoinsCounter.tscn

@@ -1,60 +0,0 @@
-[gd_scene load_steps=10 format=2]
-
-[ext_resource path="res://assets/theme/user_interface.tres" type="Theme" id=1]
-[ext_resource path="res://assets/art/coin/coin.png" type="Texture" id=2]
-[ext_resource path="res://src/UserInterface/CoinsCounter.gd" type="Script" id=3]
-
-[sub_resource type="StyleBoxFlat" id=1]
-bg_color = Color( 0, 0, 0, 0.5 )
-
-[sub_resource type="AtlasTexture" id=2]
-atlas = ExtResource( 2 )
-region = Rect2( 0, 0, 8, 8 )
-
-[sub_resource type="AtlasTexture" id=3]
-atlas = ExtResource( 2 )
-region = Rect2( 8, 0, 8, 8 )
-
-[sub_resource type="AtlasTexture" id=4]
-atlas = ExtResource( 2 )
-region = Rect2( 16, 0, 8, 8 )
-
-[sub_resource type="AtlasTexture" id=5]
-atlas = ExtResource( 2 )
-region = Rect2( 24, 0, 8, 8 )
-
-[sub_resource type="SpriteFrames" id=6]
-animations = [ {
-"frames": [ SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 4 ), SubResource( 3 ) ],
-"loop": true,
-"name": "coin_spinning",
-"speed": 6.5
-} ]
-
-[node name="CoinsCounter" type="Panel"]
-margin_left = 5.0
-margin_top = 5.0
-margin_right = 100.0
-margin_bottom = 45.0
-rect_min_size = Vector2( 100, 45 )
-theme = ExtResource( 1 )
-custom_styles/panel = SubResource( 1 )
-script = ExtResource( 3 )
-
-[node name="Label" type="Label" parent="."]
-anchor_right = 1.0
-anchor_bottom = 1.0
-margin_right = -8.0
-text = "100"
-align = 2
-valign = 1
-autowrap = true
-__meta__ = {
-"_edit_use_anchors_": false
-}
-
-[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
-position = Vector2( 21.5, 22.5 )
-scale = Vector2( 4.375, 4.375 )
-frames = SubResource( 6 )
-animation = "coin_spinning"

+ 0 - 0
2d/platformer/src/Actors/Actor.gd → 2d/platformer/src/actors/actor.gd


+ 3 - 2
2d/platformer/src/Actors/Enemy.gd → 2d/platformer/src/actors/enemy.gd

@@ -14,6 +14,7 @@ onready var floor_detector_left = $FloorDetectorLeft
 onready var floor_detector_right = $FloorDetectorRight
 onready var sprite = $Sprite
 onready var animation_player = $AnimationPlayer
+onready var orig_scale = sprite.scale
 
 
 # This function is called when the scene enters the scene tree.
@@ -52,9 +53,9 @@ func _physics_process(_delta):
 
 	# We flip the Sprite depending on which way the enemy is moving.
 	if _velocity.x > 0:
-		sprite.scale.x = 1
+		sprite.scale.x = orig_scale.x
 	else:
-		sprite.scale.x = -1
+		sprite.scale.x = -orig_scale.x
 
 	var animation = get_new_animation()
 	if animation != animation_player.current_animation:

+ 22 - 9
2d/platformer/src/Actors/Enemy.tscn → 2d/platformer/src/actors/enemy.tscn

@@ -4,7 +4,7 @@
 [ext_resource path="res://assets/audio/sfx/explode.wav" type="AudioStream" id=2]
 [ext_resource path="res://assets/audio/sfx/hit.wav" type="AudioStream" id=3]
 [ext_resource path="res://assets/art/enemy/enemy.png" type="Texture" id=4]
-[ext_resource path="res://src/Actors/Enemy.gd" type="Script" id=5]
+[ext_resource path="res://src/actors/enemy.gd" type="Script" id=5]
 
 [sub_resource type="CanvasItemMaterial" id=1]
 
@@ -22,6 +22,18 @@ tracks/0/keys = {
 "update": 0,
 "values": [ 4.0 ]
 }
+tracks/1/type = "value"
+tracks/1/path = NodePath("Sprite:frame")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/keys = {
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
+"update": 0,
+"values": [ 0 ]
+}
 
 [sub_resource type="Animation" id=2]
 resource_name = "destroy"
@@ -167,9 +179,8 @@ tracks/0/keys = {
 }
 
 [sub_resource type="Animation" id=4]
-length = 1.25
+length = 1.6
 loop = true
-step = 0.25
 tracks/0/type = "value"
 tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
@@ -177,14 +188,14 @@ tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/enabled = true
 tracks/0/keys = {
-"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25 ),
-"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
+"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5 ),
+"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
 "update": 1,
-"values": [ 0, 1, 2, 3, 4, 0 ]
+"values": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ]
 }
 
 [sub_resource type="CapsuleShape2D" id=5]
-radius = 11.0
+radius = 18.0
 height = 7.0
 
 [sub_resource type="CanvasItemMaterial" id=6]
@@ -198,7 +209,7 @@ colors = PoolColorArray( 1, 1, 1, 1, 0, 0, 0, 1 )
 collision_layer = 2
 collision_mask = 24
 script = ExtResource( 5 )
-speed = Vector2( 75, 250 )
+speed = Vector2( 32, 250 )
 
 [node name="PlatformDetector" type="RayCast2D" parent="."]
 position = Vector2( 0, 6 )
@@ -220,12 +231,14 @@ collision_mask = 24
 
 [node name="Sprite" type="Sprite" parent="."]
 material = SubResource( 1 )
+scale = Vector2( 0.8, 0.8 )
 texture = ExtResource( 4 )
 flip_h = true
 hframes = 8
-frame = 7
+vframes = 2
 
 [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+playback_speed = 3.0
 anims/RESET = SubResource( 8 )
 anims/destroy = SubResource( 2 )
 anims/idle = SubResource( 3 )

+ 2 - 2
2d/platformer/src/Actors/Gun.gd → 2d/platformer/src/actors/gun.gd

@@ -4,8 +4,8 @@ extends Position2D
 # The Cooldown timer controls the cooldown duration between shots.
 
 
-const BULLET_VELOCITY = 500.0
-const Bullet = preload("res://src/Objects/Bullet.tscn")
+const BULLET_VELOCITY = 1000
+const Bullet = preload("res://src/objects/bullet.tscn")
 
 onready var sound_shoot = $Shoot
 onready var timer = $Cooldown

+ 7 - 6
2d/platformer/src/Actors/Player.gd → 2d/platformer/src/actors/player.gd

@@ -1,11 +1,12 @@
 class_name Player
 extends Actor
 
-
 # warning-ignore:unused_signal
 signal collect_coin()
 
 const FLOOR_DETECT_DISTANCE = 20.0
+const MOVE_SPEED = 1.3
+const JUMP_VELOCITY = 1.5
 
 export(String) var action_suffix = ""
 
@@ -15,7 +16,7 @@ onready var shoot_timer = $ShootAnimation
 onready var sprite = $Sprite
 onready var sound_jump = $Jump
 onready var gun = sprite.get_node(@"Gun")
-
+onready var orig_scale = sprite.scale
 
 func _ready():
 	# Static types are necessary here to avoid warnings.
@@ -72,9 +73,9 @@ func _physics_process(_delta):
 	# This will make Robi face left or right depending on the direction you move.
 	if direction.x != 0:
 		if direction.x > 0:
-			sprite.scale.x = 1
+			sprite.scale.x = orig_scale.x
 		else:
-			sprite.scale.x = -1
+			sprite.scale.x = -orig_scale.x
 
 	# We use the sprite's scale to store Robi’s look direction which allows us to shoot
 	# bullets forward.
@@ -93,8 +94,8 @@ func _physics_process(_delta):
 
 func get_direction():
 	return Vector2(
-		Input.get_action_strength("move_right" + action_suffix) - Input.get_action_strength("move_left" + action_suffix),
-		-1 if is_on_floor() and Input.is_action_just_pressed("jump" + action_suffix) else 0
+		MOVE_SPEED * (Input.get_action_strength("move_right" + action_suffix) - Input.get_action_strength("move_left" + action_suffix)),
+		-JUMP_VELOCITY if is_on_floor() and Input.is_action_just_pressed("jump" + action_suffix) else 0.0
 	)
 
 

+ 56 - 56
2d/platformer/src/Actors/Player.tscn → 2d/platformer/src/actors/player.tscn

@@ -1,14 +1,14 @@
 [gd_scene load_steps=21 format=2]
 
-[ext_resource path="res://src/Actors/Player.gd" type="Script" id=1]
-[ext_resource path="res://assets/art/player/robot_demo.png" type="Texture" id=2]
-[ext_resource path="res://assets/audio/sfx/jump.wav" type="AudioStream" id=3]
-[ext_resource path="res://assets/audio/sfx/shoot.wav" type="AudioStream" id=4]
-[ext_resource path="res://assets/art/ui/touch_button_left.png" type="Texture" id=5]
-[ext_resource path="res://assets/art/ui/touch_button_right.png" type="Texture" id=6]
+[ext_resource path="res://assets/art/ui/touch_button_left.png" type="Texture" id=1]
+[ext_resource path="res://assets/art/ui/touch_button_right.png" type="Texture" id=2]
+[ext_resource path="res://src/actors/player.gd" type="Script" id=3]
+[ext_resource path="res://assets/art/ui/touch_button_fire.png" type="Texture" id=4]
+[ext_resource path="res://assets/audio/sfx/jump.wav" type="AudioStream" id=5]
+[ext_resource path="res://assets/audio/sfx/shoot.wav" type="AudioStream" id=6]
 [ext_resource path="res://assets/art/ui/touch_button_jump.png" type="Texture" id=7]
-[ext_resource path="res://assets/art/ui/touch_button_fire.png" type="Texture" id=8]
-[ext_resource path="res://src/Actors/Gun.gd" type="Script" id=9]
+[ext_resource path="res://src/actors/gun.gd" type="Script" id=8]
+[ext_resource path="res://assets/art/player/robot.png" type="Texture" id=9]
 
 [sub_resource type="Animation" id=1]
 resource_name = "crouch"
@@ -25,7 +25,7 @@ tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 22 ]
+"values": [ 42 ]
 }
 
 [sub_resource type="Animation" id=2]
@@ -43,7 +43,7 @@ tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 21 ]
+"values": [ 48 ]
 }
 
 [sub_resource type="Animation" id=3]
@@ -65,7 +65,7 @@ tracks/0/keys = {
 }
 
 [sub_resource type="Animation" id=4]
-length = 7.0
+length = 2.0
 loop = true
 step = 0.25
 tracks/0/type = "value"
@@ -75,14 +75,14 @@ tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/enabled = true
 tracks/0/keys = {
-"times": PoolRealArray( 0, 1.25, 1.5, 2, 4.5, 4.75, 5, 5.25 ),
-"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ),
+"times": PoolRealArray( 0, 0.5, 1, 1.5 ),
+"transitions": PoolRealArray( 1, 1, 1, 1 ),
 "update": 1,
-"values": [ 16, 17, 18, 16, 19, 20, 19, 16 ]
+"values": [ 30, 31, 32, 33 ]
 }
 
 [sub_resource type="Animation" id=5]
-length = 0.5
+length = 2.0
 loop = true
 step = 0.25
 tracks/0/type = "value"
@@ -92,10 +92,10 @@ tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/enabled = true
 tracks/0/keys = {
-"times": PoolRealArray( 0 ),
-"transitions": PoolRealArray( 1 ),
+"times": PoolRealArray( 0, 0.5, 1, 1.5 ),
+"transitions": PoolRealArray( 1, 1, 1, 1 ),
 "update": 1,
-"values": [ 25 ]
+"values": [ 34, 35, 36, 37 ]
 }
 
 [sub_resource type="Animation" id=6]
@@ -109,10 +109,10 @@ tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/enabled = true
 tracks/0/keys = {
-"times": PoolRealArray( 0, 0.25, 0.5 ),
-"transitions": PoolRealArray( 1, 1, 1 ),
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 23, 24, 23 ]
+"values": [ 45 ]
 }
 
 [sub_resource type="Animation" id=7]
@@ -129,13 +129,12 @@ tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 26 ]
+"values": [ 46 ]
 }
 
 [sub_resource type="Animation" id=8]
-length = 1.25
+length = 1.5
 loop = true
-step = 0.25
 tracks/0/type = "value"
 tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
@@ -143,16 +142,15 @@ tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/enabled = true
 tracks/0/keys = {
-"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25 ),
-"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
+"times": PoolRealArray( 0, 0.15, 0.3, 0.45, 0.6, 0.75, 0.9, 1.05, 1.2, 1.35 ),
+"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
 "update": 1,
-"values": [ 0, 1, 2, 3, 4, 0 ]
+"values": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
 }
 
 [sub_resource type="Animation" id=9]
-length = 1.25
+length = 1.5
 loop = true
-step = 0.25
 tracks/0/type = "value"
 tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
@@ -160,10 +158,10 @@ tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/enabled = true
 tracks/0/keys = {
-"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25 ),
-"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
+"times": PoolRealArray( 0, 0.15, 0.3, 0.45, 0.6, 0.75, 0.9, 1.05, 1.2, 1.35 ),
+"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
 "update": 1,
-"values": [ 5, 6, 7, 8, 9, 5 ]
+"values": [ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ]
 }
 
 [sub_resource type="Animation" id=10]
@@ -177,18 +175,20 @@ tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/enabled = true
 tracks/0/keys = {
-"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25 ),
-"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
+"times": PoolRealArray( 0, 0.25, 0.75, 1 ),
+"transitions": PoolRealArray( 1, 1, 1, 1 ),
 "update": 1,
-"values": [ 10, 11, 12, 13, 14, 5 ]
+"values": [ 34, 35, 36, 37 ]
 }
 
 [sub_resource type="RectangleShape2D" id=11]
-extents = Vector2( 10, 14 )
+extents = Vector2( 21.25, 27.25 )
 
 [node name="Player" type="KinematicBody2D"]
+scale = Vector2( 0.8, 0.8 )
 collision_mask = 30
-script = ExtResource( 1 )
+script = ExtResource( 3 )
+speed = Vector2( 164, 350 )
 
 [node name="ShootAnimation" type="Timer" parent="."]
 process_mode = 0
@@ -202,18 +202,18 @@ collision_mask = 8
 
 [node name="Sprite" type="Sprite" parent="."]
 position = Vector2( 0, -14 )
-texture = ExtResource( 2 )
-hframes = 16
-vframes = 2
-frame = 16
+texture = ExtResource( 9 )
+hframes = 8
+vframes = 8
+frame = 14
 
 [node name="Gun" type="Position2D" parent="Sprite"]
 position = Vector2( 14, 1 )
-script = ExtResource( 9 )
+script = ExtResource( 8 )
 
 [node name="Shoot" type="AudioStreamPlayer2D" parent="Sprite/Gun"]
 position = Vector2( -30.6589, -6.13176 )
-stream = ExtResource( 4 )
+stream = ExtResource( 6 )
 
 [node name="Cooldown" type="Timer" parent="Sprite/Gun"]
 process_mode = 0
@@ -235,8 +235,8 @@ anims/standing_weapon_ready = SubResource( 10 )
 
 [node name="Camera" type="Camera2D" parent="."]
 position = Vector2( 0, -28 )
+offset = Vector2( 0, 50 )
 current = true
-zoom = Vector2( 0.5, 0.5 )
 process_mode = 0
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
@@ -244,37 +244,37 @@ position = Vector2( 0, -14 )
 shape = SubResource( 11 )
 
 [node name="Jump" type="AudioStreamPlayer2D" parent="."]
-stream = ExtResource( 3 )
+stream = ExtResource( 5 )
 
 [node name="UI" type="CanvasLayer" parent="."]
 layer = 0
 
 [node name="Left" type="TouchScreenButton" parent="UI"]
-position = Vector2( 27.7593, 360.87 )
-scale = Vector2( 1.49157, 1.46265 )
-normal = ExtResource( 5 )
+position = Vector2( 157, 813 )
+scale = Vector2( 2, 2 )
+normal = ExtResource( 1 )
 passby_press = true
 action = "move_left"
 visibility_mode = 1
 
 [node name="Right" type="TouchScreenButton" parent="UI"]
-position = Vector2( 121.542, 361.415 )
-scale = Vector2( 1.49157, 1.46265 )
-normal = ExtResource( 6 )
+position = Vector2( 425, 813 )
+scale = Vector2( 2, 2 )
+normal = ExtResource( 2 )
 passby_press = true
 action = "move_right"
 visibility_mode = 1
 
 [node name="Jump" type="TouchScreenButton" parent="UI"]
-position = Vector2( 666.224, 359.02 )
-scale = Vector2( 1.49157, 1.46265 )
+position = Vector2( 1871, 813 )
+scale = Vector2( 2, 2 )
 normal = ExtResource( 7 )
 action = "jump"
 visibility_mode = 1
 
 [node name="Fire" type="TouchScreenButton" parent="UI"]
-position = Vector2( 668.073, 262.788 )
-scale = Vector2( 1.49157, 1.46265 )
-normal = ExtResource( 8 )
+position = Vector2( 1870, 564 )
+scale = Vector2( 2, 2 )
+normal = ExtResource( 4 )
 action = "shoot"
 visibility_mode = 1

+ 0 - 0
2d/platformer/src/Level/Level.gd → 2d/platformer/src/level/level.gd


Datei-Diff unterdrückt, da er zu groß ist
+ 71 - 0
2d/platformer/src/level/level.tscn


+ 0 - 0
2d/platformer/src/Level/Music.gd → 2d/platformer/src/level/music.gd


+ 65 - 83
2d/platformer/src/Level/ParallaxBackground.tscn → 2d/platformer/src/level/parallax_background.tscn

@@ -2,19 +2,26 @@
 
 [ext_resource path="res://assets/art/background/distant_platforms_2.png" type="Texture" id=1]
 [ext_resource path="res://assets/art/background/sky.png" type="Texture" id=2]
-[ext_resource path="res://assets/art/background/cloud_1.png" type="Texture" id=3]
-[ext_resource path="res://assets/art/background/cloud_2.png" type="Texture" id=4]
-[ext_resource path="res://assets/art/background/cloud_3.png" type="Texture" id=5]
+[ext_resource path="res://assets/art/background/cloud_3.png" type="Texture" id=3]
+[ext_resource path="res://assets/art/background/cloud_2.png" type="Texture" id=5]
 [ext_resource path="res://assets/art/background/distant_platforms_1.png" type="Texture" id=6]
+[ext_resource path="res://assets/art/background/cloud_1.png" type="Texture" id=7]
 
 [node name="ParallaxBackground" type="ParallaxBackground"]
-scroll_base_scale = Vector2( 0.4, 0 )
+scroll_base_scale = Vector2( 0.1, 0 )
 
 [node name="Sky" type="ParallaxLayer" parent="."]
-motion_mirroring = Vector2( 400, 0 )
+motion_scale = Vector2( 0.2, 1 )
 
 [node name="Sprite" type="Sprite" parent="Sky"]
-scale = Vector2( 64, 0.94 )
+position = Vector2( -809, 58 )
+scale = Vector2( 1.2, 1.2 )
+texture = ExtResource( 2 )
+centered = false
+
+[node name="Sprite2" type="Sprite" parent="Sky"]
+position = Vector2( -809, 0 )
+scale = Vector2( 1.2, 1.2 )
 texture = ExtResource( 2 )
 centered = false
 
@@ -25,132 +32,106 @@ motion_offset = Vector2( -550, 0 )
 [node name="CloudGroup1" type="Node2D" parent="Clouds"]
 position = Vector2( -780, 0 )
 
-[node name="Sprite1" type="Sprite" parent="Clouds/CloudGroup1"]
-position = Vector2( -200, 120 )
-texture = ExtResource( 3 )
-centered = false
-
 [node name="Sprite2" type="Sprite" parent="Clouds/CloudGroup1"]
-position = Vector2( 100, 10 )
-texture = ExtResource( 3 )
+position = Vector2( 470, 4 )
+texture = ExtResource( 5 )
 centered = false
 
 [node name="Sprite3" type="Sprite" parent="Clouds/CloudGroup1"]
-position = Vector2( -60, 40 )
-texture = ExtResource( 4 )
+position = Vector2( 726, 91 )
+texture = ExtResource( 3 )
 centered = false
 
 [node name="Sprite4" type="Sprite" parent="Clouds/CloudGroup1"]
-position = Vector2( 150, 65 )
-texture = ExtResource( 4 )
+position = Vector2( 1133, 113 )
+texture = ExtResource( 3 )
 centered = false
 
 [node name="Sprite5" type="Sprite" parent="Clouds/CloudGroup1"]
-position = Vector2( 15, 75 )
-texture = ExtResource( 5 )
+position = Vector2( 1513, 165 )
+texture = ExtResource( 3 )
 centered = false
 
 [node name="Sprite6" type="Sprite" parent="Clouds/CloudGroup1"]
-position = Vector2( 225, 35 )
-texture = ExtResource( 5 )
+position = Vector2( 396, 109 )
+texture = ExtResource( 7 )
 centered = false
 
 [node name="CloudGroup2" type="Node2D" parent="Clouds"]
 
 [node name="Sprite1" type="Sprite" parent="Clouds/CloudGroup2"]
-position = Vector2( -200, 120 )
-texture = ExtResource( 3 )
-centered = false
-
-[node name="Sprite2" type="Sprite" parent="Clouds/CloudGroup2"]
-position = Vector2( 100, 10 )
-texture = ExtResource( 3 )
-centered = false
-
-[node name="Sprite3" type="Sprite" parent="Clouds/CloudGroup2"]
-position = Vector2( -60, 40 )
-texture = ExtResource( 4 )
-centered = false
-
-[node name="Sprite4" type="Sprite" parent="Clouds/CloudGroup2"]
-position = Vector2( 150, 65 )
-texture = ExtResource( 4 )
+position = Vector2( -135, 213 )
+texture = ExtResource( 5 )
 centered = false
 
 [node name="Sprite5" type="Sprite" parent="Clouds/CloudGroup2"]
-position = Vector2( 15, 75 )
-texture = ExtResource( 5 )
+position = Vector2( 19, 77 )
+scale = Vector2( 0.5, 0.5 )
+texture = ExtResource( 7 )
 centered = false
 
-[node name="Sprite6" type="Sprite" parent="Clouds/CloudGroup2"]
-position = Vector2( 225, 35 )
-texture = ExtResource( 5 )
+[node name="Sprite7" type="Sprite" parent="Clouds/CloudGroup2"]
+position = Vector2( 140, 261 )
+scale = Vector2( 0.5, 0.5 )
+texture = ExtResource( 3 )
 centered = false
 
 [node name="CloudGroup3" type="Node2D" parent="Clouds"]
 position = Vector2( 390, 0 )
 
 [node name="Sprite1" type="Sprite" parent="Clouds/CloudGroup3"]
-position = Vector2( -200, 120 )
-texture = ExtResource( 3 )
-centered = false
-
-[node name="Sprite2" type="Sprite" parent="Clouds/CloudGroup3"]
-position = Vector2( 100, 10 )
-texture = ExtResource( 3 )
+position = Vector2( 1034, -60 )
+texture = ExtResource( 5 )
 centered = false
 
-[node name="Sprite3" type="Sprite" parent="Clouds/CloudGroup3"]
-position = Vector2( -60, 40 )
-texture = ExtResource( 4 )
+[node name="Sprite7" type="Sprite" parent="Clouds/CloudGroup3"]
+position = Vector2( 491, 251 )
+texture = ExtResource( 5 )
 centered = false
 
-[node name="Sprite4" type="Sprite" parent="Clouds/CloudGroup3"]
-position = Vector2( 150, 65 )
-texture = ExtResource( 4 )
+[node name="Sprite2" type="Sprite" parent="Clouds/CloudGroup3"]
+position = Vector2( 545, 108 )
+texture = ExtResource( 5 )
 centered = false
 
-[node name="Sprite5" type="Sprite" parent="Clouds/CloudGroup3"]
-position = Vector2( 15, 75 )
-texture = ExtResource( 5 )
+[node name="Sprite3" type="Sprite" parent="Clouds/CloudGroup3"]
+position = Vector2( -164, 212 )
+texture = ExtResource( 7 )
 centered = false
 
-[node name="Sprite6" type="Sprite" parent="Clouds/CloudGroup3"]
-position = Vector2( 225, 35 )
-texture = ExtResource( 5 )
+[node name="Sprite8" type="Sprite" parent="Clouds/CloudGroup3"]
+position = Vector2( 287, 220 )
+scale = Vector2( 0.5, 0.5 )
+texture = ExtResource( 7 )
 centered = false
 
 [node name="CloudGroup4" type="Node2D" parent="Clouds"]
 position = Vector2( 780, 0 )
 
 [node name="Sprite1" type="Sprite" parent="Clouds/CloudGroup4"]
-position = Vector2( -200, 120 )
-texture = ExtResource( 3 )
+position = Vector2( -293, 64 )
+texture = ExtResource( 5 )
 centered = false
 
 [node name="Sprite2" type="Sprite" parent="Clouds/CloudGroup4"]
-position = Vector2( 100, 10 )
-texture = ExtResource( 3 )
-centered = false
-
-[node name="Sprite3" type="Sprite" parent="Clouds/CloudGroup4"]
-position = Vector2( -60, 40 )
-texture = ExtResource( 4 )
+position = Vector2( -229, 199 )
+texture = ExtResource( 5 )
 centered = false
 
-[node name="Sprite4" type="Sprite" parent="Clouds/CloudGroup4"]
-position = Vector2( 150, 65 )
-texture = ExtResource( 4 )
+[node name="Sprite5" type="Sprite" parent="Clouds/CloudGroup4"]
+position = Vector2( 83, 115 )
+texture = ExtResource( 7 )
 centered = false
 
-[node name="Sprite5" type="Sprite" parent="Clouds/CloudGroup4"]
-position = Vector2( 15, 75 )
-texture = ExtResource( 5 )
+[node name="Sprite7" type="Sprite" parent="Clouds/CloudGroup4"]
+position = Vector2( 7, 177 )
+texture = ExtResource( 7 )
 centered = false
 
 [node name="Sprite6" type="Sprite" parent="Clouds/CloudGroup4"]
-position = Vector2( 225, 35 )
-texture = ExtResource( 5 )
+position = Vector2( 226, 14 )
+scale = Vector2( 0.5, 0.5 )
+texture = ExtResource( 7 )
 centered = false
 
 [node name="Mountains2" type="ParallaxLayer" parent="."]
@@ -158,17 +139,18 @@ position = Vector2( 0, 243 )
 motion_scale = Vector2( 0.2, 1 )
 
 [node name="Sprite" type="Sprite" parent="Mountains2"]
-position = Vector2( 0, -64 )
+position = Vector2( 567, 301.2 )
 texture = ExtResource( 1 )
 region_enabled = true
-region_rect = Rect2( 0, 0, 2048, 128 )
+region_rect = Rect2( 0, 0, 2048, 251.104 )
 
 [node name="Mountains1" type="ParallaxLayer" parent="."]
 position = Vector2( 0, 246 )
 motion_scale = Vector2( 0.4, 1 )
 
 [node name="Sprite" type="Sprite" parent="Mountains1"]
-position = Vector2( 0, -64 )
+position = Vector2( 437, 278.2 )
+scale = Vector2( 1.2, 1.2 )
 texture = ExtResource( 6 )
 region_enabled = true
-region_rect = Rect2( 0, 0, 2048, 128 )
+region_rect = Rect2( 0, 0, 2048, 251.104 )

+ 0 - 0
2d/platformer/src/Main/Game.gd → 2d/platformer/src/main/game.gd


+ 8 - 5
2d/platformer/src/Main/Game.tscn → 2d/platformer/src/main/game.tscn

@@ -1,18 +1,21 @@
 [gd_scene load_steps=5 format=2]
 
-[ext_resource path="res://src/UserInterface/PauseMenu.tscn" type="PackedScene" id=1]
-[ext_resource path="res://src/Main/Game.gd" type="Script" id=2]
-[ext_resource path="res://src/Level/Level.tscn" type="PackedScene" id=3]
-[ext_resource path="res://src/Actors/Player.tscn" type="PackedScene" id=4]
+[ext_resource path="res://src/ui/pause_menu.tscn" type="PackedScene" id=1]
+[ext_resource path="res://src/main/game.gd" type="Script" id=2]
+[ext_resource path="res://src/level/level.tscn" type="PackedScene" id=3]
+[ext_resource path="res://src/actors/player.tscn" type="PackedScene" id=4]
 
 [node name="Game" type="Node"]
 pause_mode = 2
 script = ExtResource( 2 )
 
 [node name="Level" parent="." instance=ExtResource( 3 )]
+z_index = -1
 
 [node name="Player" parent="Level" instance=ExtResource( 4 )]
-position = Vector2( 90, 546 )
+position = Vector2( 157, 648 )
+scale = Vector2( 1, 1 )
+z_index = 3
 
 [node name="InterfaceLayer" type="CanvasLayer" parent="."]
 layer = 100

+ 5 - 5
2d/platformer/src/Main/Splitscreen.tscn → 2d/platformer/src/main/split_screen.tscn

@@ -1,10 +1,10 @@
 [gd_scene load_steps=6 format=2]
 
-[ext_resource path="res://src/UserInterface/PauseMenu.tscn" type="PackedScene" id=1]
-[ext_resource path="res://src/Main/Game.gd" type="Script" id=2]
-[ext_resource path="res://src/Level/Level.tscn" type="PackedScene" id=3]
-[ext_resource path="res://src/Actors/Player.tscn" type="PackedScene" id=4]
-[ext_resource path="res://src/Level/ParallaxBackground.tscn" type="PackedScene" id=5]
+[ext_resource path="res://src/ui/pause_menu.tscn" type="PackedScene" id=1]
+[ext_resource path="res://src/main/game.gd" type="Script" id=2]
+[ext_resource path="res://src/level/level.tscn" type="PackedScene" id=3]
+[ext_resource path="res://src/actors/player.tscn" type="PackedScene" id=4]
+[ext_resource path="res://src/level/parallax_background.tscn" type="PackedScene" id=5]
 
 [node name="Splitscreen" type="Node"]
 pause_mode = 2

+ 0 - 0
2d/platformer/src/Objects/Bullet.gd → 2d/platformer/src/objects/bullet.gd


+ 5 - 2
2d/platformer/src/Objects/Bullet.tscn → 2d/platformer/src/objects/bullet.tscn

@@ -1,7 +1,7 @@
 [gd_scene load_steps=8 format=2]
 
 [ext_resource path="res://assets/art/player/bullet/bullet.png" type="Texture" id=1]
-[ext_resource path="res://src/Objects/Bullet.gd" type="Script" id=2]
+[ext_resource path="res://src/objects/bullet.gd" type="Script" id=2]
 
 [sub_resource type="CanvasItemMaterial" id=1]
 
@@ -57,8 +57,11 @@ tracks/2/keys = {
 
 [node name="Bullet" type="RigidBody2D"]
 material = SubResource( 1 )
+z_index = 5
 collision_layer = 0
 collision_mask = 26
+mass = 0.0283333
+gravity_scale = 0.1
 continuous_cd = 2
 contacts_reported = 1
 contact_monitor = true
@@ -67,7 +70,7 @@ script = ExtResource( 2 )
 [node name="Particles2D" type="CPUParticles2D" parent="."]
 material = SubResource( 2 )
 emitting = false
-lifetime = 0.3
+lifetime = 0.1
 speed_scale = 3.0
 local_coords = false
 texture = ExtResource( 1 )

+ 0 - 0
2d/platformer/src/Objects/Coin.gd → 2d/platformer/src/objects/coin.gd


+ 10 - 8
2d/platformer/src/Objects/Coin.tscn → 2d/platformer/src/objects/coin.tscn

@@ -1,8 +1,8 @@
 [gd_scene load_steps=7 format=2]
 
-[ext_resource path="res://assets/art/coin/coin.png" type="Texture" id=2]
+[ext_resource path="res://assets/art/coin/coin.png" type="Texture" id=1]
 [ext_resource path="res://assets/audio/sfx/coin_pickup.wav" type="AudioStream" id=3]
-[ext_resource path="res://src/Objects/Coin.gd" type="Script" id=4]
+[ext_resource path="res://src/objects/coin.gd" type="Script" id=4]
 
 [sub_resource type="Animation" id=1]
 resource_name = "picked"
@@ -15,10 +15,10 @@ tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/enabled = true
 tracks/0/keys = {
-"times": PoolRealArray( 0 ),
-"transitions": PoolRealArray( 1 ),
+"times": PoolRealArray( 0, 1.25 ),
+"transitions": PoolRealArray( 1, 1 ),
 "update": 0,
-"values": [ 0 ]
+"values": [ 0, 11 ]
 }
 tracks/1/type = "method"
 tracks/1/path = NodePath(".")
@@ -137,7 +137,7 @@ tracks/3/keys = {
 }
 
 [sub_resource type="CircleShape2D" id=3]
-radius = 5.0
+radius = 10.0499
 
 [node name="Coin" type="Area2D"]
 collision_layer = 0
@@ -146,8 +146,10 @@ monitorable = false
 script = ExtResource( 4 )
 
 [node name="Sprite" type="Sprite" parent="."]
-texture = ExtResource( 2 )
-hframes = 4
+scale = Vector2( 0.65, 0.65 )
+texture = ExtResource( 1 )
+hframes = 8
+vframes = 2
 
 [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
 autoplay = "spinning"

+ 178 - 0
2d/platformer/src/platforms/platform.tscn

@@ -0,0 +1,178 @@
+[gd_scene load_steps=10 format=2]
+
+[ext_resource path="res://assets/shaders/wind_sway.tres" type="Material" id=1]
+[ext_resource path="res://assets/art/platforms/moving_platform.png" type="Texture" id=2]
+[ext_resource path="res://assets/art/props/grass_1.png" type="Texture" id=3]
+[ext_resource path="res://assets/art/props/grass_2.png" type="Texture" id=4]
+[ext_resource path="res://assets/art/props/grass_3.png" type="Texture" id=5]
+[ext_resource path="res://assets/art/props/bush_1.png" type="Texture" id=6]
+[ext_resource path="res://assets/art/props/vine_2.png" type="Texture" id=7]
+[ext_resource path="res://assets/art/props/vine_1.png" type="Texture" id=8]
+
+[sub_resource type="RectangleShape2D" id=1]
+extents = Vector2( 96, 13.5 )
+
+[node name="Platform" type="KinematicBody2D"]
+z_index = -1
+collision_layer = 8
+collision_mask = 0
+collision/safe_margin = 0.12
+motion/sync_to_physics = true
+
+[node name="Sprite" type="Sprite" parent="."]
+texture = ExtResource( 2 )
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+position = Vector2( 0, -7.5 )
+shape = SubResource( 1 )
+one_way_collision = true
+
+[node name="g67" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( 77, -37 )
+scale = Vector2( 0.8, 0.8 )
+z_index = -1
+texture = ExtResource( 3 )
+
+[node name="g69" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( -1.99999, -38 )
+scale = Vector2( 0.8, 0.8 )
+z_index = -1
+texture = ExtResource( 3 )
+
+[node name="g68" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( -52, -35 )
+scale = Vector2( 0.8, 0.8 )
+z_index = -1
+texture = ExtResource( 3 )
+
+[node name="g1" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( -36, -35 )
+scale = Vector2( 0.8, 0.8 )
+z_index = -1
+texture = ExtResource( 5 )
+
+[node name="g3" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( -82, -33 )
+scale = Vector2( 0.8, 0.8 )
+z_index = -1
+texture = ExtResource( 5 )
+
+[node name="g2" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( 31, -36 )
+scale = Vector2( 0.8, 0.8 )
+z_index = -1
+texture = ExtResource( 5 )
+
+[node name="g4" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( -22, -30 )
+scale = Vector2( 0.8, 0.8 )
+z_index = -1
+texture = ExtResource( 5 )
+
+[node name="g14" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( 51, -38 )
+scale = Vector2( 0.8, 0.8 )
+z_index = -1
+texture = ExtResource( 4 )
+
+[node name="g17" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( 65, -32 )
+scale = Vector2( 0.8, 0.8 )
+z_index = -1
+texture = ExtResource( 4 )
+
+[node name="g16" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( 17, -36 )
+scale = Vector2( 0.8, 0.8 )
+z_index = -1
+texture = ExtResource( 4 )
+
+[node name="g15" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( -71, -35 )
+scale = Vector2( 0.8, 0.8 )
+z_index = -1
+texture = ExtResource( 4 )
+
+[node name="B3" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( -2, -58 )
+rotation = -3.14159
+scale = Vector2( 1, -1 )
+z_index = -2
+texture = ExtResource( 6 )
+
+[node name="B4" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( 37, -42 )
+rotation = -3.14159
+scale = Vector2( 1, -1 )
+z_index = -2
+texture = ExtResource( 6 )
+
+[node name="B5" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( -32, -41 )
+rotation = -3.14159
+scale = Vector2( -1, -1 )
+z_index = -2
+texture = ExtResource( 6 )
+
+[node name="v31" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( -21, 18 )
+scale = Vector2( 1, -1 )
+z_index = 1
+texture = ExtResource( 8 )
+
+[node name="v35" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( 35, 7 )
+scale = Vector2( 1, -1 )
+z_index = -1
+texture = ExtResource( 8 )
+
+[node name="v32" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( 87, 16 )
+scale = Vector2( 1, -1 )
+z_index = 1
+texture = ExtResource( 8 )
+
+[node name="v33" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( -85, 15 )
+scale = Vector2( 1, -1 )
+z_index = 1
+texture = ExtResource( 7 )
+
+[node name="v34" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( 56, 18 )
+scale = Vector2( 1, -1 )
+z_index = 1
+texture = ExtResource( 7 )
+
+[node name="v36" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( -9, 11 )
+scale = Vector2( 1, -1 )
+z_index = -1
+texture = ExtResource( 7 )
+
+[node name="v37" type="Sprite" parent="."]
+material = ExtResource( 1 )
+position = Vector2( -61, 7 )
+scale = Vector2( 1, -1 )
+z_index = -1
+texture = ExtResource( 7 )

+ 0 - 0
2d/platformer/src/UserInterface/CoinsCounter.gd → 2d/platformer/src/ui/coins_counter.gd


+ 89 - 0
2d/platformer/src/ui/coins_counter.tscn

@@ -0,0 +1,89 @@
+[gd_scene load_steps=18 format=2]
+
+[ext_resource path="res://assets/theme/user_interface.tres" type="Theme" id=1]
+[ext_resource path="res://assets/art/coin/coin.png" type="Texture" id=2]
+[ext_resource path="res://src/ui/coins_counter.gd" type="Script" id=3]
+
+[sub_resource type="StyleBoxFlat" id=1]
+bg_color = Color( 0, 0, 0, 0.5 )
+
+[sub_resource type="AtlasTexture" id=7]
+atlas = ExtResource( 2 )
+region = Rect2( 0, 0, 32, 32 )
+
+[sub_resource type="AtlasTexture" id=8]
+atlas = ExtResource( 2 )
+region = Rect2( 32, 0, 32, 32 )
+
+[sub_resource type="AtlasTexture" id=9]
+atlas = ExtResource( 2 )
+region = Rect2( 64, 0, 32, 32 )
+
+[sub_resource type="AtlasTexture" id=10]
+atlas = ExtResource( 2 )
+region = Rect2( 96, 0, 32, 32 )
+
+[sub_resource type="AtlasTexture" id=11]
+atlas = ExtResource( 2 )
+region = Rect2( 128, 0, 32, 32 )
+
+[sub_resource type="AtlasTexture" id=12]
+atlas = ExtResource( 2 )
+region = Rect2( 160, 0, 32, 32 )
+
+[sub_resource type="AtlasTexture" id=13]
+atlas = ExtResource( 2 )
+region = Rect2( 192, 0, 32, 32 )
+
+[sub_resource type="AtlasTexture" id=14]
+atlas = ExtResource( 2 )
+region = Rect2( 224, 0, 32, 32 )
+
+[sub_resource type="AtlasTexture" id=15]
+atlas = ExtResource( 2 )
+region = Rect2( 0, 32, 32, 32 )
+
+[sub_resource type="AtlasTexture" id=16]
+atlas = ExtResource( 2 )
+region = Rect2( 32, 32, 32, 32 )
+
+[sub_resource type="AtlasTexture" id=17]
+atlas = ExtResource( 2 )
+region = Rect2( 64, 32, 32, 32 )
+
+[sub_resource type="AtlasTexture" id=18]
+atlas = ExtResource( 2 )
+region = Rect2( 96, 32, 32, 32 )
+
+[sub_resource type="SpriteFrames" id=6]
+animations = [ {
+"frames": [ SubResource( 7 ), SubResource( 8 ), SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ), SubResource( 13 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ), SubResource( 17 ), SubResource( 18 ) ],
+"loop": true,
+"name": "coin_spinning",
+"speed": 6.5
+} ]
+
+[node name="CoinsCounter" type="Panel"]
+margin_left = 5.0
+margin_top = 5.0
+margin_right = 100.0
+margin_bottom = 45.0
+rect_min_size = Vector2( 100, 45 )
+theme = ExtResource( 1 )
+custom_styles/panel = SubResource( 1 )
+script = ExtResource( 3 )
+
+[node name="Label" type="Label" parent="."]
+anchor_right = 1.0
+anchor_bottom = 1.0
+margin_right = -8.0
+text = "100"
+align = 2
+valign = 1
+autowrap = true
+
+[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
+position = Vector2( 21.5, 22.5 )
+frames = SubResource( 6 )
+animation = "coin_spinning"
+speed_scale = 2.0

+ 0 - 0
2d/platformer/src/UserInterface/PauseMenu.gd → 2d/platformer/src/ui/pause_menu.gd


+ 6 - 12
2d/platformer/src/UserInterface/PauseMenu.tscn → 2d/platformer/src/ui/pause_menu.tscn

@@ -1,38 +1,31 @@
-[gd_scene load_steps=6 format=2]
+[gd_scene load_steps=7 format=2]
 
 [ext_resource path="res://assets/theme/user_interface.tres" type="Theme" id=1]
-[ext_resource path="res://src/UserInterface/PauseMenu.gd" type="Script" id=2]
+[ext_resource path="res://src/ui/pause_menu.gd" type="Script" id=2]
 [ext_resource path="res://assets/theme/fonts/kenney_mini_square.tres" type="DynamicFontData" id=3]
-[ext_resource path="res://src/UserInterface/CoinsCounter.tscn" type="PackedScene" id=4]
+[ext_resource path="res://src/ui/coins_counter.tscn" type="PackedScene" id=4]
 
 [sub_resource type="DynamicFont" id=1]
 size = 44
 font_data = ExtResource( 3 )
 
+[sub_resource type="StyleBoxTexture" id=2]
+
 [node name="PauseMenu" type="Control"]
 pause_mode = 2
 anchor_right = 1.0
 anchor_bottom = 1.0
 theme = ExtResource( 1 )
 script = ExtResource( 2 )
-__meta__ = {
-"_edit_use_anchors_": false
-}
 
 [node name="ColorRect" type="ColorRect" parent="."]
 anchor_right = 1.0
 anchor_bottom = 1.0
 color = Color( 0, 0, 0, 0.294118 )
-__meta__ = {
-"_edit_use_anchors_": false
-}
 
 [node name="CenterContainer" type="CenterContainer" parent="ColorRect"]
 anchor_right = 1.0
 anchor_bottom = 1.0
-__meta__ = {
-"_edit_use_anchors_": false
-}
 
 [node name="VBoxContainer" type="VBoxContainer" parent="ColorRect/CenterContainer"]
 margin_left = 250.0
@@ -51,6 +44,7 @@ margin_top = 7.0
 margin_right = 300.0
 margin_bottom = 62.0
 custom_fonts/font = SubResource( 1 )
+custom_styles/normal = SubResource( 2 )
 text = "Game Paused"
 align = 1
 valign = 1

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.