3 Commits
Author SHA1 Message Date
OddlyTimbot 2dd2c13b19 adding a charge attack to states 2026-07-06 14:32:07 -04:00
OddlyTimbot 29b125f5af bullet stashing 2026-07-06 13:56:57 -04:00
OddlyTimbot 2e494502a8 player state 2026-07-06 13:31:26 -04:00
30 changed files with 213 additions and 963 deletions

No files matched your search

-105
View File
@@ -1,105 +0,0 @@
Week 4 - Environment
1. Create a second terrain for vegetation
Learn to use the tilemap layer to easily add vegetation to your level.
* Add a terrain to your terrain set zero
* Import and atlas your graphics (32x32)
* Paint terrain rules
2. Setting Display properties
Learn to set display properties to size the viewport and scale it.
Go to project settings:
Display>Window
Viewport Width 480
Viewport Height 270
This makes the viewport small, but we can now scale it up to the size we want to play at
Advanced settings: on
Window width override: 960
Window height override: 540
And finally how to handle the up-scaling
Stretch>Mode: viewport
aspect: keep
scale: 1.0
At this point you can control the scaling.
The closer the viewport setting is to the scaled size, the more of the
scene will be revealed.
You should add a camera to the player so that the viewport will show the area around them.
3. Creating a background
Create a "sky"
Create a color block the same size as your viewport (480x270)
Create a parallax2D > Add a child Sprite2D to it
Assign the graphic to be the sprite in Sprite2D
Offset the graphic in Sprite2D, 1/2 width, 1/2 height
In the parallax2D parent, set scroll scale to x:1.0 y:1.0
Repeat Size: x:480 y:270
Create a "midground" parallax2D
Scroll Scale x:1.05 y:1.0
Repeat Size x:480 y:0
Create a "foreground"
Scroll Scale x:1.1 y:1.0
Repeat Size x:480 y:0
Optional - Create a "front" parallax2D
4. Custom Graphics
Set up GIMP for creating custom pixel art
Make a background
Create a new document, set to the size of viewport (480x270)
Set up Canvas for Pixel Art
View > Show Grid
Image > Configure Grid
Spacing > 1 horizontal 1 vertical (pixels) > set foreground colour
Set up Tool for Pixel Art
Select "pencil" by click-hold on drawing tools
In tool options:
Size: 1.0
Hardness: 100
The pencil tool creates the hard edges we want in pixel art.
Saving your file as .xcf file will save your grid settings, but will not
automatically show the grid when you open the file. You will still need to
go to View > Show Grid
Turning Images into Pixel Art
When you bring in a reference image there is a good chance it will need to
have work done. A good way to get used to using reference images is to use
a silhoette image.
Get an image
Paste it as a new single layer
Scale it using the scaling tool
Use the colour picker tool to select the black
Make a new layer
Use the paint bucket tool to fill the selection (can now delete reference)
With the selection painted it will snap the paint to whole pixels, but
you will likely see some fuzzy edges because some of the pixels around edges
will be partially transparent.
You can use the colour picker tool set to "select by alpha". Now when you select
a transparent pixel, it will add all pixels with the same transparency to the
selection.
You can now use the paint bucket to fill the selection with an appropriate colour.
When done you can paint bucket the main colour (no selection) to flood-fill any
remaining partially transparent pixels.
Editing Pixel Art
You might want to customize your character art! Conveniently, your sprite sheets
are designed so that each limb of the character is composed of a consistent
colour in each frame.
This allows us to use the "colour selection" tool to select the limb in every frame.
And as above, the paint bucket can be used to fill the limb with an appropriate colour.
When complete, you can draw in anything else you like, though you will have to
do it for each cell. If you save it to your Godot project, it will overwrite
the graphics, and instantly show up in your game!
Scaling Pixel Art
Be aware that if you scale pixel art, there is a very high chance the edges will
become fuzzy and indistinct. This is because of "interpolation".
To avoid this problem, set the scaling tool to Interpolation - None.
Now when you scale your pixel art it will snap to the closes whole pixel,
maintaining the crisp edges.
+6
View File
@@ -0,0 +1,6 @@
Here in week3 we have several missions to achieve.
1. Update the Bullet with some graphics
2. Update the player with graphics and a state-machine
3. Update the destroy function in SceneManager to stash bullets
4. Update level loading in GameController and SceneManager
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

-40
View File
@@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://2ovhbun1d00s"
path="res://.godot/imported/crate.png-3c788bb24b8188e6f11d4ace2d9118d8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/destructibles/crate.png"
dest_files=["res://.godot/imported/crate.png-3c788bb24b8188e6f11d4ace2d9118d8.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

@@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b6fqvrq70n5al"
path="res://.godot/imported/Terrain (32x32).png-7c65717e98f50801dcb0b6e4b7ea2dbc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/environment/Terrain (32x32).png"
dest_files=["res://.godot/imported/Terrain (32x32).png-7c65717e98f50801dcb0b6e4b7ea2dbc.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

-40
View File
@@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b583o88duaqu"
path="res://.godot/imported/sky.png-86cc6f428916ab8e3e1824da6ccc3df5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/environment/bg/sky.png"
dest_files=["res://.godot/imported/sky.png-86cc6f428916ab8e3e1824da6ccc3df5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

@@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cn1qvqti2u0pk"
path="res://.godot/imported/mushroom_32x64.png-f773d82c5be18b26897c2ebfe3849a39.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/environment/mushroom_32x64.png"
dest_files=["res://.godot/imported/mushroom_32x64.png-f773d82c5be18b26897c2ebfe3849a39.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

Before

Width:  |  Height:  |  Size: 675 B

-40
View File
@@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cj3we2brsknxh"
path="res://.godot/imported/veg_32x32.png-f547c76da23451f9a832bbe2fb852b32.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/environment/veg_32x32.png"
dest_files=["res://.godot/imported/veg_32x32.png-f547c76da23451f9a832bbe2fb852b32.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
@@ -2,16 +2,16 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dngnhx41kw3mw" uid="uid://t2wrpg2jjey2"
path="res://.godot/imported/Player Punch 64x64.png-e81d95f7286a1f82c2b84ff5ac90cdcb.ctex" path="res://.godot/imported/Player Punch 64x64.png-3a937f356fef19bd687f033e25d25550.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://assets/player/charging/Player Punch 64x64.png" source_file="res://assets/graphics/player/charge/Player Punch 64x64.png"
dest_files=["res://.godot/imported/Player Punch 64x64.png-e81d95f7286a1f82c2b84ff5ac90cdcb.ctex"] dest_files=["res://.godot/imported/Player Punch 64x64.png-3a937f356fef19bd687f033e25d25550.ctex"]
[params] [params]
@@ -2,16 +2,16 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://b1ai5l50rwv4u" uid="uid://bhjnspvqa20rc"
path="res://.godot/imported/Player Idle 48x48.png-f4dc4a776c51960ade42b56516ebdf44.ctex" path="res://.godot/imported/Player Idle 48x48.png-9f43f14976963a2821a06ddf8579a76a.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://assets/player/idle/Player Idle 48x48.png" source_file="res://assets/graphics/player/idle/Player Idle 48x48.png"
dest_files=["res://.godot/imported/Player Idle 48x48.png-f4dc4a776c51960ade42b56516ebdf44.ctex"] dest_files=["res://.godot/imported/Player Idle 48x48.png-9f43f14976963a2821a06ddf8579a76a.ctex"]
[params] [params]
@@ -2,16 +2,16 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cgyc5mlhrd472" uid="uid://c84o6tpt2h0s8"
path="res://.godot/imported/player jump 48x48.png-76072e8defb6fa3b97cc972a34149281.ctex" path="res://.godot/imported/player jump 48x48.png-bb6ba8ccf76c9bd3765199af95f48c3c.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://assets/player/jump_fall/player jump 48x48.png" source_file="res://assets/graphics/player/jump_fall/player jump 48x48.png"
dest_files=["res://.godot/imported/player jump 48x48.png-76072e8defb6fa3b97cc972a34149281.ctex"] dest_files=["res://.godot/imported/player jump 48x48.png-bb6ba8ccf76c9bd3765199af95f48c3c.ctex"]
[params] [params]
@@ -2,16 +2,16 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://di17x5ovjtvtt" uid="uid://jdvo0dp5qvnd"
path="res://.godot/imported/player run 48x48.png-88a3d854902c0e89fc61b644954350dd.ctex" path="res://.godot/imported/player run 48x48.png-3529730a2a1b5884902527ab512e774d.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://assets/player/run/player run 48x48.png" source_file="res://assets/graphics/player/running/player run 48x48.png"
dest_files=["res://.godot/imported/player run 48x48.png-88a3d854902c0e89fc61b644954350dd.ctex"] dest_files=["res://.godot/imported/player run 48x48.png-3529730a2a1b5884902527ab512e774d.ctex"]
[params] [params]
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

@@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cl142hwp38td6"
path="res://.godot/imported/pixel_bullet.png-20ba33e0a261e4601930c0fd8abb422a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/projectiles/pixel_bullet.png"
dest_files=["res://.godot/imported/pixel_bullet.png-20ba33e0a261e4601930c0fd8abb422a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.
-8
View File
@@ -15,14 +15,6 @@ run/main_scene="uid://ch6sfehmsskcs"
config/features=PackedStringArray("4.6", "Forward Plus") config/features=PackedStringArray("4.6", "Forward Plus")
config/icon="res://icon.svg" config/icon="res://icon.svg"
[display]
window/size/viewport_width=580
window/size/viewport_height=370
window/size/window_width_override=960
window/size/window_height_override=540
window/stretch/mode="viewport"
[input] [input]
shove={ shove={
-8
View File
@@ -1,7 +1,6 @@
[gd_scene format=3 uid="uid://bp51pocvj7p3x"] [gd_scene format=3 uid="uid://bp51pocvj7p3x"]
[ext_resource type="Script" uid="uid://bvy43aky6y3er" path="res://scripts/bullet.gd" id="1_mkf8s"] [ext_resource type="Script" uid="uid://bvy43aky6y3er" path="res://scripts/bullet.gd" id="1_mkf8s"]
[ext_resource type="Texture2D" uid="uid://cl142hwp38td6" path="res://assets/projectiles/pixel_bullet.png" id="2_y25gk"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_y25gk"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_y25gk"]
size = Vector2(10, 4) size = Vector2(10, 4)
@@ -13,11 +12,4 @@ script = ExtResource("1_mkf8s")
shape = SubResource("RectangleShape2D_y25gk") shape = SubResource("RectangleShape2D_y25gk")
debug_color = Color(0.92602646, 0.20405883, 0.46076977, 0.41960785) debug_color = Color(0.92602646, 0.20405883, 0.46076977, 0.41960785)
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1465228846]
texture_filter = 1
position = Vector2(-2.9999998, -1.9999998)
rotation = -3.1367095
scale = Vector2(0.07999989, 0.08039169)
texture = ExtResource("2_y25gk")
[connection signal="body_entered" from="." to="." method="_on_body_entered"] [connection signal="body_entered" from="." to="." method="_on_body_entered"]
+1 -6
View File
@@ -1,19 +1,14 @@
[gd_scene format=3 uid="uid://b6cmg0k8qjoxi"] [gd_scene format=3 uid="uid://b6cmg0k8qjoxi"]
[ext_resource type="Script" uid="uid://cxgsqwmbd0c8q" path="res://scripts/crate.gd" id="1_b66cd"] [ext_resource type="Script" uid="uid://cxgsqwmbd0c8q" path="res://scripts/crate.gd" id="1_b66cd"]
[ext_resource type="Texture2D" uid="uid://2ovhbun1d00s" path="res://assets/destructibles/crate.png" id="2_dwt0d"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_uwrxv"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_uwrxv"]
[node name="Crate" type="RigidBody2D" unique_id=1609374030 groups=["shootable"]] [node name="Crate" type="RigidBody2D" unique_id=1609374030 groups=["shootable"]]
rotation = -0.68311554
script = ExtResource("1_b66cd") script = ExtResource("1_b66cd")
metadata/_edit_group_ = true metadata/_edit_group_ = true
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1887853406]
position = Vector2(0, 2)
scale = Vector2(0.08, 0.08)
texture = ExtResource("2_dwt0d")
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1778772587] [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1778772587]
shape = SubResource("RectangleShape2D_uwrxv") shape = SubResource("RectangleShape2D_uwrxv")
debug_color = Color(0.83607924, 0.38220474, 0.18172199, 0.41960785) debug_color = Color(0.83607924, 0.38220474, 0.18172199, 0.41960785)
+3 -403
View File
@@ -1,400 +1,11 @@
[gd_scene format=4 uid="uid://ch6sfehmsskcs"] [gd_scene format=3 uid="uid://ch6sfehmsskcs"]
[ext_resource type="Script" uid="uid://dtv434qd1rfmu" path="res://scripts/game.gd" id="1_lnu2h"] [ext_resource type="Script" uid="uid://dtv434qd1rfmu" path="res://scripts/game.gd" id="1_lnu2h"]
[ext_resource type="Texture2D" uid="uid://b583o88duaqu" path="res://assets/environment/bg/sky.png" id="2_0tnpc"]
[ext_resource type="Script" uid="uid://b5c00ybml8rj" path="res://scripts/scene_manager.gd" id="2_lbhrr"] [ext_resource type="Script" uid="uid://b5c00ybml8rj" path="res://scripts/scene_manager.gd" id="2_lbhrr"]
[ext_resource type="Texture2D" uid="uid://b6fqvrq70n5al" path="res://assets/environment/Terrain (32x32).png" id="2_p57ef"]
[ext_resource type="Texture2D" uid="uid://cn1qvqti2u0pk" path="res://assets/environment/mushroom_32x64.png" id="3_gee14"]
[ext_resource type="Texture2D" uid="uid://cj3we2brsknxh" path="res://assets/environment/veg_32x32.png" id="4_0tnpc"]
[ext_resource type="PackedScene" uid="uid://byl4bdrupii3k" path="res://scenes/player.tscn" id="4_iywne"] [ext_resource type="PackedScene" uid="uid://byl4bdrupii3k" path="res://scenes/player.tscn" id="4_iywne"]
[ext_resource type="PackedScene" uid="uid://b6cmg0k8qjoxi" path="res://scenes/crate.tscn" id="5_iywne"] [ext_resource type="PackedScene" uid="uid://b6cmg0k8qjoxi" path="res://scenes/crate.tscn" id="5_iywne"]
[ext_resource type="PackedScene" uid="uid://b3hgbbmb0nohj" path="res://scenes/trigger.tscn" id="5_p57ef"] [ext_resource type="PackedScene" uid="uid://b3hgbbmb0nohj" path="res://scenes/trigger.tscn" id="5_p57ef"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_u5sy4"]
texture = ExtResource("2_p57ef")
texture_region_size = Vector2i(32, 32)
0:0/0 = 0
0:0/0/terrain_set = 0
0:0/0/terrain = 0
0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
0:0/0/terrains_peering_bit/right_side = 0
0:0/0/terrains_peering_bit/bottom_right_corner = 0
0:0/0/terrains_peering_bit/bottom_side = 0
1:0/0 = 0
1:0/0/terrain_set = 0
1:0/0/terrain = 0
1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, -2.5490456, -16, -1.593153)
1:0/0/terrains_peering_bit/right_side = 0
1:0/0/terrains_peering_bit/bottom_right_corner = 0
1:0/0/terrains_peering_bit/bottom_side = 0
1:0/0/terrains_peering_bit/bottom_left_corner = 0
1:0/0/terrains_peering_bit/left_side = 0
2:0/0 = 0
2:0/0/terrain_set = 0
2:0/0/terrain = 0
2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:0/0/terrains_peering_bit/bottom_side = 0
2:0/0/terrains_peering_bit/bottom_left_corner = 0
2:0/0/terrains_peering_bit/left_side = 0
4:0/0 = 0
4:0/0/terrain_set = 0
4:0/0/terrain = 0
4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
4:0/0/terrains_peering_bit/bottom_side = 0
6:0/0 = 0
6:0/0/terrain_set = 0
6:0/0/terrain = 0
6:0/0/terrains_peering_bit/right_side = 0
6:0/0/terrains_peering_bit/bottom_side = 0
6:0/0/terrains_peering_bit/bottom_left_corner = 0
6:0/0/terrains_peering_bit/left_side = 0
6:0/0/terrains_peering_bit/top_left_corner = 0
6:0/0/terrains_peering_bit/top_side = 0
6:0/0/terrains_peering_bit/top_right_corner = 0
7:0/0 = 0
7:0/0/terrain_set = 0
7:0/0/terrain = 0
7:0/0/terrains_peering_bit/right_side = 0
7:0/0/terrains_peering_bit/bottom_right_corner = 0
7:0/0/terrains_peering_bit/bottom_side = 0
7:0/0/terrains_peering_bit/left_side = 0
7:0/0/terrains_peering_bit/top_left_corner = 0
7:0/0/terrains_peering_bit/top_side = 0
7:0/0/terrains_peering_bit/top_right_corner = 0
9:0/0 = 0
9:0/0/terrain_set = 0
9:0/0/terrain = 0
9:0/0/terrains_peering_bit/right_side = 0
9:0/0/terrains_peering_bit/bottom_right_corner = 0
9:0/0/terrains_peering_bit/bottom_side = 0
9:0/0/terrains_peering_bit/bottom_left_corner = 0
9:0/0/terrains_peering_bit/left_side = 0
9:0/0/terrains_peering_bit/top_side = 0
10:0/0 = 0
10:0/0/terrain_set = 0
10:0/0/terrain = 0
10:0/0/terrains_peering_bit/right_side = 0
10:0/0/terrains_peering_bit/bottom_side = 0
10:0/0/terrains_peering_bit/bottom_left_corner = 0
10:0/0/terrains_peering_bit/left_side = 0
10:0/0/terrains_peering_bit/top_left_corner = 0
10:0/0/terrains_peering_bit/top_side = 0
12:0/0 = 0
12:0/0/terrain_set = 0
12:0/0/terrain = 0
12:0/0/terrains_peering_bit/right_side = 0
12:0/0/terrains_peering_bit/bottom_right_corner = 0
12:0/0/terrains_peering_bit/bottom_side = 0
12:0/0/terrains_peering_bit/left_side = 0
12:0/0/terrains_peering_bit/top_side = 0
12:0/0/terrains_peering_bit/top_right_corner = 0
13:0/0 = 0
13:0/0/terrain_set = 0
13:0/0/terrain = 0
13:0/0/terrains_peering_bit/right_side = 0
13:0/0/terrains_peering_bit/bottom_side = 0
13:0/0/terrains_peering_bit/bottom_left_corner = 0
13:0/0/terrains_peering_bit/left_side = 0
13:0/0/terrains_peering_bit/top_side = 0
15:0/0 = 0
15:0/0/terrain_set = 0
15:0/0/terrain = 0
15:0/0/terrains_peering_bit/right_side = 0
15:0/0/terrains_peering_bit/bottom_side = 0
15:0/0/terrains_peering_bit/left_side = 0
15:0/0/terrains_peering_bit/top_side = 0
0:1/0 = 0
0:1/0/terrain_set = 0
0:1/0/terrain = 0
0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -1.5931549, -16, -0.63726044, 16, -16, 16)
0:1/0/terrains_peering_bit/right_side = 0
0:1/0/terrains_peering_bit/bottom_right_corner = 0
0:1/0/terrains_peering_bit/bottom_side = 0
0:1/0/terrains_peering_bit/top_side = 0
0:1/0/terrains_peering_bit/top_right_corner = 0
1:1/0 = 0
2:1/0 = 0
2:1/0/terrain_set = 0
2:1/0/terrain = 0
2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(0.95589066, -16, 16, -16, 16, 16, 0.31863022, 16)
2:1/0/terrains_peering_bit/bottom_side = 0
2:1/0/terrains_peering_bit/bottom_left_corner = 0
2:1/0/terrains_peering_bit/left_side = 0
2:1/0/terrains_peering_bit/top_left_corner = 0
2:1/0/terrains_peering_bit/top_side = 0
4:1/0 = 0
4:1/0/terrain_set = 0
4:1/0/terrain = 0
4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
4:1/0/terrains_peering_bit/bottom_side = 0
4:1/0/terrains_peering_bit/top_side = 0
6:1/0 = 0
6:1/0/terrain_set = 0
6:1/0/terrain = 0
6:1/0/terrains_peering_bit/right_side = 0
6:1/0/terrains_peering_bit/bottom_right_corner = 0
6:1/0/terrains_peering_bit/bottom_side = 0
6:1/0/terrains_peering_bit/bottom_left_corner = 0
6:1/0/terrains_peering_bit/left_side = 0
6:1/0/terrains_peering_bit/top_left_corner = 0
6:1/0/terrains_peering_bit/top_side = 0
7:1/0 = 0
7:1/0/terrain_set = 0
7:1/0/terrain = 0
7:1/0/terrains_peering_bit/right_side = 0
7:1/0/terrains_peering_bit/bottom_right_corner = 0
7:1/0/terrains_peering_bit/bottom_side = 0
7:1/0/terrains_peering_bit/bottom_left_corner = 0
7:1/0/terrains_peering_bit/left_side = 0
7:1/0/terrains_peering_bit/top_side = 0
7:1/0/terrains_peering_bit/top_right_corner = 0
9:1/0 = 0
9:1/0/terrain_set = 0
9:1/0/terrain = 0
9:1/0/terrains_peering_bit/right_side = 0
9:1/0/terrains_peering_bit/bottom_right_corner = 0
9:1/0/terrains_peering_bit/bottom_side = 0
9:1/0/terrains_peering_bit/top_side = 0
9:1/0/terrains_peering_bit/top_right_corner = 0
10:1/0 = 0
10:1/0/terrain_set = 0
10:1/0/terrain = 0
10:1/0/terrains_peering_bit/right_side = 0
10:1/0/terrains_peering_bit/bottom_side = 0
10:1/0/terrains_peering_bit/left_side = 0
10:1/0/terrains_peering_bit/top_left_corner = 0
10:1/0/terrains_peering_bit/top_side = 0
10:1/0/terrains_peering_bit/top_right_corner = 0
12:1/0 = 0
12:1/0/terrain_set = 0
12:1/0/terrain = 0
12:1/0/terrains_peering_bit/right_side = 0
12:1/0/terrains_peering_bit/bottom_side = 0
12:1/0/terrains_peering_bit/left_side = 0
12:1/0/terrains_peering_bit/top_side = 0
12:1/0/terrains_peering_bit/top_right_corner = 0
13:1/0 = 0
13:1/0/terrain_set = 0
13:1/0/terrain = 0
13:1/0/terrains_peering_bit/right_side = 0
13:1/0/terrains_peering_bit/bottom_side = 0
13:1/0/terrains_peering_bit/left_side = 0
13:1/0/terrains_peering_bit/top_left_corner = 0
13:1/0/terrains_peering_bit/top_side = 0
15:1/0 = 0
15:1/0/terrain_set = 0
15:1/0/terrain = 0
15:1/0/terrains_peering_bit/right_side = 0
15:1/0/terrains_peering_bit/bottom_side = 0
15:1/0/terrains_peering_bit/bottom_left_corner = 0
15:1/0/terrains_peering_bit/top_side = 0
15:1/0/terrains_peering_bit/top_right_corner = 0
16:1/0 = 0
16:1/0/terrain_set = 0
16:1/0/terrain = 0
16:1/0/terrains_peering_bit/right_side = 0
16:1/0/terrains_peering_bit/bottom_right_corner = 0
16:1/0/terrains_peering_bit/bottom_side = 0
16:1/0/terrains_peering_bit/left_side = 0
16:1/0/terrains_peering_bit/top_left_corner = 0
16:1/0/terrains_peering_bit/top_side = 0
16:1/0/terrains_peering_bit/top_right_corner = 0
0:2/0 = 0
0:2/0/terrain_set = 0
0:2/0/terrain = 0
0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
0:2/0/terrains_peering_bit/right_side = 0
0:2/0/terrains_peering_bit/top_side = 0
0:2/0/terrains_peering_bit/top_right_corner = 0
1:2/0 = 0
1:2/0/terrain_set = 0
1:2/0/terrain = 0
1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -0.31863022, 16, -0.63726044, 16, 16, -16, 16)
1:2/0/terrains_peering_bit/right_side = 0
1:2/0/terrains_peering_bit/left_side = 0
1:2/0/terrains_peering_bit/top_left_corner = 0
1:2/0/terrains_peering_bit/top_side = 0
1:2/0/terrains_peering_bit/top_right_corner = 0
2:2/0 = 0
2:2/0/terrain_set = 0
2:2/0/terrain = 0
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:2/0/terrains_peering_bit/left_side = 0
2:2/0/terrains_peering_bit/top_left_corner = 0
2:2/0/terrains_peering_bit/top_side = 0
4:2/0 = 0
4:2/0/terrain_set = 0
4:2/0/terrain = 0
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
4:2/0/terrains_peering_bit/top_side = 0
6:3/0 = 0
6:3/0/terrain_set = 0
6:3/0/terrain = 0
6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -0.9558945, -16, -0.9558945, 16, -16, 16)
6:3/0/terrains_peering_bit/right_side = 0
6:3/0/terrains_peering_bit/bottom_side = 0
6:3/0/terrains_peering_bit/top_side = 0
6:3/0/terrains_peering_bit/top_right_corner = 0
7:3/0 = 0
7:3/0/terrain_set = 0
7:3/0/terrain = 0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(0.95589066, -16, 16, -16, 16, 16, 1.5931549, 16)
7:3/0/terrains_peering_bit/bottom_side = 0
7:3/0/terrains_peering_bit/left_side = 0
7:3/0/terrains_peering_bit/top_left_corner = 0
7:3/0/terrains_peering_bit/top_side = 0
9:3/0 = 0
9:3/0/terrain_set = 0
9:3/0/terrain = 0
9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, -1.2745228, -16, -1.2745228)
9:3/0/terrains_peering_bit/right_side = 0
9:3/0/terrains_peering_bit/bottom_side = 0
9:3/0/terrains_peering_bit/bottom_left_corner = 0
9:3/0/terrains_peering_bit/left_side = 0
10:3/0 = 0
10:3/0/terrain_set = 0
10:3/0/terrain = 0
10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, -1.2745228, -16, -1.2745228)
10:3/0/terrains_peering_bit/right_side = 0
10:3/0/terrains_peering_bit/bottom_right_corner = 0
10:3/0/terrains_peering_bit/bottom_side = 0
10:3/0/terrains_peering_bit/left_side = 0
12:3/0 = 0
12:3/0/terrain_set = 0
12:3/0/terrain = 0
12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
12:3/0/terrains_peering_bit/right_side = 0
12:3/0/terrains_peering_bit/bottom_side = 0
12:3/0/terrains_peering_bit/top_side = 0
12:3/0/terrains_peering_bit/top_right_corner = 0
13:3/0 = 0
13:3/0/terrain_set = 0
13:3/0/terrain = 0
13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
13:3/0/terrains_peering_bit/right_side = 0
13:3/0/terrains_peering_bit/bottom_side = 0
13:3/0/terrains_peering_bit/left_side = 0
15:3/0 = 0
15:3/0/terrain_set = 0
15:3/0/terrain = 0
15:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
15:3/0/terrains_peering_bit/right_side = 0
15:3/0/terrains_peering_bit/bottom_side = 0
16:3/0 = 0
16:3/0/terrain_set = 0
16:3/0/terrain = 0
16:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
16:3/0/terrains_peering_bit/bottom_side = 0
16:3/0/terrains_peering_bit/left_side = 0
0:4/0 = 0
0:4/0/terrain_set = 0
0:4/0/terrain = 0
0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
0:4/0/terrains_peering_bit/right_side = 0
1:4/0 = 0
1:4/0/terrain_set = 0
1:4/0/terrain = 0
1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
1:4/0/terrains_peering_bit/right_side = 0
1:4/0/terrains_peering_bit/left_side = 0
2:4/0 = 0
2:4/0/terrain_set = 0
2:4/0/terrain = 0
2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:4/0/terrains_peering_bit/left_side = 0
4:4/0 = 0
4:4/0/terrain_set = 0
4:4/0/terrain = 0
4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
6:4/0 = 0
6:4/0/terrain_set = 0
6:4/0/terrain = 0
6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -0.9558945, -16, -0.9558945, 16, -16, 16)
6:4/0/terrains_peering_bit/right_side = 0
6:4/0/terrains_peering_bit/bottom_right_corner = 0
6:4/0/terrains_peering_bit/bottom_side = 0
6:4/0/terrains_peering_bit/top_side = 0
7:4/0 = 0
7:4/0/terrain_set = 0
7:4/0/terrain = 0
7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(0.95589066, -16, 16, -16, 16, 16, 1.5931549, 16)
7:4/0/terrains_peering_bit/bottom_side = 0
7:4/0/terrains_peering_bit/bottom_left_corner = 0
7:4/0/terrains_peering_bit/left_side = 0
7:4/0/terrains_peering_bit/top_side = 0
9:4/0 = 0
9:4/0/terrain_set = 0
9:4/0/terrain = 0
9:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -1.593153, 16, -1.9117851, 16, 16, -16, 16)
9:4/0/terrains_peering_bit/right_side = 0
9:4/0/terrains_peering_bit/left_side = 0
9:4/0/terrains_peering_bit/top_left_corner = 0
9:4/0/terrains_peering_bit/top_side = 0
10:4/0 = 0
10:4/0/terrain_set = 0
10:4/0/terrain = 0
10:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -1.593153, 16, -1.9117851, 16, 16, -16, 16)
10:4/0/terrains_peering_bit/right_side = 0
10:4/0/terrains_peering_bit/left_side = 0
10:4/0/terrains_peering_bit/top_side = 0
10:4/0/terrains_peering_bit/top_right_corner = 0
12:4/0 = 0
12:4/0/terrain_set = 0
12:4/0/terrain = 0
12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
12:4/0/terrains_peering_bit/right_side = 0
12:4/0/terrains_peering_bit/left_side = 0
12:4/0/terrains_peering_bit/top_side = 0
13:4/0 = 0
13:4/0/terrain_set = 0
13:4/0/terrain = 0
13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
13:4/0/terrains_peering_bit/bottom_side = 0
13:4/0/terrains_peering_bit/left_side = 0
13:4/0/terrains_peering_bit/top_side = 0
15:4/0 = 0
15:4/0/terrain_set = 0
15:4/0/terrain = 0
15:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
15:4/0/terrains_peering_bit/right_side = 0
15:4/0/terrains_peering_bit/top_side = 0
16:4/0 = 0
16:4/0/terrain_set = 0
16:4/0/terrain = 0
16:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
16:4/0/terrains_peering_bit/left_side = 0
16:4/0/terrains_peering_bit/top_side = 0
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_vtaks"]
texture = ExtResource("3_gee14")
texture_region_size = Vector2i(32, 32)
0:0/0 = 0
0:0/0/terrain_set = 0
0:0/0/terrains_peering_bit/bottom_side = 1
0:1/0 = 0
0:1/0/terrain_set = 0
0:1/0/terrain = 1
0:1/0/terrains_peering_bit/top_side = 1
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_kvpfn"]
texture = ExtResource("4_0tnpc")
texture_region_size = Vector2i(32, 32)
0:0/0 = 0
0:0/0/terrain_set = 0
0:0/0/terrain = 1
[sub_resource type="TileSet" id="TileSet_gee14"]
tile_size = Vector2i(32, 32)
physics_layer_0/collision_layer = 1
terrain_set_0/mode = 0
terrain_set_0/terrain_0/name = "LeafyGreen"
terrain_set_0/terrain_0/color = Color(0.5, 0.34375, 0.25, 1)
terrain_set_0/terrain_1/name = "Veg 1"
terrain_set_0/terrain_1/color = Color(0.5, 0.4375, 0.25, 1)
sources/0 = SubResource("TileSetAtlasSource_u5sy4")
sources/1 = SubResource("TileSetAtlasSource_vtaks")
sources/2 = SubResource("TileSetAtlasSource_kvpfn")
[sub_resource type="RectangleShape2D" id="RectangleShape2D_8cj0n"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_8cj0n"]
[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_iywne"] [sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_iywne"]
@@ -402,17 +13,6 @@ sources/2 = SubResource("TileSetAtlasSource_kvpfn")
[node name="Game" type="Node2D" unique_id=981419409] [node name="Game" type="Node2D" unique_id=981419409]
script = ExtResource("1_lnu2h") script = ExtResource("1_lnu2h")
[node name="Parallax2D" type="Parallax2D" parent="." unique_id=2081148083]
repeat_size = Vector2(580, 370)
[node name="Sprite2D" type="Sprite2D" parent="Parallax2D" unique_id=879239814]
texture = ExtResource("2_0tnpc")
offset = Vector2(290, 185)
[node name="TileMapLayer" type="TileMapLayer" parent="." unique_id=1253342998]
tile_map_data = PackedByteArray("AAARAA0AAAAQAAQAAAARAAwAAAAPAAMAAAASAAwAAAABAAQAAAATAAwAAAAQAAQAAAATAAsAAAAEAAAAAAAUAAkAAAAAAAQAAAAVAAkAAAABAAQAAAAWAAkAAAACAAQAAAAXABEAAAAAAAQAAAAYABEAAAAQAAQAAAAYABAAAAAPAAMAAAAZABAAAAABAAQAAAAaABAAAAABAAQAAAAbABAAAAAQAAQAAAAbAA8AAAAEAAAAAAAbAAwAAAAAAAIAAAAbAAsAAAAAAAAAAAAcAAsAAAABAAAAAAAcAAwAAAABAAIAAAAdAAwAAAACAAIAAAAdAAsAAAAJAAMAAAAeAAsAAAACAAQAAAANAA0AAAAAAAQAAAAOAA0AAAABAAQAAAAPAA0AAAABAAQAAAAQAA0AAAABAAQAAAAKAA8AAAAAAAQAAAALAA8AAAABAAQAAAAMAA8AAAABAAQAAAANAA8AAAAKAAMAAAAOAA8AAAABAAAAAAAPAA8AAAABAAAAAAAQAA8AAAACAAAAAAAQABAAAAACAAEAAAAPABAAAAAGAAAAAAAOABAAAAAGAAAAAAANABAAAAAJAAEAAAANABEAAAAAAAIAAAAOABEAAAABAAIAAAAPABEAAAABAAIAAAAQABEAAAAJAAQAAAARABEAAAABAAQAAAASABEAAAAMAAQAAAASABAAAAAEAAAAAAATABEAAAACAAQAAAAbAA4AAgAAAAAAAAAbAAoAAQAAAAEAAAAbAAkAAQAAAAAAAAAKAA4AAQAAAAEAAAAKAA0AAQAAAAAAAAALAA4AAgAAAAAAAAAVAAgAAgAAAAAAAAA=")
tile_set = SubResource("TileSet_gee14")
[node name="SceneManager" type="Node2D" parent="." unique_id=323246552] [node name="SceneManager" type="Node2D" parent="." unique_id=323246552]
script = ExtResource("2_lbhrr") script = ExtResource("2_lbhrr")
@@ -441,7 +41,7 @@ metadata/_edit_group_ = true
shape = SubResource("RectangleShape2D_8cj0n") shape = SubResource("RectangleShape2D_8cj0n")
[node name="StaticBody2D4" type="StaticBody2D" parent="Walls" unique_id=823918434] [node name="StaticBody2D4" type="StaticBody2D" parent="Walls" unique_id=823918434]
position = Vector2(857, 608) position = Vector2(485.00006, 409)
scale = Vector2(3.4000025, 1) scale = Vector2(3.4000025, 1)
metadata/_edit_group_ = true metadata/_edit_group_ = true
@@ -474,7 +74,7 @@ shape = SubResource("WorldBoundaryShape2D_iywne")
[node name="Triggers" type="Node2D" parent="." unique_id=1195236992] [node name="Triggers" type="Node2D" parent="." unique_id=1195236992]
[node name="Trigger" parent="Triggers" unique_id=229441825 instance=ExtResource("5_p57ef")] [node name="Trigger" parent="Triggers" unique_id=229441825 instance=ExtResource("5_p57ef")]
position = Vector2(712, 463) position = Vector2(621.00006, 465.00006)
[node name="Trigger2" parent="Triggers" unique_id=1474950249 instance=ExtResource("5_p57ef")] [node name="Trigger2" parent="Triggers" unique_id=1474950249 instance=ExtResource("5_p57ef")]
position = Vector2(817, 445) position = Vector2(817, 445)
+141 -139
View File
@@ -1,118 +1,122 @@
[gd_scene format=3 uid="uid://byl4bdrupii3k"] [gd_scene format=3 uid="uid://byl4bdrupii3k"]
[ext_resource type="Script" uid="uid://b1obldvd2etx7" path="res://scripts/player.gd" id="1_3vyb7"] [ext_resource type="Script" uid="uid://b1obldvd2etx7" path="res://scripts/player.gd" id="1_3vyb7"]
[ext_resource type="Texture2D" uid="uid://b1ai5l50rwv4u" path="res://assets/player/idle/Player Idle 48x48.png" id="2_g2els"] [ext_resource type="Texture2D" uid="uid://c84o6tpt2h0s8" path="res://assets/graphics/player/jump_fall/player jump 48x48.png" id="2_dqkch"]
[ext_resource type="Texture2D" uid="uid://dngnhx41kw3mw" path="res://assets/player/charging/Player Punch 64x64.png" id="2_qlg0r"] [ext_resource type="Texture2D" uid="uid://t2wrpg2jjey2" path="res://assets/graphics/player/charge/Player Punch 64x64.png" id="2_qlg0r"]
[ext_resource type="Texture2D" uid="uid://cgyc5mlhrd472" path="res://assets/player/jump_fall/player jump 48x48.png" id="3_dqkch"] [ext_resource type="Texture2D" uid="uid://bhjnspvqa20rc" path="res://assets/graphics/player/idle/Player Idle 48x48.png" id="3_qlg0r"]
[ext_resource type="Texture2D" uid="uid://di17x5ovjtvtt" path="res://assets/player/run/player run 48x48.png" id="3_qhqgy"] [ext_resource type="Texture2D" uid="uid://jdvo0dp5qvnd" path="res://assets/graphics/player/running/player run 48x48.png" id="4_tuyoq"]
[sub_resource type="CircleShape2D" id="CircleShape2D_uwrxv"] [sub_resource type="CircleShape2D" id="CircleShape2D_uwrxv"]
[sub_resource type="AtlasTexture" id="AtlasTexture_l71n6"]
atlas = ExtResource("2_qlg0r")
region = Rect2(128, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_4ni07"]
atlas = ExtResource("3_dqkch")
region = Rect2(96, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_qhqgy"]
atlas = ExtResource("2_g2els")
region = Rect2(0, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_dqkch"]
atlas = ExtResource("2_g2els")
region = Rect2(48, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_qlg0r"]
atlas = ExtResource("2_g2els")
region = Rect2(96, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_tuyoq"] [sub_resource type="AtlasTexture" id="AtlasTexture_tuyoq"]
atlas = ExtResource("2_g2els")
region = Rect2(144, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_fjrip"]
atlas = ExtResource("2_g2els")
region = Rect2(192, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_smehm"]
atlas = ExtResource("2_g2els")
region = Rect2(240, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_ur7pv"]
atlas = ExtResource("2_g2els")
region = Rect2(288, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_y4r1p"]
atlas = ExtResource("2_g2els")
region = Rect2(336, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_d2wvv"]
atlas = ExtResource("2_g2els")
region = Rect2(384, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_3v2ag"]
atlas = ExtResource("2_g2els")
region = Rect2(432, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_i4ail"]
atlas = ExtResource("3_dqkch")
region = Rect2(0, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_a38lo"]
atlas = ExtResource("3_dqkch")
region = Rect2(48, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_jej6c"]
atlas = ExtResource("3_qhqgy")
region = Rect2(0, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_f1ej7"]
atlas = ExtResource("3_qhqgy")
region = Rect2(48, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_oprun"]
atlas = ExtResource("3_qhqgy")
region = Rect2(96, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_a8ls1"]
atlas = ExtResource("3_qhqgy")
region = Rect2(144, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_qfm1y"]
atlas = ExtResource("3_qhqgy")
region = Rect2(192, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_fulsm"]
atlas = ExtResource("3_qhqgy")
region = Rect2(240, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_4r5pv"]
atlas = ExtResource("3_qhqgy")
region = Rect2(288, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_60mlk"]
atlas = ExtResource("3_qhqgy")
region = Rect2(336, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_ke2ow"]
atlas = ExtResource("2_qlg0r") atlas = ExtResource("2_qlg0r")
region = Rect2(192, 0, 64, 64) region = Rect2(192, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_fjrip"]
atlas = ExtResource("2_dqkch")
region = Rect2(96, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_smehm"]
atlas = ExtResource("3_qlg0r")
region = Rect2(0, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_ur7pv"]
atlas = ExtResource("3_qlg0r")
region = Rect2(48, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_y4r1p"]
atlas = ExtResource("3_qlg0r")
region = Rect2(96, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_d2wvv"]
atlas = ExtResource("3_qlg0r")
region = Rect2(144, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_3v2ag"]
atlas = ExtResource("3_qlg0r")
region = Rect2(192, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_jej6c"]
atlas = ExtResource("3_qlg0r")
region = Rect2(240, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_f1ej7"]
atlas = ExtResource("3_qlg0r")
region = Rect2(288, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_oprun"]
atlas = ExtResource("3_qlg0r")
region = Rect2(336, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_a8ls1"]
atlas = ExtResource("3_qlg0r")
region = Rect2(384, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_qfm1y"]
atlas = ExtResource("3_qlg0r")
region = Rect2(432, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_fulsm"]
atlas = ExtResource("2_dqkch")
region = Rect2(0, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_4r5pv"]
atlas = ExtResource("2_dqkch")
region = Rect2(48, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_60mlk"]
atlas = ExtResource("4_tuyoq")
region = Rect2(0, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_i4ail"]
atlas = ExtResource("4_tuyoq")
region = Rect2(48, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_a38lo"]
atlas = ExtResource("4_tuyoq")
region = Rect2(96, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_4ni07"]
atlas = ExtResource("4_tuyoq")
region = Rect2(144, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_l71n6"]
atlas = ExtResource("4_tuyoq")
region = Rect2(192, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_ke2ow"]
atlas = ExtResource("4_tuyoq")
region = Rect2(240, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_ujl30"] [sub_resource type="AtlasTexture" id="AtlasTexture_ujl30"]
atlas = ExtResource("4_tuyoq")
region = Rect2(288, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_31cv2"]
atlas = ExtResource("4_tuyoq")
region = Rect2(336, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_qlg0r"]
atlas = ExtResource("2_qlg0r")
region = Rect2(192, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_pf23h"]
atlas = ExtResource("2_qlg0r") atlas = ExtResource("2_qlg0r")
region = Rect2(256, 0, 64, 64) region = Rect2(256, 0, 64, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_31cv2"] [sub_resource type="AtlasTexture" id="AtlasTexture_dt7fs"]
atlas = ExtResource("2_qlg0r") atlas = ExtResource("2_qlg0r")
region = Rect2(320, 0, 64, 64) region = Rect2(320, 0, 64, 64)
[sub_resource type="SpriteFrames" id="SpriteFrames_jej6c"] [sub_resource type="AtlasTexture" id="AtlasTexture_wqfne"]
atlas = ExtResource("2_qlg0r")
region = Rect2(384, 0, 64, 64)
[sub_resource type="SpriteFrames" id="SpriteFrames_pf23h"]
animations = [{ animations = [{
"frames": [{ "frames": [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_l71n6") "texture": SubResource("AtlasTexture_tuyoq")
}], }],
"loop": false, "loop": false,
"name": &"charging", "name": &"charging",
@@ -120,7 +124,7 @@ animations = [{
}, { }, {
"frames": [{ "frames": [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_4ni07") "texture": SubResource("AtlasTexture_fjrip")
}], }],
"loop": false, "loop": false,
"name": &"falling", "name": &"falling",
@@ -128,21 +132,6 @@ animations = [{
}, { }, {
"frames": [{ "frames": [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_qhqgy")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dqkch")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qlg0r")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_tuyoq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fjrip")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_smehm") "texture": SubResource("AtlasTexture_smehm")
}, { }, {
"duration": 1.0, "duration": 1.0,
@@ -156,23 +145,7 @@ animations = [{
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_3v2ag") "texture": SubResource("AtlasTexture_3v2ag")
}],
"loop": true,
"name": &"idle",
"speed": 12.0
}, { }, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_i4ail")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_a38lo")
}],
"loop": false,
"name": &"jumping",
"speed": 12.0
}, {
"frames": [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_jej6c") "texture": SubResource("AtlasTexture_jej6c")
}, { }, {
@@ -187,22 +160,39 @@ animations = [{
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_qfm1y") "texture": SubResource("AtlasTexture_qfm1y")
}],
"loop": true,
"name": &"idle",
"speed": 12.0
}, { }, {
"frames": [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_fulsm") "texture": SubResource("AtlasTexture_fulsm")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_4r5pv") "texture": SubResource("AtlasTexture_4r5pv")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_60mlk")
}], }],
"loop": true, "loop": false,
"name": &"running", "name": &"jumping",
"speed": 12.0 "speed": 12.0
}, { }, {
"frames": [{ "frames": [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_60mlk")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_i4ail")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_a38lo")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4ni07")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_l71n6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ke2ow") "texture": SubResource("AtlasTexture_ke2ow")
}, { }, {
"duration": 1.0, "duration": 1.0,
@@ -211,6 +201,23 @@ animations = [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_31cv2") "texture": SubResource("AtlasTexture_31cv2")
}], }],
"loop": true,
"name": &"running",
"speed": 12.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_qlg0r")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_pf23h")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dt7fs")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_wqfne")
}],
"loop": false, "loop": false,
"name": &"shoving", "name": &"shoving",
"speed": 12.0 "speed": 12.0
@@ -237,16 +244,11 @@ position = Vector2(12.837839, -8.1081085)
[node name="LeftSpawn" type="Marker2D" parent="." unique_id=374152113] [node name="LeftSpawn" type="Marker2D" parent="." unique_id=374152113]
position = Vector2(-12.837839, -8.108109) position = Vector2(-12.837839, -8.108109)
[node name="PlayerGraphic" type="AnimatedSprite2D" parent="." unique_id=174634956] [node name="PlayerGraphic" type="AnimatedSprite2D" parent="." unique_id=1317034627]
texture_filter = 1 texture_filter = 1
position = Vector2(0, -6.081082) position = Vector2(0, -6.081082)
sprite_frames = SubResource("SpriteFrames_jej6c") sprite_frames = SubResource("SpriteFrames_pf23h")
animation = &"shoving" animation = &"shoving"
autoplay = "idle" autoplay = "idle"
frame = 2
frame_progress = 1.0
[node name="Camera2D" type="Camera2D" parent="." unique_id=144867956]
offset = Vector2(0, -50)
[connection signal="animation_finished" from="PlayerGraphic" to="." method="_on_animation_finished"] [connection signal="animation_finished" from="PlayerGraphic" to="." method="_on_animation_finished"]
+38 -34
View File
@@ -18,34 +18,37 @@ const JUMP_VELOCITY = -400.0
enum FaceDirection {RIGHT,LEFT} enum FaceDirection {RIGHT,LEFT}
var facing:FaceDirection = FaceDirection.RIGHT var facing:FaceDirection = FaceDirection.RIGHT
#State Handling
enum PlayerStates {IDLE,RUNNING,JUMPING,FALLING,CHARGING,SHOVING} enum PlayerState {IDLE, RUNNING, JUMPING, FALLING, CHARGING, SHOVING}
var current_player_state:PlayerStates = PlayerStates.IDLE var current_player_state:PlayerState = PlayerState.IDLE
var upJump:bool = false var upJump:bool = false
func _physics_process(delta: float) -> void: func _physics_process(delta: float) -> void:
handle_input() handle_input()
handle_movement(delta) handle_movement(delta)
handle_states() #States and Animation
handle_animation() handle_update_states()
handle_update_animation()
move_and_slide() move_and_slide()
handle_collisions() handle_collisions()
func handle_input()->void: func handle_input()->void:
# Handle jump. # Handle jump.
if Input.is_action_just_pressed("ui_accept") and is_on_floor(): if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = JUMP_VELOCITY velocity.y = JUMP_VELOCITY
current_player_state=PlayerStates.JUMPING current_player_state = PlayerState.JUMPING
upJump = true upJump = true
# Handle shove. # Handle shove.
if Input.is_action_just_pressed("shove"): if Input.is_action_just_pressed("shove"):
print("I want to shove") print("I want to shove")
if pushRightEnabled and facing==FaceDirection.RIGHT: if pushRightEnabled and facing==FaceDirection.RIGHT:
current_player_state= PlayerStates.CHARGING
pushTimer = Time.get_ticks_msec() pushTimer = Time.get_ticks_msec()
current_player_state = PlayerState.CHARGING
if pushLeftEnabled and facing==FaceDirection.LEFT: if pushLeftEnabled and facing==FaceDirection.LEFT:
current_player_state= PlayerStates.CHARGING
pushTimer = Time.get_ticks_msec() pushTimer = Time.get_ticks_msec()
current_player_state = PlayerState.CHARGING
if Input.is_action_just_released("shove"): if Input.is_action_just_released("shove"):
var pushForce = Time.get_ticks_msec() - pushTimer var pushForce = Time.get_ticks_msec() - pushTimer
@@ -53,11 +56,11 @@ func handle_input()->void:
pushForce=4000 pushForce=4000
if pushRightEnabled and facing==FaceDirection.RIGHT: if pushRightEnabled and facing==FaceDirection.RIGHT:
#deliver the boom #deliver the boom
current_player_state=PlayerState.SHOVING
pushSignal.emit(pushTarget, Vector2(1,0)*100*(pushForce/100)) pushSignal.emit(pushTarget, Vector2(1,0)*100*(pushForce/100))
current_player_state = PlayerStates.SHOVING
if pushLeftEnabled and facing==FaceDirection.LEFT: if pushLeftEnabled and facing==FaceDirection.LEFT:
current_player_state=PlayerState.SHOVING
pushSignal.emit(pushTarget, Vector2(-1,0)*100*(pushForce/100)) pushSignal.emit(pushTarget, Vector2(-1,0)*100*(pushForce/100))
current_player_state = PlayerStates.SHOVING
#Handle Shoot Bullet #Handle Shoot Bullet
if Input.is_action_just_pressed("shoot"): if Input.is_action_just_pressed("shoot"):
print("Ima shoot a bullet") print("Ima shoot a bullet")
@@ -88,7 +91,6 @@ func handle_input()->void:
player_graphic.flip_h = true player_graphic.flip_h = true
else: else:
velocity.x = move_toward(velocity.x, 0, SPEED) velocity.x = move_toward(velocity.x, 0, SPEED)
func handle_movement(delta)->void: func handle_movement(delta)->void:
# Add the gravity. # Add the gravity.
if not is_on_floor(): if not is_on_floor():
@@ -119,40 +121,42 @@ func handle_collisions()->void:
if c.get_collider() is RigidBody2D: if c.get_collider() is RigidBody2D:
#c.get_collider().apply_central_impulse(-c.get_normal() * 100) #c.get_collider().apply_central_impulse(-c.get_normal() * 100)
pushSignal.emit(c.get_collider(), -c.get_normal() * 100) pushSignal.emit(c.get_collider(), -c.get_normal() * 100)
#Exciting new stuff
func handle_states()->void: #New functions for state handling
func handle_update_states()->void:
match current_player_state: match current_player_state:
PlayerStates.IDLE when velocity.x !=0: PlayerState.IDLE when velocity.x !=0:
current_player_state = PlayerStates.RUNNING current_player_state = PlayerState.RUNNING
PlayerStates.RUNNING when velocity.x ==0: PlayerState.RUNNING when velocity.x == 0:
current_player_state = PlayerStates.IDLE current_player_state = PlayerState.IDLE
PlayerStates.JUMPING when velocity.y>0: PlayerState.JUMPING when velocity.y>0:
current_player_state = PlayerStates.FALLING current_player_state = PlayerState.FALLING
PlayerStates.FALLING when is_on_floor(): PlayerState.FALLING when is_on_floor():
if velocity.x ==0: if velocity.x == 0:
current_player_state = PlayerStates.IDLE current_player_state = PlayerState.IDLE
else: else:
current_player_state = PlayerStates.RUNNING current_player_state = PlayerState.RUNNING
func handle_animation()->void:
func handle_update_animation()->void:
match current_player_state: match current_player_state:
PlayerStates.RUNNING: PlayerState.IDLE:
player_graphic.play("running")
PlayerStates.IDLE:
player_graphic.play("idle") player_graphic.play("idle")
PlayerStates.JUMPING: PlayerState.RUNNING:
player_graphic.play("running")
PlayerState.JUMPING:
if upJump: if upJump:
player_graphic.play("jumping") player_graphic.play("jumping")
PlayerStates.FALLING: PlayerState.FALLING:
player_graphic.play("falling") player_graphic.play("falling")
PlayerStates.CHARGING: PlayerState.CHARGING:
player_graphic.play("charging") player_graphic.play("charging")
PlayerStates.SHOVING: PlayerState.SHOVING:
player_graphic.play("shoving") player_graphic.play("shoving")
func _on_animation_finished() -> void: func _on_animation_finished() -> void:
match current_player_state: match current_player_state:
PlayerStates.JUMPING: PlayerState.JUMPING:
upJump = false upJump = false
PlayerStates.SHOVING: PlayerState.SHOVING:
current_player_state = PlayerStates.IDLE current_player_state = PlayerState.IDLE
+8 -4
View File
@@ -47,8 +47,9 @@ func updateCrates()->void:
func pushTarget(body,pushDirection)->void: func pushTarget(body,pushDirection)->void:
if body is RigidBody2D: if body is RigidBody2D:
body.apply_central_impulse(pushDirection) body.apply_central_impulse(pushDirection)
func stashBullet(bullet:Bullet)->void:
#hide the bullet #Stashes bullets off-screen instead of destroying them
func stash(bullet:Bullet)->void:
var stashPosition:Vector2 = Vector2(-100,-100) var stashPosition:Vector2 = Vector2(-100,-100)
bullet.position = stashPosition bullet.position = stashPosition
bullet.setSpeed(0) bullet.setSpeed(0)
@@ -56,10 +57,13 @@ func stashBullet(bullet:Bullet)->void:
func destroy(body)->void: func destroy(body)->void:
match body: match body:
var bod when bod is Bullet: var bod when bod is Rocket:
stashBullet(body) body.queue_free()
var bod when bod is Crate: var bod when bod is Crate:
body.queue_free() body.queue_free()
var bod when bod is Bullet:
print("stash a bullet")
stash(body)
_: _:
body.queue_free() body.queue_free()