From 4cc42512fbf1428acdf17591b9c3bb4399772f00 Mon Sep 17 00:00:00 2001 From: OddlyTimbot Date: Mon, 13 Jul 2026 15:42:13 -0400 Subject: [PATCH] parallax background, character art, pixel art, veg terrain --- Readme.md | 105 +++++++++++++++ assets/environment/bg/sky.png | Bin 0 -> 1290 bytes assets/environment/bg/sky.png.import | 40 ++++++ assets/environment/mushroom_32x64.png | Bin 0 -> 1970 bytes assets/environment/mushroom_32x64.png.import | 40 ++++++ assets/environment/veg_32x32.png | Bin 0 -> 675 bytes assets/environment/veg_32x32.png.import | 40 ++++++ assets/source/background.xcf | Bin 0 -> 4010 bytes project.godot | 8 ++ scenes/game.tscn | 131 ++++++++++++------- scenes/player.tscn | 3 + 11 files changed, 317 insertions(+), 50 deletions(-) create mode 100644 Readme.md create mode 100644 assets/environment/bg/sky.png create mode 100644 assets/environment/bg/sky.png.import create mode 100644 assets/environment/mushroom_32x64.png create mode 100644 assets/environment/mushroom_32x64.png.import create mode 100644 assets/environment/veg_32x32.png create mode 100644 assets/environment/veg_32x32.png.import create mode 100644 assets/source/background.xcf diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..3601420 --- /dev/null +++ b/Readme.md @@ -0,0 +1,105 @@ +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. + diff --git a/assets/environment/bg/sky.png b/assets/environment/bg/sky.png new file mode 100644 index 0000000000000000000000000000000000000000..23468aa75f3c36da6575376597037d8b8ee650d0 GIT binary patch literal 1290 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 JPDHLkV1hjJ7cT$+ literal 0 HcmV?d00001 diff --git a/assets/environment/veg_32x32.png.import b/assets/environment/veg_32x32.png.import new file mode 100644 index 0000000..745b3a2 --- /dev/null +++ b/assets/environment/veg_32x32.png.import @@ -0,0 +1,40 @@ +[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 diff --git a/assets/source/background.xcf b/assets/source/background.xcf new file mode 100644 index 0000000000000000000000000000000000000000..b810e475e6c232cf60939d04f51508db4f19283f GIT binary patch literal 4010 zcmeH}PgC1Q6u$ivw3Q?&c<% zPCamgh)wjMMb4Vd4BaqFGiB2%TZMvY6laP>s{mTdD3=YhXqHPwt2|}S6hUWB6^wGp zf(AxY)-*Hk!mMj&%xbdU4~IK(XxD}BfN^f3o4p`eYx_bn;n!O{M*E=IjJae6nrGxh zJZX#%`qe$i({dEld7~Zi`M_@q=V9B|n!@E;=sOzkgh3=V*N)RP4tzNwe90r%1}EkR za3{!f81Xn3fzM{(dhMA*BY5A$CTw+M*6jr;g~v&Z?G3KU$oAoJB3P=#HVDB)Y(fOK z%cbOrwi!g8EtzV!WuU@c;Gx}igF}d-nOLM65z6{WO$RnwFVxf|S;R03@JUY&$yVE2 z^KIdtRMTckl-cdY)R*=ZgooL^li6Axmv+OJHtJz}y~V3@9nWPOJi@fij+?qM&bVI> z8nE26wOloItmPQ1O50(+?eSUlTX<@H5qGWrjgav&j~>}x=yJ7IX7H=# z!SsBW1*n4+SO&Fb8P-(An68)wW?B`iR541I^nDNsNBFjTojH1e|G<4mw$xf-+PL7B zJ@Y4`f!3w+Mb-~F)NETqS|3AkKzJ9-{`A-Zf-#J|d4a=^mv>lh1v1d*@#J^}r3?u_ zfAYjOU77{Ru7o0JTrIyRC%N7lC38IJ9VN*w(TrlnI6v>F9Wt?B(epUq(~h|9@zCQ8 z&YGs^%&H;gHf{x>%G!}TtG1*JEBU-1>vkhp<2qDqzHgI<0?VtlYQ8_usp@#@g?isw z$5o)RPV%oA)0$aWNo(Zd=-|ltpSU`9c&UhB7CngrBf3;5$7cjS5>9ZR&YoA90?wso z_Zkx{!da|;9fq!`+gOs;d8s|C=3aKj?bu(JGZ&+pKRz+>u+6lazho{*?0<9MJO4)f ztc&_V8hjgd&|g6R6y>?+@DJY@&{2;*D#-xllZ=dS0JOozpr`U=M#fK-R6m@NM>6s# z$aufBy#oUJ;Jv;e8K8WQ@(XCd&oXlMQwh{*yY*Wt9dmF29tpp{D5hKc$=K*7@mJy> z#J>{af8Q76p}j;uME*kubbUxXN;sS&ju9t`72*KJkEfNIXjTZjLxcoFrC=OT<;;I&qV@P23^w z68DJv!~^0X@hIVFjyOh~Bvyz^#8u*YLPgoS{hD>C#I0<96W`U=D4RQ!-{kLVIXIoa m;pfWM>(rHhl&wsMa~|JYe^WjG4*ZGa?}0kW_)hs4<^KSpo=!6W literal 0 HcmV?d00001 diff --git a/project.godot b/project.godot index d7f5753..618eceb 100644 --- a/project.godot +++ b/project.godot @@ -15,6 +15,14 @@ run/main_scene="uid://ch6sfehmsskcs" config/features=PackedStringArray("4.6", "Forward Plus") 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] shove={ diff --git a/scenes/game.tscn b/scenes/game.tscn index 6d66b5b..c73239f 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -1,8 +1,11 @@ [gd_scene format=4 uid="uid://ch6sfehmsskcs"] [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="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://b6cmg0k8qjoxi" path="res://scenes/crate.tscn" id="5_iywne"] [ext_resource type="PackedScene" uid="uid://b3hgbbmb0nohj" path="res://scenes/trigger.tscn" id="5_p57ef"] @@ -11,14 +14,14 @@ texture = ExtResource("2_p57ef") texture_region_size = Vector2i(32, 32) 0:0/0 = 0 -0:0/0/terrain_set = 1 +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 = 1 +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 @@ -27,19 +30,19 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 = 1 +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 = 1 +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 @@ -49,7 +52,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -59,7 +62,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -68,7 +71,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -77,7 +80,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -86,7 +89,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -94,14 +97,14 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 = 1 +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 @@ -111,7 +114,7 @@ texture_region_size = Vector2i(32, 32) 0:1/0/terrains_peering_bit/top_right_corner = 0 1:1/0 = 0 2:1/0 = 0 -2:1/0/terrain_set = 1 +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 @@ -120,13 +123,13 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 = 1 +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 @@ -136,7 +139,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -146,7 +149,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -154,7 +157,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -163,7 +166,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -171,7 +174,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -179,7 +182,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -187,7 +190,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -197,14 +200,14 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 = 1 +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 @@ -213,19 +216,19 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 = 1 +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 = 1 +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 @@ -233,7 +236,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -241,7 +244,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -249,7 +252,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -257,7 +260,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -265,46 +268,46 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 = 1 +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 = 1 +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 = 1 +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 = 1 +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 = 1 +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 = 1 +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 = 1 +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 @@ -312,7 +315,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -320,7 +323,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -328,7 +331,7 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 @@ -336,40 +339,61 @@ texture_region_size = Vector2i(32, 32) 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 = 1 +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 = 1 +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 = 1 +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 = 1 +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_1/mode = 0 -terrain_set_1/terrain_0/name = "LeafyGreen" -terrain_set_1/terrain_0/color = Color(0.5, 0.34375, 0.25, 1) +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"] @@ -378,8 +402,15 @@ sources/0 = SubResource("TileSetAtlasSource_u5sy4") [node name="Game" type="Node2D" unique_id=981419409] 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("AAARAA0AAAAQAAQAAAARAAwAAAAPAAMAAAASAAwAAAABAAQAAAATAAwAAAAQAAQAAAATAAsAAAAEAAAAAAAUAAkAAAAAAAQAAAAVAAkAAAABAAQAAAAWAAkAAAACAAQAAAAXABEAAAAAAAQAAAAYABEAAAAQAAQAAAAYABAAAAAPAAMAAAAZABAAAAABAAQAAAAaABAAAAABAAQAAAAbABAAAAAQAAQAAAAbAA8AAAAEAAAAAAAbAAwAAAAAAAIAAAAbAAsAAAAAAAAAAAAcAAsAAAABAAAAAAAcAAwAAAABAAIAAAAdAAwAAAACAAIAAAAdAAsAAAAJAAMAAAAeAAsAAAACAAQAAAANAA0AAAAAAAQAAAAOAA0AAAABAAQAAAAPAA0AAAABAAQAAAAQAA0AAAABAAQAAAAKAA8AAAAAAAQAAAALAA8AAAABAAQAAAAMAA8AAAABAAQAAAANAA8AAAAKAAMAAAAOAA8AAAABAAAAAAAPAA8AAAABAAAAAAAQAA8AAAACAAAAAAAQABAAAAACAAEAAAAPABAAAAAGAAAAAAAOABAAAAAGAAAAAAANABAAAAAJAAEAAAANABEAAAAAAAIAAAAOABEAAAABAAIAAAAPABEAAAABAAIAAAAQABEAAAAJAAQAAAARABEAAAABAAQAAAASABEAAAAMAAQAAAASABAAAAAEAAAAAAATABEAAAACAAQAAAA=") +tile_map_data = PackedByteArray("AAARAA0AAAAQAAQAAAARAAwAAAAPAAMAAAASAAwAAAABAAQAAAATAAwAAAAQAAQAAAATAAsAAAAEAAAAAAAUAAkAAAAAAAQAAAAVAAkAAAABAAQAAAAWAAkAAAACAAQAAAAXABEAAAAAAAQAAAAYABEAAAAQAAQAAAAYABAAAAAPAAMAAAAZABAAAAABAAQAAAAaABAAAAABAAQAAAAbABAAAAAQAAQAAAAbAA8AAAAEAAAAAAAbAAwAAAAAAAIAAAAbAAsAAAAAAAAAAAAcAAsAAAABAAAAAAAcAAwAAAABAAIAAAAdAAwAAAACAAIAAAAdAAsAAAAJAAMAAAAeAAsAAAACAAQAAAANAA0AAAAAAAQAAAAOAA0AAAABAAQAAAAPAA0AAAABAAQAAAAQAA0AAAABAAQAAAAKAA8AAAAAAAQAAAALAA8AAAABAAQAAAAMAA8AAAABAAQAAAANAA8AAAAKAAMAAAAOAA8AAAABAAAAAAAPAA8AAAABAAAAAAAQAA8AAAACAAAAAAAQABAAAAACAAEAAAAPABAAAAAGAAAAAAAOABAAAAAGAAAAAAANABAAAAAJAAEAAAANABEAAAAAAAIAAAAOABEAAAABAAIAAAAPABEAAAABAAIAAAAQABEAAAAJAAQAAAARABEAAAABAAQAAAASABEAAAAMAAQAAAASABAAAAAEAAAAAAATABEAAAACAAQAAAAbAA4AAgAAAAAAAAAbAAoAAQAAAAEAAAAbAAkAAQAAAAAAAAAKAA4AAQAAAAEAAAAKAA0AAQAAAAAAAAALAA4AAgAAAAAAAAAVAAgAAgAAAAAAAAA=") tile_set = SubResource("TileSet_gee14") [node name="SceneManager" type="Node2D" parent="." unique_id=323246552] diff --git a/scenes/player.tscn b/scenes/player.tscn index bd4b9ea..124bb62 100644 --- a/scenes/player.tscn +++ b/scenes/player.tscn @@ -246,4 +246,7 @@ 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"]