diff --git a/assets/graphics/objects/crate.png b/assets/graphics/objects/crate.png new file mode 100644 index 0000000..2b8bdcd Binary files /dev/null and b/assets/graphics/objects/crate.png differ diff --git a/assets/graphics/objects/crate.png.import b/assets/graphics/objects/crate.png.import new file mode 100644 index 0000000..c7ebf1a --- /dev/null +++ b/assets/graphics/objects/crate.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwx4x0wq3vetw" +path="res://.godot/imported/crate.png-b286bd97caa3cbc59746f2db7de46191.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/objects/crate.png" +dest_files=["res://.godot/imported/crate.png-b286bd97caa3cbc59746f2db7de46191.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/graphics/player/idle/Player Idle 48x48.png b/assets/graphics/player/idle/Player Idle 48x48.png new file mode 100644 index 0000000..b618511 Binary files /dev/null and b/assets/graphics/player/idle/Player Idle 48x48.png differ diff --git a/assets/graphics/player/idle/Player Idle 48x48.png.import b/assets/graphics/player/idle/Player Idle 48x48.png.import new file mode 100644 index 0000000..03a840b --- /dev/null +++ b/assets/graphics/player/idle/Player Idle 48x48.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bfhqvl875is6f" +path="res://.godot/imported/Player Idle 48x48.png-9f43f14976963a2821a06ddf8579a76a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/player/idle/Player Idle 48x48.png" +dest_files=["res://.godot/imported/Player Idle 48x48.png-9f43f14976963a2821a06ddf8579a76a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/graphics/player/jump/player jump 48x48.png b/assets/graphics/player/jump/player jump 48x48.png new file mode 100644 index 0000000..dff105c Binary files /dev/null and b/assets/graphics/player/jump/player jump 48x48.png differ diff --git a/assets/graphics/player/jump/player jump 48x48.png.import b/assets/graphics/player/jump/player jump 48x48.png.import new file mode 100644 index 0000000..6f96ba2 --- /dev/null +++ b/assets/graphics/player/jump/player jump 48x48.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c2s48joyna11q" +path="res://.godot/imported/player jump 48x48.png-1ccba0c36041038682bf917e1f6cf991.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/player/jump/player jump 48x48.png" +dest_files=["res://.godot/imported/player jump 48x48.png-1ccba0c36041038682bf917e1f6cf991.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/graphics/player/run/player run 48x48.png b/assets/graphics/player/run/player run 48x48.png new file mode 100644 index 0000000..aca5b55 Binary files /dev/null and b/assets/graphics/player/run/player run 48x48.png differ diff --git a/assets/graphics/player/run/player run 48x48.png.import b/assets/graphics/player/run/player run 48x48.png.import new file mode 100644 index 0000000..026ab54 --- /dev/null +++ b/assets/graphics/player/run/player run 48x48.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bvat1vqwtua2p" +path="res://.godot/imported/player run 48x48.png-6d66612d48bfa4c8721495ba557ab7c6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/player/run/player run 48x48.png" +dest_files=["res://.godot/imported/player run 48x48.png-6d66612d48bfa4c8721495ba557ab7c6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/graphics/projectiles/pixel_bullet.png b/assets/graphics/projectiles/pixel_bullet.png new file mode 100644 index 0000000..900d030 Binary files /dev/null and b/assets/graphics/projectiles/pixel_bullet.png differ diff --git a/assets/graphics/projectiles/pixel_bullet.png.import b/assets/graphics/projectiles/pixel_bullet.png.import new file mode 100644 index 0000000..1b69b55 --- /dev/null +++ b/assets/graphics/projectiles/pixel_bullet.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://66hnfsu3e8ll" +path="res://.godot/imported/pixel_bullet.png-30d6d1e8b5e1332f8b2e2cee72a9e790.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/projectiles/pixel_bullet.png" +dest_files=["res://.godot/imported/pixel_bullet.png-30d6d1e8b5e1332f8b2e2cee72a9e790.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/graphics/terrains/Terrain (32x32).png b/assets/graphics/terrains/Terrain (32x32).png new file mode 100644 index 0000000..ddf1eaf Binary files /dev/null and b/assets/graphics/terrains/Terrain (32x32).png differ diff --git a/assets/graphics/terrains/Terrain (32x32).png.import b/assets/graphics/terrains/Terrain (32x32).png.import new file mode 100644 index 0000000..a8b25fc --- /dev/null +++ b/assets/graphics/terrains/Terrain (32x32).png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dktvd8atklmau" +path="res://.godot/imported/Terrain (32x32).png-7361ca574569f6e5ff16ef11d25a8904.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/terrains/Terrain (32x32).png" +dest_files=["res://.godot/imported/Terrain (32x32).png-7361ca574569f6e5ff16ef11d25a8904.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/project.godot b/project.godot index f74bfc0..6240669 100644 --- a/project.godot +++ b/project.godot @@ -15,6 +15,14 @@ run/main_scene="res://scenes/game.tscn" config/features=PackedStringArray("4.3", "Forward Plus") config/icon="res://icon.svg" +[display] + +window/size/viewport_width=320 +window/size/viewport_height=180 +window/size/window_width_override=960 +window/size/window_height_override=540 +window/stretch/mode="viewport" + [file_customization] folder_colors={ diff --git a/scenes/bullet.tscn b/scenes/bullet.tscn index 8d2a0c5..acd700f 100644 --- a/scenes/bullet.tscn +++ b/scenes/bullet.tscn @@ -1,11 +1,13 @@ -[gd_scene load_steps=3 format=3 uid="uid://b53r5iysu7d4t"] +[gd_scene load_steps=4 format=3 uid="uid://b53r5iysu7d4t"] [ext_resource type="Script" path="res://scripts/bullet.gd" id="1_qubif"] +[ext_resource type="Texture2D" uid="uid://66hnfsu3e8ll" path="res://assets/graphics/projectiles/pixel_bullet.png" id="2_ifgvb"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_qxj7e"] size = Vector2(19, 4) [node name="Area2D" type="Area2D"] +position = Vector2(1, 0) script = ExtResource("1_qubif") metadata/_edit_group_ = true @@ -14,4 +16,11 @@ position = Vector2(-0.5, 0) shape = SubResource("RectangleShape2D_qxj7e") debug_color = Color(0.717124, 0, 0.290401, 0.42) +[node name="Sprite2D" type="Sprite2D" parent="."] +texture_filter = 1 +position = Vector2(-6, -2) +rotation = -3.14159 +scale = Vector2(0.151432, 0.0740068) +texture = ExtResource("2_ifgvb") + [connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scenes/crate.tscn b/scenes/crate.tscn index a8290a5..433b84f 100644 --- a/scenes/crate.tscn +++ b/scenes/crate.tscn @@ -1,11 +1,19 @@ -[gd_scene load_steps=2 format=3 uid="uid://djkjmi7bo58uv"] +[gd_scene load_steps=3 format=3 uid="uid://djkjmi7bo58uv"] + +[ext_resource type="Texture2D" uid="uid://dwx4x0wq3vetw" path="res://assets/graphics/objects/crate.png" id="1_6lxxi"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_ilk50"] size = Vector2(47, 44) -[node name="RigidBody2D" type="RigidBody2D"] +[node name="RigidBody2D" type="RigidBody2D" groups=["destructables"]] metadata/_edit_group_ = true +[node name="Sprite2D" type="Sprite2D" parent="."] +texture_filter = 1 +position = Vector2(0, 3) +scale = Vector2(0.1762, 0.152876) +texture = ExtResource("1_6lxxi") + [node name="CollisionShape2D" type="CollisionShape2D" parent="."] shape = SubResource("RectangleShape2D_ilk50") debug_color = Color(0.889053, 0.327177, 5.77569e-07, 0.42) diff --git a/scenes/game.tscn b/scenes/game.tscn index d069116..d6295c1 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -1,9 +1,11 @@ -[gd_scene load_steps=8 format=3 uid="uid://dhgts0kodsujx"] +[gd_scene load_steps=12 format=3 uid="uid://dhgts0kodsujx"] [ext_resource type="PackedScene" uid="uid://djkjmi7bo58uv" path="res://scenes/crate.tscn" id="1_6shkr"] -[ext_resource type="Script" path="res://scripts/gameController.gd" id="1_7tjsy"] +[ext_resource type="Script" path="res://scripts/gameController.gd" id="1_50x63"] +[ext_resource type="Script" path="res://scripts/sceneManager.gd" id="1_ooich"] [ext_resource type="PackedScene" uid="uid://b2hyqfqh02ep6" path="res://scenes/player.tscn" id="3_bssht"] [ext_resource type="Script" path="res://scripts/trigger.gd" id="3_t4lk8"] +[ext_resource type="Texture2D" uid="uid://dktvd8atklmau" path="res://assets/graphics/terrains/Terrain (32x32).png" id="6_jpfcs"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_n7xvc"] size = Vector2(92, 20) @@ -14,8 +16,63 @@ distance = -484.0 [sub_resource type="CircleShape2D" id="CircleShape2D_5ph8t"] radius = 62.0 +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_v72u6"] +texture = ExtResource("6_jpfcs") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +1:0/0 = 0 +2:0/0 = 0 +4:0/0 = 0 +6:0/0 = 0 +7:0/0 = 0 +9:0/0 = 0 +10:0/0 = 0 +12:0/0 = 0 +13:0/0 = 0 +15:0/0 = 0 +0:1/0 = 0 +1:1/0 = 0 +2:1/0 = 0 +4:1/0 = 0 +6:1/0 = 0 +7:1/0 = 0 +9:1/0 = 0 +10:1/0 = 0 +12:1/0 = 0 +13:1/0 = 0 +15:1/0 = 0 +16:1/0 = 0 +0:2/0 = 0 +1:2/0 = 0 +2:2/0 = 0 +4:2/0 = 0 +6:3/0 = 0 +7:3/0 = 0 +9:3/0 = 0 +10:3/0 = 0 +12:3/0 = 0 +13:3/0 = 0 +15:3/0 = 0 +16:3/0 = 0 +0:4/0 = 0 +1:4/0 = 0 +2:4/0 = 0 +4:4/0 = 0 +6:4/0 = 0 +7:4/0 = 0 +9:4/0 = 0 +10:4/0 = 0 +12:4/0 = 0 +13:4/0 = 0 +15:4/0 = 0 +16:4/0 = 0 + +[sub_resource type="TileSet" id="TileSet_fj5fk"] +tile_size = Vector2i(32, 32) +sources/0 = SubResource("TileSetAtlasSource_v72u6") + [node name="Game" type="Node2D"] -script = ExtResource("1_7tjsy") +script = ExtResource("1_50x63") [node name="firstPlatform" type="StaticBody2D" parent="."] position = Vector2(595, 310) @@ -30,7 +87,7 @@ shape = SubResource("RectangleShape2D_n7xvc") shape = SubResource("WorldBoundaryShape2D_gasd3") [node name="CharacterBody2D" parent="." instance=ExtResource("3_bssht")] -position = Vector2(188, 575) +position = Vector2(174, 430) [node name="Area2D" type="Area2D" parent="."] position = Vector2(952, 434) @@ -41,17 +98,32 @@ metadata/_edit_group_ = true shape = SubResource("CircleShape2D_5ph8t") debug_color = Color(0.630721, 0.529414, 1.92523e-07, 0.42) -[node name="RigidBody2D" parent="." groups=["pushables"] instance=ExtResource("1_6shkr")] +[node name="SceneManager" type="Node" parent="."] +unique_name_in_owner = true +script = ExtResource("1_ooich") + +[node name="crates" type="Node2D" parent="."] + +[node name="RigidBody2D4" parent="crates" instance=ExtResource("1_6shkr")] +position = Vector2(603, 24) + +[node name="RigidBody2D" parent="crates" groups=["pushables"] instance=ExtResource("1_6shkr")] position = Vector2(209, 113) rotation = 2.09219 -[node name="RigidBody2D2" parent="." groups=["pushables"] instance=ExtResource("1_6shkr")] +[node name="RigidBody2D2" parent="crates" groups=["pushables"] instance=ExtResource("1_6shkr")] position = Vector2(595, 192) -rotation = 4.86807 +rotation = -1.41512 -[node name="RigidBody2D3" parent="." groups=["pushables"] instance=ExtResource("1_6shkr")] +[node name="RigidBody2D3" parent="crates" groups=["pushables"] instance=ExtResource("1_6shkr")] position = Vector2(373, 200) rotation = -0.0982481 +[node name="RigidBody2D5" parent="crates" instance=ExtResource("1_6shkr")] +position = Vector2(251, 69) + +[node name="TileMapLayer" type="TileMapLayer" parent="."] +tile_set = SubResource("TileSet_fj5fk") + [connection signal="areaTrigger" from="Area2D" to="." method="_on_trigger"] [connection signal="body_entered" from="Area2D" to="Area2D" method="_on_body_entered"] diff --git a/scenes/player.tscn b/scenes/player.tscn index 9c25e11..900e4d9 100644 --- a/scenes/player.tscn +++ b/scenes/player.tscn @@ -1,11 +1,179 @@ -[gd_scene load_steps=3 format=3 uid="uid://b2hyqfqh02ep6"] +[gd_scene load_steps=28 format=3 uid="uid://b2hyqfqh02ep6"] [ext_resource type="Script" path="res://scripts/charController.gd" id="1_4o8do"] +[ext_resource type="Texture2D" uid="uid://bfhqvl875is6f" path="res://assets/graphics/player/idle/Player Idle 48x48.png" id="2_yfuca"] +[ext_resource type="Texture2D" uid="uid://c2s48joyna11q" path="res://assets/graphics/player/jump/player jump 48x48.png" id="3_p8gbr"] +[ext_resource type="Texture2D" uid="uid://bvat1vqwtua2p" path="res://assets/graphics/player/run/player run 48x48.png" id="3_y36hw"] [sub_resource type="CircleShape2D" id="CircleShape2D_uvblg"] radius = 32.5576 -[node name="CharacterBody2D" type="CharacterBody2D"] +[sub_resource type="AtlasTexture" id="AtlasTexture_cdvw1"] +atlas = ExtResource("2_yfuca") +region = Rect2(0, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_q1l1v"] +atlas = ExtResource("2_yfuca") +region = Rect2(48, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_6hv7e"] +atlas = ExtResource("2_yfuca") +region = Rect2(96, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4h4qw"] +atlas = ExtResource("2_yfuca") +region = Rect2(144, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_638nb"] +atlas = ExtResource("2_yfuca") +region = Rect2(192, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_73fjy"] +atlas = ExtResource("2_yfuca") +region = Rect2(240, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7r0nq"] +atlas = ExtResource("2_yfuca") +region = Rect2(288, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_5potv"] +atlas = ExtResource("2_yfuca") +region = Rect2(336, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_c5yi2"] +atlas = ExtResource("2_yfuca") +region = Rect2(384, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_flju4"] +atlas = ExtResource("2_yfuca") +region = Rect2(432, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4ckr0"] +atlas = ExtResource("3_p8gbr") +region = Rect2(0, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7vs6r"] +atlas = ExtResource("3_p8gbr") +region = Rect2(48, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ktf26"] +atlas = ExtResource("3_p8gbr") +region = Rect2(96, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_csmmg"] +atlas = ExtResource("3_y36hw") +region = Rect2(0, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_qwm4e"] +atlas = ExtResource("3_y36hw") +region = Rect2(48, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_mynlp"] +atlas = ExtResource("3_y36hw") +region = Rect2(96, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_q5scx"] +atlas = ExtResource("3_y36hw") +region = Rect2(144, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_j0rp2"] +atlas = ExtResource("3_y36hw") +region = Rect2(192, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7fytd"] +atlas = ExtResource("3_y36hw") +region = Rect2(240, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_nw067"] +atlas = ExtResource("3_y36hw") +region = Rect2(288, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1caon"] +atlas = ExtResource("3_y36hw") +region = Rect2(336, 0, 48, 48) + +[sub_resource type="SpriteFrames" id="SpriteFrames_52pno"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_cdvw1") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_q1l1v") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_6hv7e") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4h4qw") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_638nb") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_73fjy") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_7r0nq") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_5potv") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_c5yi2") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_flju4") +}], +"loop": true, +"name": &"playerIdle", +"speed": 12.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_4ckr0") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_7vs6r") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ktf26") +}], +"loop": false, +"name": &"playerJump", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_csmmg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_qwm4e") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_mynlp") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_q5scx") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_j0rp2") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_7fytd") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_nw067") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1caon") +}], +"loop": true, +"name": &"playerRun", +"speed": 12.0 +}] + +[node name="CharacterBody2D" type="CharacterBody2D" groups=["player"]] script = ExtResource("1_4o8do") PUSH_FORCE = 100 metadata/_edit_group_ = true @@ -25,3 +193,15 @@ position = Vector2(35, -10) [node name="MarkerLeft" type="Node2D" parent="."] position = Vector2(-35, -10) + +[node name="Camera2D" type="Camera2D" parent="."] +position = Vector2(0, -75) +zoom = Vector2(0.5, 0.5) + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +texture_filter = 1 +position = Vector2(-1, -4) +scale = Vector2(2.22855, 2.22855) +sprite_frames = SubResource("SpriteFrames_52pno") +animation = &"playerJump" +autoplay = "playerIdle" diff --git a/scripts/bullet.gd b/scripts/bullet.gd index 3b1aa49..d14bd00 100644 --- a/scripts/bullet.gd +++ b/scripts/bullet.gd @@ -1,14 +1,31 @@ -extends Area2D +class_name Bullet extends Area2D -@export var speed := 700 -signal hit(bullet, body) +@onready var bulletGraphic: Sprite2D = $Sprite2D -func set_speed(speedval): - speed = speedval +var speed = 700 +signal hit -func _physics_process(delta): +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta): + pass + +func _physics_process(delta: float) -> void: position += transform.x * speed * delta - -func _on_body_entered(body): - print ("Hit a thing") # Replace with function body. +func setSpeed(value): + speed = value + if speed < 0: + bulletGraphic.flip_h = true + else: + bulletGraphic.flip_h = false + + +func _on_body_entered(body: Node2D) -> void: + print("Bullet hit sumtin") + if not body.is_in_group("player"): + hit.emit(self, body) diff --git a/scripts/charController.gd b/scripts/charController.gd index 8cf212a..556d747 100644 --- a/scripts/charController.gd +++ b/scripts/charController.gd @@ -5,7 +5,7 @@ const SPEED = 500.0 const JUMP_VELOCITY = -600.0 @export var BUMP_FORCE = 90 @export var PUSH_FORCE = 700 - +@onready var animation: AnimatedSprite2D = $AnimatedSprite2D var faceLeft = false var pushLeftEnabled = false @@ -19,14 +19,18 @@ var bullet = preload("res://scenes/bullet.tscn") @onready var marker_right = $MarkerRight @onready var marker_left = $MarkerLeft +var isJumping = false func _physics_process(delta: float) -> void: # Add the gravity. if not is_on_floor(): velocity += get_gravity() * delta + else: + isJumping = false # Handle jump. if Input.is_action_just_pressed("ui_accept") and is_on_floor(): + isJumping = true velocity.y = JUMP_VELOCITY if pushTarget: @@ -41,32 +45,33 @@ func _physics_process(delta: float) -> void: pushRightEnabled = false if Input.is_action_just_pressed("Shoot"): - var mybullet = bullet.instantiate() - print("I will shoot") if faceLeft: - print("shoot left") - mybullet.set_speed(-700) - mybullet.transform = marker_right.global_transform + var _myBullet = %SceneManager.makeBullet(marker_left.global_transform, -700) else: - print("shoot right") - mybullet.transform = marker_right.global_transform - - owner.add_child(mybullet) + var _myBullet = %SceneManager.makeBullet(marker_right.global_transform, 700) # Get the input direction and handle the movement/deceleration. # As good practice, you should replace UI actions with custom gameplay actions. var direction := Input.get_axis("ui_left", "ui_right") - if direction < 0: - faceLeft = true - if direction > 0: - faceLeft = false - - - + if direction: + if direction < 0: + faceLeft = true + if direction > 0: + faceLeft = false + + animation.flip_h = faceLeft + if not isJumping: + animation.play("playerRun") + else: + animation.play("playerJump") velocity.x = direction * SPEED else: + if not isJumping: + animation.play("playerIdle") + else: + animation.play("playerJump") velocity.x = move_toward(velocity.x, 0, SPEED) move_and_slide() diff --git a/scripts/gameController.gd b/scripts/gameController.gd index 0b7b3a8..aa6847e 100644 --- a/scripts/gameController.gd +++ b/scripts/gameController.gd @@ -1,8 +1,11 @@ extends Node2D -var boxTotal = 3 var timer:= Timer.new() -@export var secondCount= 15 +@export var secondCount= 30 + +var totalCrates := 0 + +signal destroyBox # Called when the node enters the scene tree for the first time. func _ready() -> void: @@ -21,18 +24,21 @@ func secondCounter(): # Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: +func _process(_delta: float) -> void: pass -func _on_trigger(effect: Variant, body) -> void: +func _on_trigger(_effect: Variant, body) -> void: print("they were triggered!") if body is RigidBody2D: print("crate spotted") - boxTotal -= 1 body.queue_free() - if boxTotal <=0: - print("A winner is you") - get_tree().reload_current_scene() - + +func bulletHit(body): + print("Game controller knows bullet hit something") + if body.is_in_group("destructables"): + + destroyBox.emit(body) +func countCrates(value): + totalCrates = value diff --git a/scripts/sceneManager.gd b/scripts/sceneManager.gd new file mode 100644 index 0000000..8a7b778 --- /dev/null +++ b/scripts/sceneManager.gd @@ -0,0 +1,51 @@ +extends Node +@onready var game: Node2D = $".." +@onready var crates: Node2D = $"../crates" + +var theBullet = preload("res://scenes/bullet.tscn") +var bulletArray:Array = [] +var totalCrates := 0 + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + game.destroyBox.connect(boxDestroy) + for obj in crates.get_children(): + if obj.is_in_group("destructables"): + totalCrates += 1 + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta: float) -> void: + pass + +func bulletFactory(): + print("Factory will make a bullet") + var myBullet + if bulletArray.size() < 4: + myBullet = theBullet.instantiate() + myBullet.connect("hit", onBulletHit) + owner.add_child(myBullet) + else: + myBullet = bulletArray.pop_back() + + bulletArray.push_front(myBullet) + print("there are ", bulletArray.size(), " bullets") + return myBullet + +func makeBullet(position, speed): + var myBullet = bulletFactory() + myBullet.transform = position + myBullet.setSpeed(speed) + + return + + +func onBulletHit(bullet, body): + bullet.position = Vector2(-100, -100) + bullet.setSpeed(0) + print("Scene manager knows bullet hit") + game.bulletHit(body) + +func boxDestroy(body): + print("sceneMgr knows body destroyed") + body.queue_free() + diff --git a/scripts/trigger.gd b/scripts/trigger.gd index 81b6ab8..94066e4 100644 --- a/scripts/trigger.gd +++ b/scripts/trigger.gd @@ -9,7 +9,7 @@ func _ready() -> void: # Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: +func _process(_delta: float) -> void: pass