瀏覽代碼

for the 2d platformer demos changing the asset resolution from 2x upscaled to "true" pixel art, also adjusting values likes positions

NetroScript 5 年之前
父節點
當前提交
fbe6286656
共有 70 個文件被更改,包括 329 次插入278 次删除
  1. 2 1
      2d/physics_platformer/Stage.tscn
  2. 1 0
      2d/physics_platformer/Stage2.tscn
  3. 72 72
      2d/physics_platformer/Tileset.tres
  4. 43 43
      2d/physics_platformer/TilesetEdit.tscn
  5. 14 14
      2d/physics_platformer/background/ParallaxBg.tscn
  6. 4 4
      2d/physics_platformer/background/Seesaw.tscn
  7. 二進制
      2d/physics_platformer/background/plank.png
  8. 2 2
      2d/physics_platformer/background/plank.png.import
  9. 二進制
      2d/physics_platformer/background/plankpin.png
  10. 2 2
      2d/physics_platformer/background/plankpin.png.import
  11. 二進制
      2d/physics_platformer/background/scroll_bg_cloud_1.png
  12. 2 2
      2d/physics_platformer/background/scroll_bg_cloud_1.png.import
  13. 二進制
      2d/physics_platformer/background/scroll_bg_cloud_2.png
  14. 2 2
      2d/physics_platformer/background/scroll_bg_cloud_2.png.import
  15. 二進制
      2d/physics_platformer/background/scroll_bg_cloud_3.png
  16. 2 2
      2d/physics_platformer/background/scroll_bg_cloud_3.png.import
  17. 二進制
      2d/physics_platformer/background/scroll_bg_fg_1.png
  18. 2 2
      2d/physics_platformer/background/scroll_bg_fg_1.png.import
  19. 二進制
      2d/physics_platformer/background/scroll_bg_fg_2.png
  20. 2 2
      2d/physics_platformer/background/scroll_bg_fg_2.png.import
  21. 二進制
      2d/physics_platformer/background/scroll_bg_sky.png
  22. 2 2
      2d/physics_platformer/background/scroll_bg_sky.png.import
  23. 2 0
      2d/physics_platformer/coin/Coin.tscn
  24. 二進制
      2d/physics_platformer/coin/coin.png
  25. 2 2
      2d/physics_platformer/coin/coin.png.import
  26. 10 10
      2d/physics_platformer/enemy/Enemy.tscn
  27. 1 1
      2d/physics_platformer/enemy/enemy.gd
  28. 二進制
      2d/physics_platformer/enemy/enemy.png
  29. 1 1
      2d/physics_platformer/enemy/enemy.png.import
  30. 1 1
      2d/physics_platformer/platform/MovingPlatform.tscn
  31. 2 2
      2d/physics_platformer/platform/OneWayPlatform.tscn
  32. 二進制
      2d/physics_platformer/platform/moving_platform.png
  33. 2 2
      2d/physics_platformer/platform/moving_platform.png.import
  34. 二進制
      2d/physics_platformer/platform/one_way_platform.png
  35. 2 2
      2d/physics_platformer/platform/one_way_platform.png.import
  36. 1 0
      2d/physics_platformer/player/Bullet.tscn
  37. 7 6
      2d/physics_platformer/player/Player.tscn
  38. 二進制
      2d/physics_platformer/player/bullet.png
  39. 2 2
      2d/physics_platformer/player/bullet.png.import
  40. 9 9
      2d/physics_platformer/player/player.gd
  41. 二進制
      2d/physics_platformer/player/robot_demo.png
  42. 1 1
      2d/physics_platformer/player/robot_demo.png.import
  43. 25 4
      2d/physics_platformer/project.godot
  44. 二進制
      2d/physics_platformer/tiles_demo.png
  45. 1 1
      2d/physics_platformer/tiles_demo.png.import
  46. 二進制
      2d/platformer/assets/art/background/cloud_1.png
  47. 二進制
      2d/platformer/assets/art/background/cloud_2.png
  48. 二進制
      2d/platformer/assets/art/background/cloud_3.png
  49. 二進制
      2d/platformer/assets/art/background/distant_platforms_1.png
  50. 二進制
      2d/platformer/assets/art/background/distant_platforms_2.png
  51. 二進制
      2d/platformer/assets/art/background/sky.png
  52. 二進制
      2d/platformer/assets/art/coin/coin.png
  53. 二進制
      2d/platformer/assets/art/enemy/enemy.png
  54. 二進制
      2d/platformer/assets/art/platforms/moving_platform.png
  55. 二進制
      2d/platformer/assets/art/platforms/one_way_platform.png
  56. 二進制
      2d/platformer/assets/art/player/bullet/bullet.png
  57. 6 6
      2d/platformer/assets/art/player/bullet/bullet.png.import
  58. 二進制
      2d/platformer/assets/art/player/robot_demo.png
  59. 二進制
      2d/platformer/assets/art/tileset/tiles_demo.png
  60. 27 27
      2d/platformer/assets/art/tileset/tileset.tres
  61. 24 2
      2d/platformer/project.godot
  62. 10 11
      2d/platformer/src/Actors/Enemy.tscn
  63. 1 1
      2d/platformer/src/Actors/Gun.gd
  64. 1 1
      2d/platformer/src/Actors/Player.gd
  65. 6 6
      2d/platformer/src/Actors/Player.tscn
  66. 3 2
      2d/platformer/src/Level/Level.tscn
  67. 26 26
      2d/platformer/src/Level/ParallaxBackground.tscn
  68. 1 0
      2d/platformer/src/Objects/Bullet.tscn
  69. 1 0
      2d/platformer/src/Objects/Coin.tscn
  70. 2 2
      2d/platformer/src/Platforms/Platform.tscn

文件差異過大導致無法顯示
+ 2 - 1
2d/physics_platformer/Stage.tscn


文件差異過大導致無法顯示
+ 1 - 0
2d/physics_platformer/Stage2.tscn


+ 72 - 72
2d/physics_platformer/Tileset.tres

@@ -5,62 +5,62 @@
 [sub_resource type="ConvexPolygonShape2D" id=1]
 
 custom_solver_bias = 0.0
-points = PoolVector2Array( -32, -24, 32, -24, 32, 32, -32, 32 )
+points = PoolVector2Array( -16, -12, 16, -12, 16, 16, -16, 16 )
 
 [sub_resource type="ConvexPolygonShape2D" id=2]
 
 custom_solver_bias = 0.0
-points = PoolVector2Array( -32, 32, -32, -24, 24, -24, 24, 32 )
+points = PoolVector2Array( -16, 16, -16, -12, 12, -12, 12, 16 )
 
 [sub_resource type="ConvexPolygonShape2D" id=3]
 
 custom_solver_bias = 0.0
-points = PoolVector2Array( -32, -32, 32, -32, 32, 32, -32, 32 )
+points = PoolVector2Array( -16, -16, 16, -16, 16, 16, -16, 16 )
 
 [sub_resource type="ConvexPolygonShape2D" id=4]
 
 custom_solver_bias = 0.0
-points = PoolVector2Array( -32, -56, 32, 8, 32, 64, -32, 64 )
+points = PoolVector2Array( -16, -28, 16, 4, 16, 32, -16, 32 )
 
 [sub_resource type="ConvexPolygonShape2D" id=5]
 
 custom_solver_bias = 0.0
-points = PoolVector2Array( -32, 32, -32, -32, 24, -32, 24, 32 )
+points = PoolVector2Array( -16, 16, -16, -16, 12, -16, 12, 16 )
 
 [sub_resource type="ConvexPolygonShape2D" id=6]
 
 custom_solver_bias = 0.0
-points = PoolVector2Array( -32, -24, 32, -24, 32, 24, -32, 24 )
+points = PoolVector2Array( -16, -12, 16, -12, 16, 12, -16, 12 )
 
 [sub_resource type="ConvexPolygonShape2D" id=7]
 
 custom_solver_bias = 0.0
-points = PoolVector2Array( -32, -24, 24, -24, 24, 24, -32, 24 )
+points = PoolVector2Array( -16, -12, 12, -12, 12, 12, -16, 12 )
 
 [sub_resource type="ConvexPolygonShape2D" id=8]
 
 custom_solver_bias = 0.0
-points = PoolVector2Array( -32, 32, -32, -32, 24, -32, 24, 32 )
+points = PoolVector2Array( -16, 16, -16, -16, 12, -16, 12, 16 )
 
 [sub_resource type="ConvexPolygonShape2D" id=9]
 
 custom_solver_bias = 0.0
-points = PoolVector2Array( -64, 32, -64, -32, -8, -32, -8, 32 )
+points = PoolVector2Array( -32, 16, -32, -16, -4, -16, -4, 16 )
 
 [sub_resource type="ConvexPolygonShape2D" id=10]
 
 custom_solver_bias = 0.0
-points = PoolVector2Array( -32, 32, -32, -32, 24, -32, 32, -24, 32, 32 )
+points = PoolVector2Array( -16, 16, -16, -16, 12, -16, 16, -12, 16, 16 )
 
 [sub_resource type="ConvexPolygonShape2D" id=11]
 
 custom_solver_bias = 0.0
-points = PoolVector2Array( -32, 32, -32, -24, 32, -24, 32, 32 )
+points = PoolVector2Array( -16, 16, -16, -12, 16, -12, 16, 16 )
 
 [sub_resource type="ConvexPolygonShape2D" id=12]
 
 custom_solver_bias = 0.0
-points = PoolVector2Array( -32, 32, -32, -24, 32, -24, 32, 32 )
+points = PoolVector2Array( -16, 16, -16, -12, 16, -12, 16, 16 )
 
 [resource]
 
@@ -68,144 +68,144 @@ points = PoolVector2Array( -32, 32, -32, -24, 32, -24, 32, 32 )
 0/texture = ExtResource( 1 )
 0/tex_offset = Vector2( 0, 0 )
 0/modulate = Color( 1, 1, 1, 1 )
-0/region = Rect2( 0, 0, 64, 64 )
-0/occluder_offset = Vector2( 32, 32 )
-0/navigation_offset = Vector2( 32, 32 )
-0/shape_offset = Vector2( 32, 32 )
+0/region = Rect2( 0, 0, 32, 32 )
+0/occluder_offset = Vector2( 16, 16 )
+0/navigation_offset = Vector2( 16, 16 )
+0/shape_offset = Vector2( 16, 16 )
 0/shapes = [ SubResource( 1 ) ]
 1/name = "edge"
 1/texture = ExtResource( 1 )
 1/tex_offset = Vector2( 0, 0 )
 1/modulate = Color( 1, 1, 1, 1 )
-1/region = Rect2( 64, 0, 64, 64 )
-1/occluder_offset = Vector2( 32, 32 )
-1/navigation_offset = Vector2( 32, 32 )
-1/shape_offset = Vector2( 32, 32 )
+1/region = Rect2( 32, 0, 32, 32 )
+1/occluder_offset = Vector2( 16, 16 )
+1/navigation_offset = Vector2( 16, 16 )
+1/shape_offset = Vector2( 16, 16 )
 1/shapes = [ SubResource( 2 ) ]
 2/name = "wall"
 2/texture = ExtResource( 1 )
 2/tex_offset = Vector2( 0, 0 )
 2/modulate = Color( 1, 1, 1, 1 )
-2/region = Rect2( 64, 64, 64, 64 )
-2/occluder_offset = Vector2( 32, 32 )
-2/navigation_offset = Vector2( 32, 32 )
-2/shape_offset = Vector2( 32, 32 )
+2/region = Rect2( 32, 32, 32, 32 )
+2/occluder_offset = Vector2( 16, 16 )
+2/navigation_offset = Vector2( 16, 16 )
+2/shape_offset = Vector2( 16, 16 )
 2/shapes = [ SubResource( 8 ) ]
 3/name = "wall_deco"
 3/texture = ExtResource( 1 )
 3/tex_offset = Vector2( 0, 0 )
 3/modulate = Color( 1, 1, 1, 1 )
-3/region = Rect2( 320, 128, 128, 64 )
-3/occluder_offset = Vector2( 64, 32 )
-3/navigation_offset = Vector2( 64, 32 )
-3/shape_offset = Vector2( 64, 32 )
+3/region = Rect2( 160, 64, 64, 32 )
+3/occluder_offset = Vector2( 32, 16 )
+3/navigation_offset = Vector2( 32, 16 )
+3/shape_offset = Vector2( 32, 16 )
 3/shapes = [ SubResource( 9 ) ]
 4/name = "corner"
 4/texture = ExtResource( 1 )
 4/tex_offset = Vector2( 0, 0 )
 4/modulate = Color( 1, 1, 1, 1 )
-4/region = Rect2( 64, 128, 64, 64 )
-4/occluder_offset = Vector2( 32, 32 )
-4/navigation_offset = Vector2( 32, 32 )
-4/shape_offset = Vector2( 32, 32 )
+4/region = Rect2( 32, 64, 32, 32 )
+4/occluder_offset = Vector2( 16, 16 )
+4/navigation_offset = Vector2( 16, 16 )
+4/shape_offset = Vector2( 16, 16 )
 4/shapes = [ SubResource( 10 ) ]
 5/name = "flowers"
 5/texture = ExtResource( 1 )
 5/tex_offset = Vector2( 0, 0 )
 5/modulate = Color( 1, 1, 1, 1 )
-5/region = Rect2( 192, 192, 64, 64 )
-5/occluder_offset = Vector2( 32, 32 )
-5/navigation_offset = Vector2( 32, 32 )
-5/shape_offset = Vector2( 32, 32 )
+5/region = Rect2( 96, 96, 32, 32 )
+5/occluder_offset = Vector2( 16, 16 )
+5/navigation_offset = Vector2( 16, 16 )
+5/shape_offset = Vector2( 16, 16 )
 5/shapes = [ SubResource( 11 ) ]
 6/name = "tree_base"
 6/texture = ExtResource( 1 )
 6/tex_offset = Vector2( 0, 0 )
 6/modulate = Color( 1, 1, 1, 1 )
-6/region = Rect2( 256, 192, 64, 64 )
-6/occluder_offset = Vector2( 32, 32 )
-6/navigation_offset = Vector2( 32, 32 )
-6/shape_offset = Vector2( 32, 32 )
+6/region = Rect2( 128, 96, 32, 32 )
+6/occluder_offset = Vector2( 16, 16 )
+6/navigation_offset = Vector2( 16, 16 )
+6/shape_offset = Vector2( 16, 16 )
 6/shapes = [ SubResource( 12 ) ]
 7/name = "tree_mid"
 7/texture = ExtResource( 1 )
 7/tex_offset = Vector2( 0, 0 )
 7/modulate = Color( 1, 1, 1, 1 )
-7/region = Rect2( 256, 128, 64, 64 )
-7/occluder_offset = Vector2( 32, 32 )
-7/navigation_offset = Vector2( 32, 32 )
+7/region = Rect2( 128, 64, 32, 32 )
+7/occluder_offset = Vector2( 16, 16 )
+7/navigation_offset = Vector2( 16, 16 )
 7/shape_offset = Vector2( 0, 0 )
 7/shapes = [  ]
 8/name = "tree_mid 2"
 8/texture = ExtResource( 1 )
 8/tex_offset = Vector2( 0, 0 )
 8/modulate = Color( 1, 1, 1, 1 )
-8/region = Rect2( 256, 64, 64, 64 )
-8/occluder_offset = Vector2( 32, 32 )
-8/navigation_offset = Vector2( 32, 32 )
+8/region = Rect2( 128, 32, 32, 32 )
+8/occluder_offset = Vector2( 16, 16 )
+8/navigation_offset = Vector2( 16, 16 )
 8/shape_offset = Vector2( 0, 0 )
 8/shapes = [  ]
 9/name = "tree_top"
 9/texture = ExtResource( 1 )
 9/tex_offset = Vector2( 0, 0 )
 9/modulate = Color( 1, 1, 1, 1 )
-9/region = Rect2( 256, 0, 64, 64 )
-9/occluder_offset = Vector2( 32, 32 )
-9/navigation_offset = Vector2( 32, 32 )
+9/region = Rect2( 128, 0, 32, 32 )
+9/occluder_offset = Vector2( 16, 16 )
+9/navigation_offset = Vector2( 16, 16 )
 9/shape_offset = Vector2( 0, 0 )
 9/shapes = [  ]
 10/name = "solid"
 10/texture = ExtResource( 1 )
 10/tex_offset = Vector2( 0, 0 )
 10/modulate = Color( 1, 1, 1, 1 )
-10/region = Rect2( 0, 64, 64, 64 )
-10/occluder_offset = Vector2( 32, 32 )
-10/navigation_offset = Vector2( 32, 32 )
+10/region = Rect2( 0, 32, 32, 32 )
+10/occluder_offset = Vector2( 16, 16 )
+10/navigation_offset = Vector2( 16, 16 )
 10/shape_offset = Vector2( 0, 0 )
 10/shapes = [  ]
 11/name = "ceiling"
 11/texture = ExtResource( 1 )
 11/tex_offset = Vector2( 0, 0 )
 11/modulate = Color( 1, 1, 1, 1 )
-11/region = Rect2( 384, 64, 64, 64 )
-11/occluder_offset = Vector2( 32, 32 )
-11/navigation_offset = Vector2( 32, 32 )
-11/shape_offset = Vector2( 32, 32 )
+11/region = Rect2( 192, 32, 32, 32 )
+11/occluder_offset = Vector2( 16, 16 )
+11/navigation_offset = Vector2( 16, 16 )
+11/shape_offset = Vector2( 16, 16 )
 11/shapes = [ SubResource( 3 ) ]
 12/name = "ramp"
 12/texture = ExtResource( 1 )
 12/tex_offset = Vector2( 0, 0 )
 12/modulate = Color( 1, 1, 1, 1 )
-12/region = Rect2( 128, 128, 64, 128 )
-12/occluder_offset = Vector2( 32, 64 )
-12/navigation_offset = Vector2( 32, 64 )
-12/shape_offset = Vector2( 32, 64 )
+12/region = Rect2( 64, 64, 32, 64 )
+12/occluder_offset = Vector2( 16, 32 )
+12/navigation_offset = Vector2( 16, 32 )
+12/shape_offset = Vector2( 16, 32 )
 12/shapes = [ SubResource( 4 ) ]
 13/name = "ceiling2wall"
 13/texture = ExtResource( 1 )
 13/tex_offset = Vector2( 0, 0 )
 13/modulate = Color( 1, 1, 1, 1 )
-13/region = Rect2( 448, 64, 64, 64 )
-13/occluder_offset = Vector2( 32, 32 )
-13/navigation_offset = Vector2( 32, 32 )
-13/shape_offset = Vector2( 32, 32 )
+13/region = Rect2( 224, 32, 32, 32 )
+13/occluder_offset = Vector2( 16, 16 )
+13/navigation_offset = Vector2( 16, 16 )
+13/shape_offset = Vector2( 16, 16 )
 13/shapes = [ SubResource( 5 ) ]
 14/name = "platform_floor"
 14/texture = ExtResource( 1 )
 14/tex_offset = Vector2( 0, 0 )
 14/modulate = Color( 1, 1, 1, 1 )
-14/region = Rect2( 128, 0, 64, 64 )
-14/occluder_offset = Vector2( 32, 32 )
-14/navigation_offset = Vector2( 32, 32 )
-14/shape_offset = Vector2( 32, 32 )
+14/region = Rect2( 64, 0, 32, 32 )
+14/occluder_offset = Vector2( 16, 16 )
+14/navigation_offset = Vector2( 16, 16 )
+14/shape_offset = Vector2( 16, 16 )
 14/shapes = [ SubResource( 6 ) ]
 15/name = "platform_edge"
 15/texture = ExtResource( 1 )
 15/tex_offset = Vector2( 0, 0 )
 15/modulate = Color( 1, 1, 1, 1 )
-15/region = Rect2( 192, 0, 64, 64 )
-15/occluder_offset = Vector2( 32, 32 )
-15/navigation_offset = Vector2( 32, 32 )
-15/shape_offset = Vector2( 32, 32 )
+15/region = Rect2( 96, 0, 32, 32 )
+15/occluder_offset = Vector2( 16, 16 )
+15/navigation_offset = Vector2( 16, 16 )
+15/shape_offset = Vector2( 16, 16 )
 15/shapes = [ SubResource( 7 ) ]
 

+ 43 - 43
2d/physics_platformer/TilesetEdit.tscn

@@ -6,142 +6,142 @@
 
 [node name="Floor" type="Sprite" parent="."]
 texture = ExtResource( 1 )
-region_rect = Rect2( 0, 0, 64, 64 )
+region_rect = Rect2( 0, 0, 32, 32 )
 
 [node name="Collision" type="StaticBody2D" parent="Floor"]
 
 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Floor/Collision"]
-polygon = PoolVector2Array( 32, -24, 32, 32, -32, 32, -32, -24 )
+polygon = PoolVector2Array( 16, -12, 16, 16, -16, 16, -16, -12 )
 
 [node name="Edge" type="Sprite" parent="."]
-position = Vector2( 64, 0 )
+position = Vector2( 32, 0 )
 texture = ExtResource( 1 )
-region_rect = Rect2( 64, 0, 64, 64 )
+region_rect = Rect2( 32, 0, 32, 32 )
 
 [node name="Collision" type="StaticBody2D" parent="Edge"]
 
 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Edge/Collision"]
-polygon = PoolVector2Array( -32, -24, 24, -24, 24, 32, -32, 32 )
+polygon = PoolVector2Array( -16, -12, 12, -12, 12, 16, -16, 16 )
 
 [node name="Wall" type="Sprite" parent="."]
-position = Vector2( 64, 64 )
+position = Vector2( 32, 32 )
 texture = ExtResource( 1 )
-region_rect = Rect2( 64, 64, 64, 64 )
+region_rect = Rect2( 32, 32, 32, 32 )
 
 [node name="Collision" type="StaticBody2D" parent="Wall"]
 
 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Wall/Collision"]
-polygon = PoolVector2Array( -32, -32, 24, -32, 24, 32, -32, 32 )
+polygon = PoolVector2Array( -16, -16, 12, -16, 12, 16, -16, 16 )
 
 [node name="WallDeco" type="Sprite" parent="."]
-position = Vector2( 96, 128 )
+position = Vector2( 48, 64 )
 texture = ExtResource( 1 )
-region_rect = Rect2( 320, 128, 128, 64 )
+region_rect = Rect2( 160, 64, 64, 32 )
 
 [node name="Collision" type="StaticBody2D" parent="WallDeco"]
 
 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="WallDeco/Collision"]
-polygon = PoolVector2Array( -64, -32, -8, -32, -8, 32, -64, 32 )
+polygon = PoolVector2Array( -32, -16, -4, -16, -4, 16, -32, 16 )
 
 [node name="Corner" type="Sprite" parent="."]
-position = Vector2( 64, 192 )
+position = Vector2( 32, 96 )
 texture = ExtResource( 1 )
-region_rect = Rect2( 64, 128, 64, 64 )
+region_rect = Rect2( 32, 64, 32, 32 )
 
 [node name="Collision" type="StaticBody2D" parent="Corner"]
 
 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Corner/Collision"]
-polygon = PoolVector2Array( -32, -32, 24, -32, 32, -24, 32, 32, -32, 32 )
+polygon = PoolVector2Array( -16, -16, 12, -16, 16, -12, 16, 16, -16, 16 )
 
 [node name="Flowers" type="Sprite" parent="."]
-position = Vector2( 128, 192 )
+position = Vector2( 64, 96 )
 texture = ExtResource( 1 )
-region_rect = Rect2( 192, 192, 64, 64 )
+region_rect = Rect2( 96, 96, 32, 32 )
 
 [node name="Collision" type="StaticBody2D" parent="Flowers"]
 
 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Flowers/Collision"]
-polygon = PoolVector2Array( -32, 32, 32, 32, 32, -24, -32, -24 )
+polygon = PoolVector2Array( -16, 16, 16, 16, 16, -12, -16, -12 )
 
 [node name="TreeBase" type="Sprite" parent="."]
-position = Vector2( 192, 192 )
+position = Vector2( 96, 96 )
 texture = ExtResource( 1 )
-region_rect = Rect2( 256, 192, 64, 64 )
+region_rect = Rect2( 128, 96, 32, 32 )
 
 [node name="Collision" type="StaticBody2D" parent="TreeBase"]
 
 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="TreeBase/Collision"]
-polygon = PoolVector2Array( -32, 32, 32, 32, 32, -24, -32, -24 )
+polygon = PoolVector2Array( -16, 16, 16, 16, 16, -12, -16, -12 )
 
 [node name="TreeMid" type="Sprite" parent="."]
-position = Vector2( 192, 128 )
+position = Vector2( 96, 64 )
 texture = ExtResource( 1 )
-region_rect = Rect2( 256, 128, 64, 64 )
+region_rect = Rect2( 128, 64, 32, 32 )
 
 [node name="TreeMid2" type="Sprite" parent="."]
-position = Vector2( 192, 64 )
+position = Vector2( 96, 32 )
 texture = ExtResource( 1 )
-region_rect = Rect2( 256, 64, 64, 64 )
+region_rect = Rect2( 128, 32, 32, 32 )
 
 [node name="TreeTop" type="Sprite" parent="."]
-position = Vector2( 192, 0 )
+position = Vector2( 96, 0 )
 texture = ExtResource( 1 )
-region_rect = Rect2( 256, 0, 64, 64 )
+region_rect = Rect2( 128, 0, 32, 32 )
 
 [node name="Solid" type="Sprite" parent="."]
-position = Vector2( 0, 64 )
+position = Vector2( 0, 32 )
 texture = ExtResource( 1 )
-region_rect = Rect2( 0, 64, 64, 64 )
+region_rect = Rect2( 0, 32, 32, 32 )
 
 [node name="Ceiling" type="Sprite" parent="."]
-position = Vector2( 0, 128 )
+position = Vector2( 0, 64 )
 texture = ExtResource( 1 )
-region_rect = Rect2( 384, 64, 64, 64 )
+region_rect = Rect2( 192, 32, 32, 32 )
 
 [node name="Collision" type="StaticBody2D" parent="Ceiling"]
 
 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Ceiling/Collision"]
-polygon = PoolVector2Array( 32, -32, 32, 32, -32, 32, -32, -32 )
+polygon = PoolVector2Array( 16, -16, 16, 16, -16, 16, -16, -16 )
 
 [node name="Ramp" type="Sprite" parent="."]
-position = Vector2( 256, 224 )
+position = Vector2( 128, 112 )
 texture = ExtResource( 1 )
-region_rect = Rect2( 128, 128, 64, 128 )
+region_rect = Rect2( 64, 64, 32, 64 )
 
 [node name="Collision" type="StaticBody2D" parent="Ramp"]
 
 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Ramp/Collision"]
-polygon = PoolVector2Array( -32, -56, 32, 8, 32, 64, -32, 64 )
+polygon = PoolVector2Array( -16, -28, 16, 4, 16, 32, -16, 32 )
 
 [node name="CeilingWall" type="Sprite" parent="."]
-position = Vector2( 0, 192 )
+position = Vector2( 0, 96 )
 texture = ExtResource( 1 )
-region_rect = Rect2( 448, 64, 64, 64 )
+region_rect = Rect2( 224, 32, 32, 32 )
 
 [node name="Collision" type="StaticBody2D" parent="CeilingWall"]
 
 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="CeilingWall/Collision"]
-polygon = PoolVector2Array( -32, -32, 24, -32, 24, 32, -32, 32 )
+polygon = PoolVector2Array( -16, -16, 12, -16, 12, 16, -16, 16 )
 
 [node name="PlatformFloor" type="Sprite" parent="."]
-position = Vector2( 0, 256 )
+position = Vector2( 0, 128 )
 texture = ExtResource( 1 )
-region_rect = Rect2( 128, 0, 64, 64 )
+region_rect = Rect2( 64, 0, 32, 32 )
 
 [node name="Collision" type="StaticBody2D" parent="PlatformFloor"]
 
 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="PlatformFloor/Collision"]
-polygon = PoolVector2Array( 32, -24, 32, 24, -32, 24, -32, -24 )
+polygon = PoolVector2Array( 16, -12, 16, 12, -16, 12, -16, -12 )
 
 [node name="PlatformEdge" type="Sprite" parent="."]
-position = Vector2( 64, 256 )
+position = Vector2( 32, 128 )
 texture = ExtResource( 1 )
-region_rect = Rect2( 192, 0, 64, 64 )
+region_rect = Rect2( 96, 0, 32, 32 )
 
 [node name="Collision" type="StaticBody2D" parent="PlatformEdge"]
 
 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="PlatformEdge/Collision"]
-polygon = PoolVector2Array( 24, -24, 24, 24, -32, 24, -32, -24 )
+polygon = PoolVector2Array( 12, -12, 12, 12, -16, 12, -16, -12 )
 
 [node name="Help" type="Label" parent="."]
 margin_left = 1.0

+ 14 - 14
2d/physics_platformer/background/ParallaxBg.tscn

@@ -11,7 +11,7 @@
 scroll_base_scale = Vector2( 0.7, 0 )
 
 [node name="Sky" type="ParallaxLayer" parent="."]
-motion_mirroring = Vector2( 800, 0 )
+motion_mirroring = Vector2( 400, 0 )
 
 [node name="Sprite" type="Sprite" parent="Sky"]
 scale = Vector2( 32, 0.94 )
@@ -20,54 +20,54 @@ centered = false
 
 [node name="Clouds" type="ParallaxLayer" parent="."]
 motion_scale = Vector2( 0.1, 1 )
-motion_mirroring = Vector2( 800, 0 )
+motion_mirroring = Vector2( 400, 0 )
 
 [node name="Sprite1" type="Sprite" parent="Clouds"]
-position = Vector2( 28, 127 )
+position = Vector2( 14, 64 )
 texture = ExtResource( 2 )
 centered = false
 
 [node name="Sprite2" type="Sprite" parent="Clouds"]
-position = Vector2( 404, 24 )
+position = Vector2( 202, 12 )
 texture = ExtResource( 2 )
 centered = false
 
 [node name="Sprite3" type="Sprite" parent="Clouds"]
-position = Vector2( 154, 46 )
+position = Vector2( 77, 23 )
 texture = ExtResource( 3 )
 centered = false
 
 [node name="Sprite4" type="Sprite" parent="Clouds"]
-position = Vector2( 525, 130 )
+position = Vector2( 272, 65 )
 texture = ExtResource( 3 )
 centered = false
 
 [node name="Sprite5" type="Sprite" parent="Clouds"]
-position = Vector2( 255, 158 )
+position = Vector2( 127, 79 )
 texture = ExtResource( 4 )
 centered = false
 
 [node name="Sprite6" type="Sprite" parent="Clouds"]
-position = Vector2( 674, 70 )
+position = Vector2( 337, 35 )
 texture = ExtResource( 4 )
 centered = false
 
 [node name="Mount2" type="ParallaxLayer" parent="."]
 motion_scale = Vector2( 0.2, 1 )
-motion_mirroring = Vector2( 800, 0 )
+motion_mirroring = Vector2( 400, 0 )
 
 [node name="Sprite" type="Sprite" parent="Mount2"]
-position = Vector2( 0, 225 )
+position = Vector2( 0, 113 )
 texture = ExtResource( 5 )
 centered = false
-region_rect = Rect2( 0, 0, 800, 256 )
+region_rect = Rect2( 0, 0, 400, 128 )
 
 [node name="Mount1" type="ParallaxLayer" parent="."]
 motion_scale = Vector2( 0.4, 1 )
-motion_mirroring = Vector2( 800, 0 )
+motion_mirroring = Vector2( 400, 0 )
 
 [node name="Sprite" type="Sprite" parent="Mount1"]
-position = Vector2( 0, 225 )
+position = Vector2( 0, 113 )
 texture = ExtResource( 6 )
 centered = false
-region_rect = Rect2( 0, 0, 800, 256 )
+region_rect = Rect2( 0, 0, 400, 128 )

+ 4 - 4
2d/physics_platformer/background/Seesaw.tscn

@@ -4,10 +4,10 @@
 [ext_resource path="res://background/plankpin.png" type="Texture" id=2]
 
 [sub_resource type="RectangleShape2D" id=1]
-extents = Vector2( 128, 8 )
+extents = Vector2( 64, 4 )
 
 [sub_resource type="RectangleShape2D" id=2]
-extents = Vector2( 16, 27 )
+extents = Vector2( 8, 13.5 )
 
 [node name="Seesaw" type="Node2D"]
 
@@ -27,9 +27,9 @@ node_b = NodePath("../Pillar")
 [node name="Pillar" type="StaticBody2D" parent="."]
 
 [node name="Sprite" type="Sprite" parent="Pillar"]
-position = Vector2( -0.290825, 20.2425 )
+position = Vector2( -0.1454125, 10.12125 )
 texture = ExtResource( 2 )
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="Pillar"]
-position = Vector2( 0, 25 )
+position = Vector2( 0, 12.5 )
 shape = SubResource( 2 )

二進制
2d/physics_platformer/background/plank.png


+ 2 - 2
2d/physics_platformer/background/plank.png.import

@@ -20,7 +20,7 @@ compress/hdr_mode=0
 compress/bptc_ldr=0
 compress/normal_map=0
 flags/repeat=0
-flags/filter=true
+flags/filter=false
 flags/mipmaps=false
 flags/anisotropic=false
 flags/srgb=2
@@ -30,5 +30,5 @@ process/HDR_as_SRGB=false
 process/invert_color=false
 stream=false
 size_limit=0
-detect_3d=true
+detect_3d=false
 svg/scale=1.0

二進制
2d/physics_platformer/background/plankpin.png


+ 2 - 2
2d/physics_platformer/background/plankpin.png.import

@@ -20,7 +20,7 @@ compress/hdr_mode=0
 compress/bptc_ldr=0
 compress/normal_map=0
 flags/repeat=0
-flags/filter=true
+flags/filter=false
 flags/mipmaps=false
 flags/anisotropic=false
 flags/srgb=2
@@ -30,5 +30,5 @@ process/HDR_as_SRGB=false
 process/invert_color=false
 stream=false
 size_limit=0
-detect_3d=true
+detect_3d=false
 svg/scale=1.0

二進制
2d/physics_platformer/background/scroll_bg_cloud_1.png


+ 2 - 2
2d/physics_platformer/background/scroll_bg_cloud_1.png.import

@@ -20,7 +20,7 @@ compress/hdr_mode=0
 compress/bptc_ldr=0
 compress/normal_map=0
 flags/repeat=0
-flags/filter=true
+flags/filter=false
 flags/mipmaps=false
 flags/anisotropic=false
 flags/srgb=2
@@ -30,5 +30,5 @@ process/HDR_as_SRGB=false
 process/invert_color=false
 stream=false
 size_limit=0
-detect_3d=true
+detect_3d=false
 svg/scale=1.0

二進制
2d/physics_platformer/background/scroll_bg_cloud_2.png


+ 2 - 2
2d/physics_platformer/background/scroll_bg_cloud_2.png.import

@@ -20,7 +20,7 @@ compress/hdr_mode=0
 compress/bptc_ldr=0
 compress/normal_map=0
 flags/repeat=0
-flags/filter=true
+flags/filter=false
 flags/mipmaps=false
 flags/anisotropic=false
 flags/srgb=2
@@ -30,5 +30,5 @@ process/HDR_as_SRGB=false
 process/invert_color=false
 stream=false
 size_limit=0
-detect_3d=true
+detect_3d=false
 svg/scale=1.0

二進制
2d/physics_platformer/background/scroll_bg_cloud_3.png


+ 2 - 2
2d/physics_platformer/background/scroll_bg_cloud_3.png.import

@@ -20,7 +20,7 @@ compress/hdr_mode=0
 compress/bptc_ldr=0
 compress/normal_map=0
 flags/repeat=0
-flags/filter=true
+flags/filter=false
 flags/mipmaps=false
 flags/anisotropic=false
 flags/srgb=2
@@ -30,5 +30,5 @@ process/HDR_as_SRGB=false
 process/invert_color=false
 stream=false
 size_limit=0
-detect_3d=true
+detect_3d=false
 svg/scale=1.0

二進制
2d/physics_platformer/background/scroll_bg_fg_1.png


+ 2 - 2
2d/physics_platformer/background/scroll_bg_fg_1.png.import

@@ -20,7 +20,7 @@ compress/hdr_mode=0
 compress/bptc_ldr=0
 compress/normal_map=0
 flags/repeat=0
-flags/filter=true
+flags/filter=false
 flags/mipmaps=false
 flags/anisotropic=false
 flags/srgb=2
@@ -30,5 +30,5 @@ process/HDR_as_SRGB=false
 process/invert_color=false
 stream=false
 size_limit=0
-detect_3d=true
+detect_3d=false
 svg/scale=1.0

二進制
2d/physics_platformer/background/scroll_bg_fg_2.png


+ 2 - 2
2d/physics_platformer/background/scroll_bg_fg_2.png.import

@@ -20,7 +20,7 @@ compress/hdr_mode=0
 compress/bptc_ldr=0
 compress/normal_map=0
 flags/repeat=0
-flags/filter=true
+flags/filter=false
 flags/mipmaps=false
 flags/anisotropic=false
 flags/srgb=2
@@ -30,5 +30,5 @@ process/HDR_as_SRGB=false
 process/invert_color=false
 stream=false
 size_limit=0
-detect_3d=true
+detect_3d=false
 svg/scale=1.0

二進制
2d/physics_platformer/background/scroll_bg_sky.png


+ 2 - 2
2d/physics_platformer/background/scroll_bg_sky.png.import

@@ -20,7 +20,7 @@ compress/hdr_mode=0
 compress/bptc_ldr=0
 compress/normal_map=0
 flags/repeat=0
-flags/filter=true
+flags/filter=false
 flags/mipmaps=false
 flags/anisotropic=false
 flags/srgb=2
@@ -30,5 +30,5 @@ process/HDR_as_SRGB=false
 process/invert_color=false
 stream=false
 size_limit=0
-detect_3d=true
+detect_3d=false
 svg/scale=1.0

+ 2 - 0
2d/physics_platformer/coin/Coin.tscn

@@ -90,6 +90,7 @@ tracks/4/keys = {
 }
 
 [sub_resource type="CircleShape2D" id=3]
+radius = 5.0
 
 [sub_resource type="CanvasItemMaterial" id=4]
 blend_mode = 1
@@ -139,5 +140,6 @@ process_material = SubResource( 7 )
 texture = ExtResource( 4 )
 
 [node name="Enabler" type="VisibilityEnabler2D" parent="."]
+rect = Rect2( -5, -5, 10, 10 )
 pause_particles = false
 [connection signal="body_entered" from="." to="." method="_on_body_enter"]

二進制
2d/physics_platformer/coin/coin.png


+ 2 - 2
2d/physics_platformer/coin/coin.png.import

@@ -20,7 +20,7 @@ compress/hdr_mode=0
 compress/bptc_ldr=0
 compress/normal_map=0
 flags/repeat=0
-flags/filter=true
+flags/filter=false
 flags/mipmaps=false
 flags/anisotropic=false
 flags/srgb=2
@@ -30,5 +30,5 @@ process/HDR_as_SRGB=false
 process/invert_color=false
 stream=false
 size_limit=0
-detect_3d=true
+detect_3d=false
 svg/scale=1.0

+ 10 - 10
2d/physics_platformer/enemy/Enemy.tscn

@@ -101,7 +101,7 @@ tracks/0/keys = {
 }
 
 [sub_resource type="CircleShape2D" id=5]
-radius = 14.0
+radius = 7.0
 
 [sub_resource type="Gradient" id=6]
 offsets = PoolRealArray( 0, 0.564972, 1 )
@@ -130,8 +130,8 @@ contacts_reported = 4
 script = ExtResource( 1 )
 
 [node name="Enabler" type="VisibilityEnabler2D" parent="."]
-position = Vector2( 16.2569, 11.0034 )
-scale = Vector2( 23.5056, 10.8629 )
+position = Vector2( 8.12845, 5.5017 )
+scale = Vector2( 11.7528, 5.43145 )
 pause_particles = false
 
 [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
@@ -145,26 +145,26 @@ hframes = 8
 frame = 4
 
 [node name="Shape1" type="CollisionShape2D" parent="."]
-position = Vector2( -1.08072, -2.16144 )
+position = Vector2( -0.54036, -1.08072 )
 shape = SubResource( 5 )
 
 [node name="Shape2" type="CollisionShape2D" parent="."]
-position = Vector2( 6.48431, 3.24216 )
+position = Vector2( 3.24216, 1.62108 )
 shape = SubResource( 5 )
 
 [node name="Shape3" type="CollisionShape2D" parent="."]
-position = Vector2( -12.495, 3.53415 )
+position = Vector2( -6.2475, 1.76707 )
 shape = SubResource( 5 )
 
 [node name="RaycastLeft" type="RayCast2D" parent="."]
-position = Vector2( -33.2868, -9.34363 )
+position = Vector2( -14, -4.672 )
 enabled = true
-cast_to = Vector2( 0, 45 )
+cast_to = Vector2( 0, 22.5 )
 
 [node name="RaycastRight" type="RayCast2D" parent="."]
-position = Vector2( 29.1987, -9.34363 )
+position = Vector2( 11, -4.672 )
 enabled = true
-cast_to = Vector2( 0, 45 )
+cast_to = Vector2( 0, 22.5 )
 
 [node name="Particles2D" type="Particles2D" parent="."]
 modulate = Color( 1, 1, 1, 0.685843 )

+ 1 - 1
2d/physics_platformer/enemy/enemy.gd

@@ -1,7 +1,7 @@
 class_name Enemy
 extends RigidBody2D
 
-const WALK_SPEED = 50
+const WALK_SPEED = 25
 
 enum State {
 	WALKING,

二進制
2d/physics_platformer/enemy/enemy.png


+ 1 - 1
2d/physics_platformer/enemy/enemy.png.import

@@ -30,5 +30,5 @@ process/HDR_as_SRGB=false
 process/invert_color=false
 stream=false
 size_limit=0
-detect_3d=true
+detect_3d=false
 svg/scale=1.0

+ 1 - 1
2d/physics_platformer/platform/MovingPlatform.tscn

@@ -13,4 +13,4 @@ mode = 3
 texture = ExtResource( 2 )
 
 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Platform"]
-polygon = PoolVector2Array( -88, -24, 88, -24, 88, 24, -88, 24 )
+polygon = PoolVector2Array( -44, -12, 44, -12, 44, 12, -44, 12 )

+ 2 - 2
2d/physics_platformer/platform/OneWayPlatform.tscn

@@ -3,7 +3,7 @@
 [ext_resource path="res://platform/one_way_platform.png" type="Texture" id=1]
 
 [sub_resource type="RectangleShape2D" id=1]
-extents = Vector2( 100, 10 )
+extents = Vector2( 50, 5 )
 
 [node name="OneWayPlatform" type="StaticBody2D"]
 
@@ -11,6 +11,6 @@ extents = Vector2( 100, 10 )
 texture = ExtResource( 1 )
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-position = Vector2( 1.46304, -13.1672 )
+position = Vector2( 0.73152, -6.5836 )
 shape = SubResource( 1 )
 one_way_collision = true

二進制
2d/physics_platformer/platform/moving_platform.png


+ 2 - 2
2d/physics_platformer/platform/moving_platform.png.import

@@ -20,7 +20,7 @@ compress/hdr_mode=0
 compress/bptc_ldr=0
 compress/normal_map=0
 flags/repeat=0
-flags/filter=true
+flags/filter=false
 flags/mipmaps=false
 flags/anisotropic=false
 flags/srgb=2
@@ -30,5 +30,5 @@ process/HDR_as_SRGB=false
 process/invert_color=false
 stream=false
 size_limit=0
-detect_3d=true
+detect_3d=false
 svg/scale=1.0

二進制
2d/physics_platformer/platform/one_way_platform.png


+ 2 - 2
2d/physics_platformer/platform/one_way_platform.png.import

@@ -20,7 +20,7 @@ compress/hdr_mode=0
 compress/bptc_ldr=0
 compress/normal_map=0
 flags/repeat=0
-flags/filter=true
+flags/filter=false
 flags/mipmaps=false
 flags/anisotropic=false
 flags/srgb=2
@@ -30,5 +30,5 @@ process/HDR_as_SRGB=false
 process/invert_color=false
 stream=false
 size_limit=0
-detect_3d=true
+detect_3d=false
 svg/scale=1.0

+ 1 - 0
2d/physics_platformer/player/Bullet.tscn

@@ -17,6 +17,7 @@ orbit_velocity_random = 0.0
 scale = 0.8
 
 [sub_resource type="CircleShape2D" id=3]
+radius = 4.5
 
 [sub_resource type="Animation" id=4]
 length = 1.5

+ 7 - 6
2d/physics_platformer/player/Player.tscn

@@ -203,10 +203,11 @@ tracks/0/keys = {
 
 [sub_resource type="RayShape2D" id=15]
 custom_solver_bias = 0.5
+length = 18.0
 
 [node name="Player" type="RigidBody2D"]
 mode = 2
-mass = 3.0
+mass = 1.5
 physics_material_override = SubResource( 1 )
 custom_integrator = true
 contacts_reported = 3
@@ -219,7 +220,7 @@ hframes = 16
 
 [node name="Smoke" type="Particles2D" parent="Sprite"]
 self_modulate = Color( 1, 1, 1, 0.26702 )
-position = Vector2( 20.7312, 3.21187 )
+position = Vector2( 10, 1.5 )
 rotation = -1.45648
 emitting = false
 lifetime = 0.3
@@ -243,19 +244,19 @@ anims/standing_weapon_ready = SubResource( 14 )
 
 [node name="Camera" type="Camera2D" parent="."]
 current = true
+zoom = Vector2( 0.5, 0.5 )
 limit_left = 0
 limit_top = 0
 
 [node name="BulletShoot" type="Position2D" parent="."]
-position = Vector2( 31.2428, 4.08784 )
+position = Vector2( 15, 2 )
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-position = Vector2( 0.291992, -12.1587 )
-scale = Vector2( 1, 1.76469 )
+position = Vector2( 0.15, -6 )
 shape = SubResource( 15 )
 
 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."]
-polygon = PoolVector2Array( -0.138023, 16.5036, -19.902, -24.8691, 19.3625, -24.6056 )
+polygon = PoolVector2Array( -0.138, 8.25, -10, -12, 11, -12 )
 
 [node name="UI" type="CanvasLayer" parent="."]
 layer = 0

二進制
2d/physics_platformer/player/bullet.png


+ 2 - 2
2d/physics_platformer/player/bullet.png.import

@@ -20,7 +20,7 @@ compress/hdr_mode=0
 compress/bptc_ldr=0
 compress/normal_map=0
 flags/repeat=0
-flags/filter=true
+flags/filter=false
 flags/mipmaps=false
 flags/anisotropic=false
 flags/srgb=2
@@ -30,5 +30,5 @@ process/HDR_as_SRGB=false
 process/invert_color=false
 stream=false
 size_limit=0
-detect_3d=true
+detect_3d=false
 svg/scale=1.0

+ 9 - 9
2d/physics_platformer/player/player.gd

@@ -23,13 +23,13 @@ extends RigidBody2D
 #    - Friction cant be used, so floor velocity must be considered
 #      for moving platforms.
 
-const WALK_ACCEL = 800.0
-const WALK_DEACCEL = 800.0
-const WALK_MAX_VELOCITY = 200.0
-const AIR_ACCEL = 200.0
-const AIR_DEACCEL = 200.0
-const JUMP_VELOCITY = 460
-const STOP_JUMP_FORCE = 900.0
+const WALK_ACCEL = 400.0
+const WALK_DEACCEL = 400.0
+const WALK_MAX_VELOCITY = 100.0
+const AIR_ACCEL = 100.0
+const AIR_DEACCEL = 100.0
+const JUMP_VELOCITY = 230
+const STOP_JUMP_FORCE = 450.0
 const MAX_SHOOT_POSE_TIME = 0.3
 const MAX_FLOOR_AIRBORNE_TIME = 0.15
 
@@ -209,7 +209,7 @@ func _shot_bullet():
 	bi.position = pos
 	get_parent().add_child(bi)
 	
-	bi.linear_velocity = Vector2(800.0 * ss, -80)
+	bi.linear_velocity = Vector2(400.0 * ss, -40)
 	
 	($Sprite/Smoke as Particles2D).restart()
 	($SoundShoot as AudioStreamPlayer2D).play()
@@ -219,5 +219,5 @@ func _shot_bullet():
 
 func _spawn_enemy_above():
 	var e = Enemy.instance()
-	e.position = position + 100 * Vector2.UP
+	e.position = position + 50 * Vector2.UP
 	get_parent().add_child(e)

二進制
2d/physics_platformer/player/robot_demo.png


+ 1 - 1
2d/physics_platformer/player/robot_demo.png.import

@@ -30,5 +30,5 @@ process/HDR_as_SRGB=false
 process/invert_color=false
 stream=false
 size_limit=0
-detect_3d=true
+detect_3d=false
 svg/scale=1.0

+ 25 - 4
2d/physics_platformer/project.godot

@@ -62,8 +62,6 @@ window/size/width=800
 window/size/height=480
 window/stretch/mode="2d"
 window/stretch/aspect="keep"
-stretch/aspect="keep_height"
-stretch/mode="2d"
 
 [gdnative]
 
@@ -73,6 +71,29 @@ singletons=[  ]
 
 repeat=false
 
+[importer_defaults]
+
+texture={
+"compress/bptc_ldr": 0,
+"compress/hdr_mode": 0,
+"compress/lossy_quality": 0.7,
+"compress/mode": 0,
+"compress/normal_map": 0,
+"detect_3d": false,
+"flags/anisotropic": false,
+"flags/filter": false,
+"flags/mipmaps": false,
+"flags/repeat": 0,
+"flags/srgb": 2,
+"process/HDR_as_SRGB": false,
+"process/fix_alpha_border": true,
+"process/invert_color": false,
+"process/premult_alpha": false,
+"size_limit": 0,
+"stream": false,
+"svg/scale": 1.0
+}
+
 [input]
 
 jump={
@@ -115,7 +136,7 @@ spawn={
 
 [physics]
 
-2d/default_gravity=700
+2d/default_gravity=350
 
 [rasterizer]
 
@@ -129,9 +150,9 @@ mipmap_policy=1
 
 quality/intended_usage/framebuffer_allocation=0
 quality/intended_usage/framebuffer_allocation.mobile=1
+quality/2d/use_pixel_snap=true
 quality/filters/anisotropic_filter_level=2
 quality/filters/use_nearest_mipmap_filter=true
-quality/voxel_cone_tracing/high_quality=false
 quality/depth/hdr=false
 
 [texture_import]

二進制
2d/physics_platformer/tiles_demo.png


+ 1 - 1
2d/physics_platformer/tiles_demo.png.import

@@ -30,5 +30,5 @@ process/HDR_as_SRGB=false
 process/invert_color=false
 stream=false
 size_limit=0
-detect_3d=true
+detect_3d=false
 svg/scale=1.0

二進制
2d/platformer/assets/art/background/cloud_1.png


二進制
2d/platformer/assets/art/background/cloud_2.png


二進制
2d/platformer/assets/art/background/cloud_3.png


二進制
2d/platformer/assets/art/background/distant_platforms_1.png


二進制
2d/platformer/assets/art/background/distant_platforms_2.png


二進制
2d/platformer/assets/art/background/sky.png


二進制
2d/platformer/assets/art/coin/coin.png


二進制
2d/platformer/assets/art/enemy/enemy.png


二進制
2d/platformer/assets/art/platforms/moving_platform.png


二進制
2d/platformer/assets/art/platforms/one_way_platform.png


二進制
2d/platformer/assets/art/player/bullet/bullet.png


+ 6 - 6
2d/platformer/assets/art/player/bullet/bullet.png.import

@@ -14,17 +14,17 @@ dest_files=[ "res://.import/bullet.png-a148438922f3743d5615622ef8134c9f.stex" ]
 
 [params]
 
-compress/mode=3
+compress/mode=0
 compress/lossy_quality=0.7
 compress/hdr_mode=0
 compress/bptc_ldr=0
-compress/normal_map=2
+compress/normal_map=0
 flags/repeat=0
-flags/filter=true
-flags/mipmaps=true
+flags/filter=false
+flags/mipmaps=false
 flags/anisotropic=false
-flags/srgb=0
-process/fix_alpha_border=false
+flags/srgb=2
+process/fix_alpha_border=true
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/invert_color=false

二進制
2d/platformer/assets/art/player/robot_demo.png


二進制
2d/platformer/assets/art/tileset/tiles_demo.png


+ 27 - 27
2d/platformer/assets/art/tileset/tileset.tres

@@ -3,47 +3,47 @@
 [ext_resource path="res://assets/art/tileset/tiles_demo.png" type="Texture" id=1]
 
 [sub_resource type="ConvexPolygonShape2D" id=1]
-points = PoolVector2Array( 0, 12, 64, 12, 64, 64, 0, 64 )
+points = PoolVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 )
 
 [sub_resource type="ConvexPolygonShape2D" id=2]
-points = PoolVector2Array( 0, 12, 56, 12, 56, 64, 0, 64 )
+points = PoolVector2Array( 0, 6, 28, 6, 28, 32, 0, 32 )
 
 [sub_resource type="ConvexPolygonShape2D" id=3]
-points = PoolVector2Array( 0, 0, 64, 0, 64, 64, 0, 64 )
+points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
 
 [sub_resource type="ConvexPolygonShape2D" id=4]
-points = PoolVector2Array( 0, 12, 64, 12, 64, 64, 0, 64 )
+points = PoolVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 )
 
 [sub_resource type="ConvexPolygonShape2D" id=5]
-points = PoolVector2Array( 64, 76, 64, 128, 0, 128, 0, 12 )
+points = PoolVector2Array( 32, 38, 32, 64, 0, 64, 0, 6 )
 
 [sub_resource type="ConvexPolygonShape2D" id=6]
-points = PoolVector2Array( 0, 0, 56, 0, 56, 64, 0, 64 )
+points = PoolVector2Array( 0, 0, 28, 0, 28, 32, 0, 32 )
 
 [sub_resource type="ConvexPolygonShape2D" id=7]
-points = PoolVector2Array( 56, 12, 64, 12, 64, 64, 0, 64, 0, 0, 56, 0 )
+points = PoolVector2Array( 28, 6, 32, 6, 32, 32, 0, 32, 0, 0, 28, 0 )
 
 [sub_resource type="ConvexPolygonShape2D" id=8]
-points = PoolVector2Array( 0, 12, 64, 12, 64, 64, 0, 64 )
+points = PoolVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 )
 
 [sub_resource type="ConvexPolygonShape2D" id=9]
-points = PoolVector2Array( 0, 12, 56, 12, 56, 64, 0, 64 )
+points = PoolVector2Array( 0, 6, 28, 6, 28, 32, 0, 32 )
 
 [sub_resource type="ConvexPolygonShape2D" id=10]
-points = PoolVector2Array( 0, 0, 64, 0, 64, 64, 0, 64 )
+points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
 
 [sub_resource type="ConvexPolygonShape2D" id=11]
-points = PoolVector2Array( 0, 0, 64, 0, 64, 48, 0, 48 )
+points = PoolVector2Array( 0, 0, 32, 0, 32, 24, 0, 24 )
 
 [sub_resource type="ConvexPolygonShape2D" id=12]
-points = PoolVector2Array( 0, 0, 56, 0, 56, 48, 0, 48 )
+points = PoolVector2Array( 0, 0, 28, 0, 28, 24, 0, 24 )
 
 [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, 64, 64 )
+0/region = Rect2( 0, 0, 32, 32 )
 0/tile_mode = 0
 0/occluder_offset = Vector2( 0, 0 )
 0/navigation_offset = Vector2( 0, 0 )
@@ -59,7 +59,7 @@ points = PoolVector2Array( 0, 0, 56, 0, 56, 48, 0, 48 )
 1/texture = ExtResource( 1 )
 1/tex_offset = Vector2( 0, 0 )
 1/modulate = Color( 1, 1, 1, 1 )
-1/region = Rect2( 64, 0, 64, 64 )
+1/region = Rect2( 32, 0, 32, 32 )
 1/tile_mode = 0
 1/occluder_offset = Vector2( 0, 0 )
 1/navigation_offset = Vector2( 0, 0 )
@@ -75,7 +75,7 @@ points = PoolVector2Array( 0, 0, 56, 0, 56, 48, 0, 48 )
 2/texture = ExtResource( 1 )
 2/tex_offset = Vector2( 0, 0 )
 2/modulate = Color( 1, 1, 1, 1 )
-2/region = Rect2( 128, 128, 64, 128 )
+2/region = Rect2( 64, 64, 32, 64 )
 2/tile_mode = 0
 2/occluder_offset = Vector2( 0, 0 )
 2/navigation_offset = Vector2( 0, 0 )
@@ -91,7 +91,7 @@ points = PoolVector2Array( 0, 0, 56, 0, 56, 48, 0, 48 )
 3/texture = ExtResource( 1 )
 3/tex_offset = Vector2( 0, 0 )
 3/modulate = Color( 1, 1, 1, 1 )
-3/region = Rect2( 64, 64, 64, 64 )
+3/region = Rect2( 32, 32, 32, 32 )
 3/tile_mode = 0
 3/occluder_offset = Vector2( 0, 0 )
 3/navigation_offset = Vector2( 0, 0 )
@@ -107,7 +107,7 @@ points = PoolVector2Array( 0, 0, 56, 0, 56, 48, 0, 48 )
 4/texture = ExtResource( 1 )
 4/tex_offset = Vector2( 0, 0 )
 4/modulate = Color( 1, 1, 1, 1 )
-4/region = Rect2( 64, 128, 64, 64 )
+4/region = Rect2( 32, 64, 32, 32 )
 4/tile_mode = 0
 4/occluder_offset = Vector2( 0, 0 )
 4/navigation_offset = Vector2( 0, 0 )
@@ -123,7 +123,7 @@ points = PoolVector2Array( 0, 0, 56, 0, 56, 48, 0, 48 )
 5/texture = ExtResource( 1 )
 5/tex_offset = Vector2( 0, 0 )
 5/modulate = Color( 1, 1, 1, 1 )
-5/region = Rect2( 128, 0, 64, 64 )
+5/region = Rect2( 64, 0, 32, 32 )
 5/tile_mode = 0
 5/occluder_offset = Vector2( 0, 0 )
 5/navigation_offset = Vector2( 0, 0 )
@@ -139,7 +139,7 @@ points = PoolVector2Array( 0, 0, 56, 0, 56, 48, 0, 48 )
 6/texture = ExtResource( 1 )
 6/tex_offset = Vector2( 0, 0 )
 6/modulate = Color( 1, 1, 1, 1 )
-6/region = Rect2( 192, 0, 64, 64 )
+6/region = Rect2( 96, 0, 32, 32 )
 6/tile_mode = 0
 6/occluder_offset = Vector2( 0, 0 )
 6/navigation_offset = Vector2( 0, 0 )
@@ -155,7 +155,7 @@ points = PoolVector2Array( 0, 0, 56, 0, 56, 48, 0, 48 )
 7/texture = ExtResource( 1 )
 7/tex_offset = Vector2( 0, 0 )
 7/modulate = Color( 1, 1, 1, 1 )
-7/region = Rect2( 0, 64, 64, 64 )
+7/region = Rect2( 0, 32, 32, 32 )
 7/tile_mode = 0
 7/occluder_offset = Vector2( 0, 0 )
 7/navigation_offset = Vector2( 0, 0 )
@@ -171,7 +171,7 @@ points = PoolVector2Array( 0, 0, 56, 0, 56, 48, 0, 48 )
 8/texture = ExtResource( 1 )
 8/tex_offset = Vector2( 0, 0 )
 8/modulate = Color( 1, 1, 1, 1 )
-8/region = Rect2( 384, 64, 64, 64 )
+8/region = Rect2( 192, 32, 32, 32 )
 8/tile_mode = 0
 8/occluder_offset = Vector2( 0, 0 )
 8/navigation_offset = Vector2( 0, 0 )
@@ -187,7 +187,7 @@ points = PoolVector2Array( 0, 0, 56, 0, 56, 48, 0, 48 )
 9/texture = ExtResource( 1 )
 9/tex_offset = Vector2( 0, 0 )
 9/modulate = Color( 1, 1, 1, 1 )
-9/region = Rect2( 448, 64, 64, 64 )
+9/region = Rect2( 224, 32, 32, 32 )
 9/tile_mode = 0
 9/occluder_offset = Vector2( 0, 0 )
 9/navigation_offset = Vector2( 0, 0 )
@@ -203,7 +203,7 @@ points = PoolVector2Array( 0, 0, 56, 0, 56, 48, 0, 48 )
 10/texture = ExtResource( 1 )
 10/tex_offset = Vector2( 0, 0 )
 10/modulate = Color( 1, 1, 1, 1 )
-10/region = Rect2( 320, 64, 64, 64 )
+10/region = Rect2( 160, 32, 32, 32 )
 10/tile_mode = 0
 10/occluder_offset = Vector2( 0, 0 )
 10/navigation_offset = Vector2( 0, 0 )
@@ -219,7 +219,7 @@ points = PoolVector2Array( 0, 0, 56, 0, 56, 48, 0, 48 )
 11/texture = ExtResource( 1 )
 11/tex_offset = Vector2( 0, 0 )
 11/modulate = Color( 1, 1, 1, 1 )
-11/region = Rect2( 256, 128, 64, 64 )
+11/region = Rect2( 128, 64, 32, 32 )
 11/tile_mode = 0
 11/occluder_offset = Vector2( 0, 0 )
 11/navigation_offset = Vector2( 0, 0 )
@@ -229,7 +229,7 @@ points = PoolVector2Array( 0, 0, 56, 0, 56, 48, 0, 48 )
 12/texture = ExtResource( 1 )
 12/tex_offset = Vector2( 0, 0 )
 12/modulate = Color( 1, 1, 1, 1 )
-12/region = Rect2( 256, 64, 64, 64 )
+12/region = Rect2( 128, 32, 32, 32 )
 12/tile_mode = 0
 12/occluder_offset = Vector2( 0, 0 )
 12/navigation_offset = Vector2( 0, 0 )
@@ -239,7 +239,7 @@ points = PoolVector2Array( 0, 0, 56, 0, 56, 48, 0, 48 )
 13/texture = ExtResource( 1 )
 13/tex_offset = Vector2( 0, 0 )
 13/modulate = Color( 1, 1, 1, 1 )
-13/region = Rect2( 256, 192, 64, 64 )
+13/region = Rect2( 128, 96, 32, 32 )
 13/tile_mode = 0
 13/occluder_offset = Vector2( 0, 0 )
 13/navigation_offset = Vector2( 0, 0 )
@@ -255,7 +255,7 @@ points = PoolVector2Array( 0, 0, 56, 0, 56, 48, 0, 48 )
 14/texture = ExtResource( 1 )
 14/tex_offset = Vector2( 0, 0 )
 14/modulate = Color( 1, 1, 1, 1 )
-14/region = Rect2( 256, 0, 64, 64 )
+14/region = Rect2( 128, 0, 32, 32 )
 14/tile_mode = 0
 14/occluder_offset = Vector2( 0, 0 )
 14/navigation_offset = Vector2( 0, 0 )

+ 24 - 2
2d/platformer/project.godot

@@ -81,6 +81,29 @@ singletons=[  ]
 
 repeat=false
 
+[importer_defaults]
+
+texture={
+"compress/bptc_ldr": 0,
+"compress/hdr_mode": 0,
+"compress/lossy_quality": 0.7,
+"compress/mode": 0,
+"compress/normal_map": 0,
+"detect_3d": false,
+"flags/anisotropic": false,
+"flags/filter": false,
+"flags/mipmaps": false,
+"flags/repeat": 0,
+"flags/srgb": 2,
+"process/HDR_as_SRGB": false,
+"process/fix_alpha_border": true,
+"process/invert_color": false,
+"process/premult_alpha": false,
+"size_limit": 0,
+"stream": false,
+"svg/scale": 1.0
+}
+
 [input]
 
 jump={
@@ -136,8 +159,7 @@ toggle_pause={
 
 [physics]
 
-2d/default_gravity=700
-2d/gravity_default=1800.0
+2d/default_gravity=350
 
 [rasterizer]
 

+ 10 - 11
2d/platformer/src/Actors/Enemy.tscn

@@ -169,8 +169,8 @@ tracks/0/keys = {
 }
 
 [sub_resource type="CapsuleShape2D" id=5]
-radius = 13.4556
-height = 14.2002
+radius = 11.0
+height = 7.0
 
 [sub_resource type="CanvasItemMaterial" id=6]
 blend_mode = 1
@@ -195,7 +195,6 @@ orbit_velocity = 0.0
 orbit_velocity_random = 0.0
 angle = 720.0
 angle_random = 1.0
-scale = 0.4
 scale_random = 1.0
 color_ramp = SubResource( 8 )
 hue_variation = 0.05
@@ -205,25 +204,25 @@ hue_variation_random = 0.46
 collision_layer = 2
 collision_mask = 24
 script = ExtResource( 5 )
-speed = Vector2( 150, 500 )
-gravity = 1800.0
+speed = Vector2( 75, 250 )
+gravity = 900.0
 
 [node name="PlatformDetector" type="RayCast2D" parent="."]
-position = Vector2( 0, 12 )
+position = Vector2( 0, 6 )
 enabled = true
 cast_to = Vector2( 0, 8 )
 collision_mask = 8
 
 [node name="FloorDetectorLeft" type="RayCast2D" parent="."]
-position = Vector2( -30, -8 )
+position = Vector2( -15, -4 )
 enabled = true
-cast_to = Vector2( 0, 70 )
+cast_to = Vector2( 0, 35 )
 collision_mask = 24
 
 [node name="FloorDetectorRight" type="RayCast2D" parent="."]
-position = Vector2( 31.16, -8 )
+position = Vector2( 15.5, -3 )
 enabled = true
-cast_to = Vector2( 0, 70 )
+cast_to = Vector2( 0, 35 )
 collision_mask = 24
 
 [node name="Sprite" type="Sprite" parent="."]
@@ -231,7 +230,7 @@ material = SubResource( 1 )
 texture = ExtResource( 4 )
 flip_h = true
 hframes = 8
-frame = 5
+frame = 7
 
 [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
 anims/destroy = SubResource( 2 )

+ 1 - 1
2d/platformer/src/Actors/Gun.gd

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

+ 1 - 1
2d/platformer/src/Actors/Player.gd

@@ -2,7 +2,7 @@ class_name Player
 extends Actor
 
 
-const FLOOR_DETECT_DISTANCE = 40.0
+const FLOOR_DETECT_DISTANCE = 20.0
 
 onready var platform_detector = $PlatformDetector
 onready var sprite = $Sprite

+ 6 - 6
2d/platformer/src/Actors/Player.tscn

@@ -184,13 +184,13 @@ tracks/0/keys = {
 }
 
 [sub_resource type="RectangleShape2D" id=11]
-extents = Vector2( 10, 27 )
+extents = Vector2( 10, 14 )
 
 [node name="Player" type="KinematicBody2D"]
 collision_mask = 30
 script = ExtResource( 1 )
-speed = Vector2( 300, 700 )
-gravity = 1800.0
+speed = Vector2( 150, 350 )
+gravity = 900.0
 
 [node name="ShootAnimation" type="Timer" parent="."]
 process_mode = 0
@@ -203,14 +203,14 @@ cast_to = Vector2( 0, 6 )
 collision_mask = 8
 
 [node name="Sprite" type="Sprite" parent="."]
-position = Vector2( 0, -28 )
+position = Vector2( 0, -14 )
 texture = ExtResource( 2 )
 vframes = 2
 hframes = 16
 frame = 16
 
 [node name="Gun" type="Position2D" parent="Sprite"]
-position = Vector2( 30.6589, 6.13176 )
+position = Vector2( 14, 1 )
 script = ExtResource( 9 )
 
 [node name="Shoot" type="AudioStreamPlayer2D" parent="Sprite/Gun"]
@@ -241,7 +241,7 @@ current = true
 process_mode = 0
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-position = Vector2( 0, -27 )
+position = Vector2( 0, -14 )
 shape = SubResource( 11 )
 
 [node name="Jump" type="AudioStreamPlayer2D" parent="."]

文件差異過大導致無法顯示
+ 3 - 2
2d/platformer/src/Level/Level.tscn


+ 26 - 26
2d/platformer/src/Level/ParallaxBackground.tscn

@@ -11,10 +11,10 @@
 scroll_base_scale = Vector2( 0.4, 0 )
 
 [node name="Sky" type="ParallaxLayer" parent="."]
-motion_mirroring = Vector2( 800, 0 )
+motion_mirroring = Vector2( 400, 0 )
 
 [node name="Sprite" type="Sprite" parent="Sky"]
-scale = Vector2( 128, 0.94 )
+scale = Vector2( 64, 0.94 )
 texture = ExtResource( 2 )
 centered = false
 
@@ -31,7 +31,7 @@ texture = ExtResource( 3 )
 centered = false
 
 [node name="Sprite2" type="Sprite" parent="Clouds/CloudGroup1"]
-position = Vector2( 200, 20 )
+position = Vector2( 100, 10 )
 texture = ExtResource( 3 )
 centered = false
 
@@ -41,17 +41,17 @@ texture = ExtResource( 4 )
 centered = false
 
 [node name="Sprite4" type="Sprite" parent="Clouds/CloudGroup1"]
-position = Vector2( 300, 130 )
+position = Vector2( 150, 65 )
 texture = ExtResource( 4 )
 centered = false
 
 [node name="Sprite5" type="Sprite" parent="Clouds/CloudGroup1"]
-position = Vector2( 30, 150 )
+position = Vector2( 15, 75 )
 texture = ExtResource( 5 )
 centered = false
 
 [node name="Sprite6" type="Sprite" parent="Clouds/CloudGroup1"]
-position = Vector2( 450, 70 )
+position = Vector2( 225, 35 )
 texture = ExtResource( 5 )
 centered = false
 
@@ -63,7 +63,7 @@ texture = ExtResource( 3 )
 centered = false
 
 [node name="Sprite2" type="Sprite" parent="Clouds/CloudGroup2"]
-position = Vector2( 200, 20 )
+position = Vector2( 100, 10 )
 texture = ExtResource( 3 )
 centered = false
 
@@ -73,22 +73,22 @@ texture = ExtResource( 4 )
 centered = false
 
 [node name="Sprite4" type="Sprite" parent="Clouds/CloudGroup2"]
-position = Vector2( 300, 130 )
+position = Vector2( 150, 65 )
 texture = ExtResource( 4 )
 centered = false
 
 [node name="Sprite5" type="Sprite" parent="Clouds/CloudGroup2"]
-position = Vector2( 30, 150 )
+position = Vector2( 15, 75 )
 texture = ExtResource( 5 )
 centered = false
 
 [node name="Sprite6" type="Sprite" parent="Clouds/CloudGroup2"]
-position = Vector2( 450, 70 )
+position = Vector2( 225, 35 )
 texture = ExtResource( 5 )
 centered = false
 
 [node name="CloudGroup3" type="Node2D" parent="Clouds"]
-position = Vector2( 780, 0 )
+position = Vector2( 390, 0 )
 
 [node name="Sprite1" type="Sprite" parent="Clouds/CloudGroup3"]
 position = Vector2( -200, 120 )
@@ -96,7 +96,7 @@ texture = ExtResource( 3 )
 centered = false
 
 [node name="Sprite2" type="Sprite" parent="Clouds/CloudGroup3"]
-position = Vector2( 200, 20 )
+position = Vector2( 100, 10 )
 texture = ExtResource( 3 )
 centered = false
 
@@ -106,22 +106,22 @@ texture = ExtResource( 4 )
 centered = false
 
 [node name="Sprite4" type="Sprite" parent="Clouds/CloudGroup3"]
-position = Vector2( 300, 130 )
+position = Vector2( 150, 65 )
 texture = ExtResource( 4 )
 centered = false
 
 [node name="Sprite5" type="Sprite" parent="Clouds/CloudGroup3"]
-position = Vector2( 30, 150 )
+position = Vector2( 15, 75 )
 texture = ExtResource( 5 )
 centered = false
 
 [node name="Sprite6" type="Sprite" parent="Clouds/CloudGroup3"]
-position = Vector2( 450, 70 )
+position = Vector2( 225, 35 )
 texture = ExtResource( 5 )
 centered = false
 
 [node name="CloudGroup4" type="Node2D" parent="Clouds"]
-position = Vector2( 1560, 0 )
+position = Vector2( 780, 0 )
 
 [node name="Sprite1" type="Sprite" parent="Clouds/CloudGroup4"]
 position = Vector2( -200, 120 )
@@ -129,7 +129,7 @@ texture = ExtResource( 3 )
 centered = false
 
 [node name="Sprite2" type="Sprite" parent="Clouds/CloudGroup4"]
-position = Vector2( 200, 20 )
+position = Vector2( 100, 10 )
 texture = ExtResource( 3 )
 centered = false
 
@@ -139,36 +139,36 @@ texture = ExtResource( 4 )
 centered = false
 
 [node name="Sprite4" type="Sprite" parent="Clouds/CloudGroup4"]
-position = Vector2( 300, 130 )
+position = Vector2( 150, 65 )
 texture = ExtResource( 4 )
 centered = false
 
 [node name="Sprite5" type="Sprite" parent="Clouds/CloudGroup4"]
-position = Vector2( 30, 150 )
+position = Vector2( 15, 75 )
 texture = ExtResource( 5 )
 centered = false
 
 [node name="Sprite6" type="Sprite" parent="Clouds/CloudGroup4"]
-position = Vector2( 450, 70 )
+position = Vector2( 225, 35 )
 texture = ExtResource( 5 )
 centered = false
 
 [node name="Mountains2" type="ParallaxLayer" parent="."]
-position = Vector2( 0, 481 )
+position = Vector2( 0, 243 )
 motion_scale = Vector2( 0.2, 1 )
 
 [node name="Sprite" type="Sprite" parent="Mountains2"]
-position = Vector2( 0, -120 )
+position = Vector2( 0, -64 )
 texture = ExtResource( 1 )
 region_enabled = true
-region_rect = Rect2( 0, 0, 4096, 256 )
+region_rect = Rect2( 0, 0, 2048, 128 )
 
 [node name="Mountains1" type="ParallaxLayer" parent="."]
-position = Vector2( 0, 481 )
+position = Vector2( 0, 246 )
 motion_scale = Vector2( 0.4, 1 )
 
 [node name="Sprite" type="Sprite" parent="Mountains1"]
-position = Vector2( 0, -100 )
+position = Vector2( 0, -64 )
 texture = ExtResource( 6 )
 region_enabled = true
-region_rect = Rect2( 0, 0, 4096, 256 )
+region_rect = Rect2( 0, 0, 2048, 128 )

+ 1 - 0
2d/platformer/src/Objects/Bullet.tscn

@@ -20,6 +20,7 @@ color = Color( 1, 1, 1, 0.705882 )
 [sub_resource type="CanvasItemMaterial" id=4]
 
 [sub_resource type="CircleShape2D" id=5]
+radius = 4.5
 
 [sub_resource type="Animation" id=6]
 resource_name = "destroy"

+ 1 - 0
2d/platformer/src/Objects/Coin.tscn

@@ -137,6 +137,7 @@ tracks/3/keys = {
 }
 
 [sub_resource type="CircleShape2D" id=3]
+radius = 5.0
 
 [node name="Coin" type="Area2D"]
 monitorable = false

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

@@ -3,7 +3,7 @@
 [ext_resource path="res://assets/art/platforms/moving_platform.png" type="Texture" id=2]
 
 [sub_resource type="RectangleShape2D" id=1]
-extents = Vector2( 94, 12 )
+extents = Vector2( 47, 6 )
 
 [node name="Platform" type="KinematicBody2D"]
 z_index = -1
@@ -16,6 +16,6 @@ motion/sync_to_physics = true
 texture = ExtResource( 2 )
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-position = Vector2( 0, -8 )
+position = Vector2( 0, -4 )
 shape = SubResource( 1 )
 one_way_collision = true

部分文件因文件數量過多而無法顯示