diff --git a/2d/physics_platformer/README.md b/2d/physics_platformer/README.md index c45c8f36..35edf2ae 100644 --- a/2d/physics_platformer/README.md +++ b/2d/physics_platformer/README.md @@ -1,15 +1,15 @@ # Physics Platformer -This demo uses [`RigidDynamicBody2D`](https://docs.godotengine.org/en/latest/classes/class_rigiddynamicbody2d.html) +This demo uses [`RigidBody2D`](https://docs.godotengine.org/en/latest/classes/class_rigidbody2d.html) for the player and enemies. These character controllers are more powerful than -[`KinematicBody2D`](https://docs.godotengine.org/en/latest/classes/class_kinematicbody2d.html), +[`CharacterBody2D`](https://docs.godotengine.org/en/latest/classes/class_characterbody2d.html), but can be more difficult to handle, as they require manual modification of the RigidDynamicBody velocity. Language: GDScript -Renderer: GLES 2 +Renderer: Forward Plus Check out this demo on the asset library: https://godotengine.org/asset-library/asset/119 @@ -17,7 +17,7 @@ Check out this demo on the asset library: https://godotengine.org/asset-library/ The player and enemies use dynamic character controllers for movement, made with -[`RigidDynamicBody2D`](https://docs.godotengine.org/en/latest/classes/class_rigiddynamicbody2d.html), +[`RigidBody2D`](https://docs.godotengine.org/en/latest/classes/class_rigidbody2d.html), which means that they can perfectly interact with physics (there is a see-saw, and you can even ride enemies). Because of this, all movement must be done in sync with diff --git a/2d/physics_platformer/Stage.tscn b/2d/physics_platformer/Stage.tscn deleted file mode 100644 index aea04bf1..00000000 --- a/2d/physics_platformer/Stage.tscn +++ /dev/null @@ -1,275 +0,0 @@ -[gd_scene load_steps=22 format=3 uid="uid://dmlw8ugjpukmy"] - -[ext_resource type="TileSet" path="res://Tileset.tres" id="1"] -[ext_resource type="PackedScene" path="res://coin/Coin.tscn" id="2"] -[ext_resource type="PackedScene" path="res://platform/MovingPlatform.tscn" id="3"] -[ext_resource type="PackedScene" path="res://background/Seesaw.tscn" id="4"] -[ext_resource type="PackedScene" path="res://platform/OneWayPlatform.tscn" id="5"] -[ext_resource type="PackedScene" uid="uid://bv85r3nk410cj" path="res://player/Player.tscn" id="6"] -[ext_resource type="PackedScene" path="res://enemy/Enemy.tscn" id="7"] -[ext_resource type="PackedScene" path="res://background/ParallaxBg.tscn" id="8"] -[ext_resource type="AudioStream" uid="uid://gunv00cij80t" path="res://audio/music.ogg" id="9"] - -[sub_resource type="PhysicsMaterial" id="1"] -friction = 0.0 - -[sub_resource type="PhysicsMaterial" id="2"] - -[sub_resource type="PhysicsMaterial" id="3"] -friction = 0.0 - -[sub_resource type="PhysicsMaterial" id="4"] -friction = 0.0 - -[sub_resource type="PhysicsMaterial" id="5"] -friction = 0.0 - -[sub_resource type="PhysicsMaterial" id="6"] - -[sub_resource type="PhysicsMaterial" id="7"] -friction = 0.0 - -[sub_resource type="PhysicsMaterial" id="8"] -friction = 0.0 - -[sub_resource type="PhysicsMaterial" id="9"] -friction = 0.0 - -[sub_resource type="PhysicsMaterial" id="10"] -friction = 0.0 - -[sub_resource type="PhysicsMaterial" id="11"] -friction = 0.0 - -[sub_resource type="PhysicsMaterial" id="12"] -friction = 0.0 - -[node name="Stage" type="Node2D"] - -[node name="TileMap" type="TileMap" parent="."] -tile_set = ExtResource("1") -cell_quadrant_size = 4 -format = 2 -layer_0/tile_data = PackedInt32Array(0, 2, 0, 70, 2, 65536, 71, 10, 0, 72, 10, 0, 73, 10, 0, 74, 10, 0, 75, 10, 0, 76, 10, 0, 77, 10, 0, 78, 10, 0, 65536, 2, 0, 65606, 2, 65536, 65607, 10, 0, 65608, 10, 0, 65609, 10, 0, 65610, 10, 0, 65611, 10, 0, 65612, 10, 0, 65613, 10, 0, 65614, 10, 0, 131072, 2, 0, 131142, 2, 65536, 131143, 10, 0, 131144, 10, 0, 131145, 10, 0, 131146, 10, 0, 131147, 10, 0, 131148, 10, 0, 131149, 10, 0, 131150, 10, 0, 196608, 2, 0, 196626, 9, 0, 196678, 2, 65536, 196679, 10, 0, 196680, 10, 0, 196681, 10, 0, 196682, 10, 0, 196683, 10, 0, 196684, 10, 0, 196685, 10, 0, 196686, 10, 0, 262144, 2, 0, 262162, 8, 0, 262214, 2, 65536, 262215, 10, 0, 262216, 10, 0, 262217, 10, 0, 262218, 10, 0, 262219, 10, 0, 262220, 10, 0, 262221, 10, 0, 262222, 10, 0, 327680, 2, 0, 327697, 9, 65536, 327698, 7, 0, 327733, 9, 0, 327750, 2, 65536, 327751, 10, 0, 327752, 10, 0, 327753, 10, 0, 327754, 10, 0, 327755, 10, 0, 327756, 10, 0, 327757, 10, 0, 327758, 10, 0, 393216, 2, 0, 393233, 8, 65536, 393234, 7, 0, 393257, 9, 0, 393269, 7, 0, 393286, 2, 65536, 393287, 10, 0, 393288, 10, 0, 393289, 10, 0, 393290, 10, 0, 393291, 10, 0, 393292, 10, 0, 393293, 10, 0, 393294, 10, 0, 458752, 2, 0, 458769, 7, 0, 458770, 8, 0, 458790, 9, 0, 458793, 8, 0, 458805, 8, 0, 458822, 2, 65536, 458823, 10, 0, 458824, 10, 0, 458825, 10, 0, 458826, 10, 0, 458827, 10, 0, 458828, 10, 0, 458829, 10, 0, 458830, 10, 0, 524288, 4, 0, 524289, 1, 0, 524304, 1, 65536, 524305, 6, 65536, 524306, 6, 0, 524307, 5, 0, 524308, 1, 0, 524326, 8, 0, 524329, 7, 0, 524341, 7, 0, 524358, 2, 65536, 524359, 10, 0, 524360, 10, 0, 524361, 10, 0, 524362, 10, 0, 524363, 10, 0, 524364, 10, 0, 524365, 10, 0, 524366, 10, 0, 589824, 10, 0, 589825, 13, 0, 589840, 2, 65536, 589841, 10, 0, 589842, 10, 0, 589843, 10, 0, 589844, 2, 0, 589862, 7, 0, 589865, 7, 0, 589876, 1, 65536, 589877, 6, 0, 589878, 1, 0, 589894, 2, 65536, 589895, 10, 0, 589896, 10, 0, 589897, 10, 0, 589898, 10, 0, 589899, 10, 0, 589900, 10, 0, 589901, 10, 0, 589902, 10, 0, 655360, 2, 0, 655376, 2, 65536, 655377, 10, 0, 655378, 10, 0, 655379, 10, 0, 655380, 2, 0, 655398, 7, 0, 655401, 8, 0, 655412, 13, 65536, 655413, 11, 0, 655414, 13, 0, 655430, 2, 65536, 655431, 10, 0, 655432, 10, 0, 655433, 10, 0, 655434, 10, 0, 655435, 10, 0, 655436, 10, 0, 655437, 10, 0, 655438, 10, 0, 720896, 2, 0, 720912, 2, 65536, 720913, 10, 0, 720914, 10, 0, 720915, 10, 0, 720916, 2, 0, 720934, 8, 0, 720937, 7, 0, 720958, 1, 65536, 720959, 5, 0, 720960, 5, 65536, 720961, 5, 0, 720962, 5, 0, 720963, 5, 65536, 720964, 5, 0, 720965, 0, 0, 720966, 4, 65536, 720967, 10, 0, 720968, 10, 0, 720969, 10, 0, 720970, 10, 0, 720971, 10, 0, 720972, 10, 0, 720973, 10, 0, 720974, 10, 0, 786432, 2, 0, 786437, 9, 0, 786448, 2, 65536, 786449, 10, 0, 786450, 10, 0, 786451, 10, 0, 786452, 2, 0, 786464, 1, 65536, 786465, 1, 0, 786470, 7, 0, 786473, 7, 0, 786474, 12, 65536, 786475, 1, 0, 786494, 2, 65536, 786495, 10, 0, 786496, 10, 0, 786497, 10, 0, 786498, 10, 0, 786499, 10, 0, 786500, 10, 0, 786501, 10, 0, 786502, 10, 0, 786503, 10, 0, 786504, 10, 0, 786505, 10, 0, 786506, 10, 0, 786507, 10, 0, 786508, 10, 0, 786509, 10, 0, 851968, 2, 0, 851973, 7, 0, 851984, 2, 65536, 851985, 10, 0, 851986, 10, 0, 851987, 10, 0, 851988, 2, 0, 851996, 1, 65536, 851997, 1, 0, 852000, 2, 65536, 852001, 3, 0, 852006, 7, 0, 852009, 1, 65536, 852011, 2, 0, 852030, 2, 65536, 852031, 10, 0, 852032, 10, 0, 852033, 10, 0, 852034, 10, 0, 852035, 10, 0, 852036, 10, 0, 852037, 10, 0, 852038, 10, 0, 852039, 10, 0, 852040, 10, 0, 852041, 10, 0, 852042, 10, 0, 852043, 10, 0, 852044, 10, 0, 852045, 10, 0, 917504, 2, 0, 917506, 9, 0, 917509, 7, 0, 917512, 9, 65536, 917520, 13, 65536, 917521, 11, 0, 917522, 11, 0, 917523, 11, 0, 917524, 13, 0, 917532, 13, 65536, 917533, 13, 0, 917536, 2, 65536, 917537, 4, 0, 917538, 1, 0, 917540, 1, 65536, 917541, 0, 0, 917542, 1, 0, 917545, 2, 65536, 917546, 10, 0, 917547, 4, 0, 917548, 1, 0, 917566, 2, 65536, 917567, 10, 0, 917568, 10, 0, 917569, 10, 0, 917570, 10, 0, 917571, 10, 0, 917572, 10, 0, 917573, 10, 0, 917574, 10, 0, 917575, 10, 0, 917576, 10, 0, 917577, 10, 0, 917578, 10, 0, 917579, 10, 0, 917580, 10, 0, 917581, 10, 0, 983040, 2, 0, 983042, 7, 0, 983045, 7, 0, 983048, 8, 65536, 983050, 1, 65536, 983051, 0, 0, 983052, 1, 0, 983064, 1, 65536, 983065, 1, 0, 983072, 2, 65536, 983073, 10, 0, 983074, 4, 0, 983075, 0, 0, 983076, 4, 65536, 983077, 10, 0, 983078, 4, 0, 983079, 0, 65536, 983080, 0, 65536, 983081, 4, 65536, 983082, 10, 0, 983083, 10, 0, 983084, 2, 0, 983095, 9, 0, 983102, 2, 65536, 983103, 10, 0, 983104, 10, 0, 983105, 10, 0, 983106, 10, 0, 983107, 10, 0, 983108, 10, 0, 983109, 10, 0, 983110, 10, 0, 983111, 10, 0, 983112, 10, 0, 983113, 10, 0, 983114, 10, 0, 983115, 10, 0, 983116, 10, 0, 983117, 10, 0, 1048576, 2, 0, 1048578, 8, 0, 1048581, 8, 0, 1048584, 7, 65536, 1048586, 2, 65536, 1048587, 10, 65536, 1048588, 2, 0, 1048600, 13, 65536, 1048601, 13, 0, 1048604, 9, 0, 1048608, 13, 65536, 1048609, 11, 65536, 1048610, 11, 65536, 1048611, 11, 65536, 1048612, 10, 0, 1048613, 10, 0, 1048614, 10, 0, 1048615, 10, 0, 1048616, 10, 0, 1048617, 10, 0, 1048618, 10, 0, 1048619, 10, 0, 1048620, 4, 0, 1048621, 1, 0, 1048630, 9, 65536, 1048631, 8, 0, 1048638, 2, 65536, 1048639, 10, 0, 1048640, 10, 0, 1048641, 10, 0, 1048642, 10, 0, 1048643, 10, 0, 1048644, 10, 0, 1048645, 10, 0, 1048646, 10, 0, 1048647, 10, 0, 1048648, 10, 0, 1048649, 10, 0, 1048650, 10, 0, 1048651, 10, 0, 1048652, 10, 0, 1048653, 10, 0, 1114112, 4, 0, 1114113, 0, 0, 1114114, 6, 0, 1114115, 0, 0, 1114116, 0, 0, 1114117, 6, 0, 1114118, 1, 0, 1114120, 8, 65536, 1114122, 13, 65536, 1114123, 11, 0, 1114124, 13, 0, 1114128, 1, 65536, 1114129, 5, 0, 1114130, 5, 65536, 1114131, 5, 0, 1114132, 0, 0, 1114133, 1, 0, 1114140, 7, 0, 1114141, 9, 65536, 1114148, 2, 65536, 1114149, 10, 0, 1114150, 10, 0, 1114151, 10, 0, 1114152, 10, 0, 1114153, 10, 0, 1114154, 10, 0, 1114155, 10, 0, 1114156, 10, 0, 1114157, 2, 0, 1114166, 8, 65536, 1114167, 8, 0, 1114174, 2, 65536, 1114175, 10, 0, 1114176, 10, 0, 1114177, 10, 0, 1114178, 10, 0, 1114179, 10, 0, 1114180, 10, 0, 1114181, 10, 0, 1114182, 10, 0, 1114183, 10, 0, 1114184, 10, 0, 1114185, 10, 0, 1114186, 10, 0, 1114187, 10, 0, 1114188, 10, 0, 1179648, 10, 0, 1179649, 10, 0, 1179650, 10, 0, 1179651, 10, 0, 1179652, 10, 0, 1179653, 10, 0, 1179654, 2, 0, 1179656, 7, 65536, 1179664, 2, 65536, 1179665, 10, 0, 1179666, 10, 0, 1179667, 10, 0, 1179668, 10, 0, 1179669, 4, 0, 1179670, 12, 0, 1179675, 9, 0, 1179676, 8, 0, 1179677, 8, 0, 1179684, 2, 65536, 1179685, 10, 0, 1179686, 10, 0, 1179687, 10, 0, 1179688, 10, 0, 1179689, 10, 0, 1179690, 10, 0, 1179691, 10, 0, 1179692, 10, 0, 1179693, 4, 0, 1179694, 1, 0, 1179701, 9, 0, 1179702, 7, 65536, 1179703, 7, 0, 1179710, 2, 65536, 1179711, 10, 0, 1179712, 10, 0, 1179713, 10, 0, 1179714, 10, 0, 1179715, 10, 0, 1179716, 10, 0, 1179717, 10, 0, 1179718, 10, 0, 1179719, 10, 0, 1179720, 10, 0, 1179721, 10, 0, 1179722, 10, 0, 1245184, 10, 0, 1245185, 10, 0, 1245186, 10, 0, 1245187, 10, 0, 1245188, 10, 0, 1245189, 10, 0, 1245190, 2, 0, 1245192, 7, 65536, 1245199, 1, 65536, 1245200, 4, 65536, 1245201, 10, 0, 1245202, 10, 0, 1245203, 10, 0, 1245204, 10, 0, 1245205, 10, 0, 1245207, 1, 0, 1245211, 7, 0, 1245212, 7, 0, 1245213, 8, 65536, 1245220, 2, 65536, 1245221, 10, 0, 1245222, 10, 0, 1245223, 10, 0, 1245224, 10, 0, 1245225, 10, 0, 1245226, 10, 0, 1245227, 10, 0, 1245228, 10, 0, 1245229, 10, 0, 1245230, 2, 0, 1245237, 8, 0, 1245238, 7, 65536, 1245239, 8, 0, 1245240, 9, 65536, 1245246, 2, 65536, 1245247, 10, 0, 1245248, 10, 0, 1245249, 10, 0, 1245250, 10, 0, 1245251, 10, 0, 1245252, 10, 0, 1245253, 10, 0, 1245254, 10, 0, 1245255, 10, 0, 1245256, 10, 0, 1245257, 10, 0, 1245258, 10, 0, 1310720, 10, 0, 1310721, 10, 0, 1310722, 10, 0, 1310723, 10, 0, 1310724, 10, 0, 1310725, 10, 0, 1310726, 2, 0, 1310728, 8, 65536, 1310730, 1, 65536, 1310731, 1, 0, 1310734, 1, 65536, 1310735, 4, 65536, 1310736, 10, 0, 1310737, 10, 0, 1310738, 10, 0, 1310739, 10, 0, 1310740, 10, 0, 1310741, 10, 0, 1310742, 10, 0, 1310743, 4, 0, 1310744, 1, 0, 1310747, 8, 0, 1310748, 7, 0, 1310749, 7, 65536, 1310756, 2, 65536, 1310757, 10, 0, 1310758, 10, 0, 1310759, 10, 0, 1310760, 10, 0, 1310761, 10, 0, 1310762, 10, 0, 1310763, 10, 0, 1310764, 10, 0, 1310765, 10, 0, 1310766, 4, 0, 1310767, 5, 0, 1310768, 12, 0, 1310773, 7, 0, 1310774, 7, 65536, 1310775, 7, 0, 1310776, 7, 65536, 1310782, 2, 65536, 1310783, 10, 0, 1310784, 10, 0, 1310785, 10, 0, 1310786, 10, 0, 1310787, 10, 0, 1310788, 10, 0, 1310789, 10, 0, 1310790, 10, 0, 1310791, 10, 0, 1310792, 10, 0, 1310793, 10, 0, 1376256, 10, 0, 1376257, 10, 0, 1376258, 10, 0, 1376259, 10, 0, 1376260, 10, 0, 1376261, 10, 0, 1376262, 4, 0, 1376263, 0, 0, 1376264, 0, 0, 1376265, 0, 0, 1376266, 4, 65536, 1376267, 4, 0, 1376268, 0, 0, 1376269, 0, 0, 1376270, 4, 65536, 1376271, 10, 0, 1376272, 10, 0, 1376273, 10, 0, 1376274, 10, 0, 1376275, 10, 0, 1376276, 10, 0, 1376277, 10, 0, 1376278, 10, 0, 1376279, 10, 0, 1376280, 4, 0, 1376281, 12, 0, 1376283, 8, 0, 1376284, 8, 0, 1376285, 8, 65536, 1376287, 12, 65536, 1376288, 0, 0, 1376289, 5, 0, 1376290, 5, 65536, 1376291, 0, 0, 1376292, 4, 65536, 1376293, 10, 0, 1376294, 10, 0, 1376295, 10, 0, 1376296, 10, 0, 1376297, 10, 0, 1376298, 10, 0, 1376299, 10, 0, 1376300, 10, 0, 1376301, 10, 0, 1376302, 10, 0, 1376303, 10, 0, 1376305, 12, 0, 1376309, 7, 0, 1376310, 8, 65536, 1376311, 7, 0, 1376312, 8, 65536, 1376318, 2, 65536, 1376319, 10, 0, 1376320, 10, 0, 1376321, 10, 0, 1376322, 10, 0, 1376323, 10, 0, 1376324, 10, 0, 1376325, 10, 0, 1376326, 10, 0, 1376327, 10, 0, 1376328, 10, 0, 1441792, 10, 0, 1441793, 10, 0, 1441794, 10, 0, 1441795, 10, 0, 1441796, 10, 0, 1441797, 10, 0, 1441798, 10, 0, 1441799, 10, 0, 1441800, 10, 0, 1441801, 10, 0, 1441802, 10, 0, 1441803, 10, 0, 1441804, 10, 0, 1441805, 10, 0, 1441806, 10, 0, 1441807, 10, 0, 1441808, 10, 0, 1441809, 10, 0, 1441810, 10, 0, 1441811, 10, 0, 1441812, 10, 0, 1441813, 10, 0, 1441814, 10, 0, 1441815, 10, 0, 1441816, 10, 0, 1441818, 0, 0, 1441819, 6, 0, 1441820, 6, 0, 1441821, 6, 65536, 1441822, 5, 0, 1441824, 10, 0, 1441825, 10, 0, 1441826, 10, 0, 1441827, 10, 0, 1441828, 10, 0, 1441829, 10, 0, 1441830, 10, 0, 1441831, 10, 0, 1441832, 10, 0, 1441833, 10, 0, 1441834, 10, 0, 1441835, 10, 0, 1441836, 10, 0, 1441837, 10, 0, 1441838, 10, 0, 1441839, 10, 0, 1441840, 10, 0, 1441842, 0, 0, 1441843, 0, 0, 1441844, 0, 0, 1441845, 6, 0, 1441846, 6, 65536, 1441847, 6, 0, 1441848, 6, 65536, 1441849, 0, 0, 1441850, 5, 0, 1441851, 5, 65536, 1441852, 5, 0, 1441853, 0, 0, 1441854, 4, 65536, 1441855, 10, 0, 1441856, 10, 0, 1441857, 10, 0, 1441858, 10, 0, 1441859, 10, 0, 1441860, 10, 0, 1441861, 10, 0, 1441862, 10, 0, 1441863, 10, 0, 1507328, 10, 0, 1507329, 10, 0, 1507330, 10, 0, 1507331, 10, 0, 1507332, 10, 0, 1507333, 10, 0, 1507334, 10, 0, 1507335, 10, 0, 1507336, 10, 0, 1507337, 10, 0, 1507338, 10, 0, 1507339, 10, 0, 1507340, 10, 0, 1507341, 10, 0, 1507342, 10, 0, 1507343, 10, 0, 1507344, 10, 0, 1507345, 10, 0, 1507346, 10, 0, 1507347, 10, 0, 1507348, 10, 0, 1507349, 10, 0, 1507350, 10, 0, 1507351, 10, 0, 1507352, 10, 0, 1507353, 10, 0, 1507354, 10, 0, 1507355, 10, 0, 1507356, 10, 0, 1507357, 10, 0, 1507358, 10, 0, 1507359, 10, 0, 1507360, 10, 0, 1507361, 10, 0, 1507362, 10, 0, 1507363, 10, 0, 1507364, 10, 0, 1507365, 10, 0, 1507366, 10, 0, 1507367, 10, 0, 1507368, 10, 0, 1507369, 10, 0, 1507370, 10, 0, 1507371, 10, 0, 1507372, 10, 0, 1507373, 10, 0, 1507374, 10, 0, 1507375, 10, 0, 1507376, 10, 0, 1507377, 10, 0, 1507378, 10, 0, 1507379, 10, 0, 1507380, 10, 0, 1507381, 10, 0, 1507382, 10, 0, 1507383, 10, 0, 1507384, 10, 0, 1507385, 10, 0, 1507386, 10, 0, 1507387, 10, 0, 1507388, 10, 0, 1507389, 10, 0, 1507390, 10, 0, 1507391, 10, 0, 1507392, 10, 0, 1507393, 10, 0, 1507394, 10, 0, 1507395, 10, 0, 1507396, 10, 0, 1507397, 10, 0, 1507398, 10, 0, 1507399, 10, 0, 1572864, 10, 0, 1572865, 10, 0, 1572866, 10, 0, 1572867, 10, 0, 1572868, 10, 0, 1572869, 10, 0, 1572870, 10, 0, 1572871, 10, 0, 1572872, 10, 0, 1572873, 10, 0, 1572874, 10, 0, 1572875, 10, 0, 1572876, 10, 0, 1572877, 10, 0, 1572878, 10, 0, 1572879, 10, 0, 1572880, 10, 0, 1572881, 10, 0, 1572882, 10, 0, 1572883, 10, 0, 1572884, 10, 0, 1572885, 10, 0, 1572886, 10, 0, 1572887, 10, 0, 1572888, 10, 0, 1572889, 10, 0, 1572890, 10, 0, 1572891, 10, 0, 1572892, 10, 0, 1572893, 10, 0, 1572894, 10, 0, 1572895, 10, 0, 1572896, 10, 0, 1572897, 10, 0, 1572898, 10, 0, 1572899, 10, 0, 1572900, 10, 0, 1572901, 10, 0, 1572902, 10, 0, 1572903, 10, 0, 1572904, 10, 0, 1572905, 10, 0, 1572906, 10, 0, 1572907, 10, 0, 1572908, 10, 0, 1572909, 10, 0, 1572910, 10, 0, 1572911, 10, 0, 1572912, 10, 0, 1572913, 10, 0, 1572914, 10, 0, 1572915, 10, 0, 1572916, 10, 0, 1572917, 10, 0, 1572918, 10, 0, 1572919, 10, 0, 1572920, 10, 0, 1572921, 10, 0, 1572922, 10, 0, 1572923, 10, 0, 1572924, 10, 0, 1572925, 10, 0, 1572926, 10, 0, 1572927, 10, 0, 1572928, 10, 0, 1572929, 10, 0, 1572930, 10, 0, 1572931, 10, 0, 1572932, 10, 0, 1572933, 10, 0, 1572934, 10, 0, 1572935, 10, 0, 1638400, 10, 0, 1638401, 10, 0, 1638402, 10, 0, 1638403, 10, 0, 1638404, 10, 0, 1638405, 10, 0, 1638406, 10, 0, 1638407, 10, 0, 1638408, 10, 0, 1638409, 10, 0, 1638410, 10, 0, 1638411, 10, 0, 1638412, 10, 0, 1638413, 10, 0, 1638414, 10, 0, 1638415, 10, 0, 1638416, 10, 0, 1638417, 10, 0, 1638418, 10, 0, 1638419, 10, 0, 1638420, 10, 0, 1638421, 10, 0, 1638422, 10, 0, 1638423, 10, 0, 1638424, 10, 0, 1638425, 10, 0, 1638426, 10, 0, 1638427, 10, 0, 1638428, 10, 0, 1638429, 10, 0, 1638430, 10, 0, 1638431, 10, 0, 1638432, 10, 0, 1638433, 10, 0, 1638434, 10, 0, 1638435, 10, 0, 1638436, 10, 0, 1638437, 10, 0, 1638438, 10, 0, 1638439, 10, 0, 1638440, 10, 0, 1638441, 10, 0, 1638442, 10, 0, 1638443, 10, 0, 1638444, 10, 0, 1638445, 10, 0, 1638446, 10, 0, 1638447, 10, 0, 1638448, 10, 0, 1638449, 10, 0, 1638450, 10, 0, 1638451, 10, 0, 1638452, 10, 0, 1638453, 10, 0, 1638454, 10, 0, 1638455, 10, 0, 1638456, 10, 0, 1638457, 10, 0, 1638458, 10, 0, 1638459, 10, 0, 1638460, 10, 0, 1638461, 10, 0, 1638462, 10, 0, 1638463, 10, 0, 1638464, 10, 0, 1638465, 10, 0, 1638466, 10, 0, 1638467, 10, 0, 1638468, 10, 0, 1638469, 10, 0, 1638470, 10, 0, 1638471, 10, 0, 1703952, 10, 0, 1703953, 10, 0, 1703954, 10, 0, 1703955, 10, 0, 1703956, 10, 0, 1703957, 10, 0, 1703958, 10, 0, 1703959, 10, 0, 1703960, 10, 0, 1703961, 10, 0, 1703962, 10, 0, 1703963, 10, 0, 1703964, 10, 0, 1703965, 10, 0, 1703966, 10, 0, 1703967, 10, 0, 1703968, 10, 0, 1703969, 10, 0, 1703970, 10, 0, 1703971, 10, 0, 1703972, 10, 0, 1703973, 10, 0, 1703974, 10, 0, 1703975, 10, 0, 1703976, 10, 0, 1703977, 10, 0, 1703978, 10, 0, 1703979, 10, 0, 1703980, 10, 0, 1703981, 10, 0, 1703982, 10, 0, 1703983, 10, 0, 1703984, 10, 0, 1703985, 10, 0, 1703986, 10, 0, 1703987, 10, 0, 1703988, 10, 0, 1703989, 10, 0, 1703990, 10, 0, 1703991, 10, 0, 1703992, 10, 0, 1703993, 10, 0, 1703994, 10, 0, 1703995, 10, 0, 1703996, 10, 0, 1703997, 10, 0, 1703998, 10, 0, 1703999, 10, 0, 1704000, 10, 0, 1704001, 10, 0, 1704002, 10, 0, 1704003, 10, 0, 1704004, 10, 0, 1704005, 10, 0, 1704006, 10, 0, 1704007, 10, 0, 1769488, 10, 0, 1769489, 10, 0, 1769490, 10, 0, 1769491, 10, 0, 1769492, 10, 0, 1769493, 10, 0, 1769494, 10, 0, 1769495, 10, 0, 1769496, 10, 0, 1769497, 10, 0, 1769498, 10, 0, 1769499, 10, 0, 1769500, 10, 0, 1769501, 10, 0, 1769502, 10, 0, 1769503, 10, 0, 1769504, 10, 0, 1769505, 10, 0, 1769506, 10, 0, 1769507, 10, 0, 1769508, 10, 0, 1769509, 10, 0, 1769510, 10, 0, 1769511, 10, 0, 1769512, 10, 0, 1769513, 10, 0, 1769514, 10, 0, 1769515, 10, 0, 1769516, 10, 0, 1769517, 10, 0, 1769518, 10, 0, 1769519, 10, 0, 1769520, 10, 0, 1769521, 10, 0, 1769522, 10, 0, 1769523, 10, 0, 1769524, 10, 0, 1769525, 10, 0, 1769526, 10, 0, 1769527, 10, 0, 1769528, 10, 0, 1769529, 10, 0, 1769530, 10, 0, 1769531, 10, 0, 1769532, 10, 0, 1769533, 10, 0, 1769534, 10, 0, 1769535, 10, 0, 1769536, 10, 0, 1769537, 10, 0, 1769538, 10, 0, 1769539, 10, 0, 1769540, 10, 0, 1769541, 10, 0) - -[node name="Coins" type="Node2D" parent="."] - -[node name="Coin" parent="Coins" instance=ExtResource("2")] -position = Vector2(336, 589.5) - -[node name="Coin2" parent="Coins" instance=ExtResource("2")] -position = Vector2(352, 589.5) - -[node name="Coin3" parent="Coins" instance=ExtResource("2")] -position = Vector2(368, 589.5) - -[node name="Coin4" parent="Coins" instance=ExtResource("2")] -position = Vector2(560, 496) - -[node name="Coin5" parent="Coins" instance=ExtResource("2")] -position = Vector2(576, 496) - -[node name="Coin6" parent="Coins" instance=ExtResource("2")] -position = Vector2(592, 496) - -[node name="Coin7" parent="Coins" instance=ExtResource("2")] -position = Vector2(608, 496) - -[node name="Coin8" parent="Coins" instance=ExtResource("2")] -position = Vector2(624, 496) - -[node name="Coin9" parent="Coins" instance=ExtResource("2")] -position = Vector2(784, 432) - -[node name="Coin10" parent="Coins" instance=ExtResource("2")] -position = Vector2(816, 432) - -[node name="Coin11" parent="Coins" instance=ExtResource("2")] -position = Vector2(912, 384) - -[node name="Coin12" parent="Coins" instance=ExtResource("2")] -position = Vector2(944, 384) - -[node name="Coin13" parent="Coins" instance=ExtResource("2")] -position = Vector2(1040, 336) - -[node name="Coin14" parent="Coins" instance=ExtResource("2")] -position = Vector2(1072, 336) - -[node name="Coin15" parent="Coins" instance=ExtResource("2")] -position = Vector2(896, 624) - -[node name="Coin16" parent="Coins" instance=ExtResource("2")] -position = Vector2(928, 624) - -[node name="Coin17" parent="Coins" instance=ExtResource("2")] -position = Vector2(960, 624) - -[node name="Coin18" parent="Coins" instance=ExtResource("2")] -position = Vector2(960, 592) - -[node name="Coin19" parent="Coins" instance=ExtResource("2")] -position = Vector2(928, 592) - -[node name="Coin20" parent="Coins" instance=ExtResource("2")] -position = Vector2(896, 592) - -[node name="Coin21" parent="Coins" instance=ExtResource("2")] -position = Vector2(49.4434, 244.258) - -[node name="Coin22" parent="Coins" instance=ExtResource("2")] -position = Vector2(44.7994, 240.609) - -[node name="Coin23" parent="Coins" instance=ExtResource("2")] -position = Vector2(54.0875, 240.609) - -[node name="Coin24" parent="Coins" instance=ExtResource("2")] -position = Vector2(58.068, 234.969) - -[node name="Coin25" parent="Coins" instance=ExtResource("2")] -position = Vector2(58.7315, 228.999) - -[node name="Coin26" parent="Coins" instance=ExtResource("2")] -position = Vector2(53.092, 224.686) - -[node name="Coin27" parent="Coins" instance=ExtResource("2")] -position = Vector2(49.1117, 229.331) - -[node name="Coin28" parent="Coins" instance=ExtResource("2")] -position = Vector2(44.136, 224.355) - -[node name="Coin29" parent="Coins" instance=ExtResource("2")] -position = Vector2(39.8238, 228.667) - -[node name="Coin30" parent="Coins" instance=ExtResource("2")] -position = Vector2(41.4823, 234.306) - -[node name="Coin31" parent="Coins" instance=ExtResource("2")] -position = Vector2(1678.71, 232.644) - -[node name="Coin32" parent="Coins" instance=ExtResource("2")] -position = Vector2(1710.71, 232.644) - -[node name="Coin33" parent="Coins" instance=ExtResource("2")] -position = Vector2(1742.71, 232.644) - -[node name="Coin34" parent="Coins" instance=ExtResource("2")] -position = Vector2(1742.71, 200.644) - -[node name="Coin35" parent="Coins" instance=ExtResource("2")] -position = Vector2(1710.71, 200.644) - -[node name="Coin36" parent="Coins" instance=ExtResource("2")] -position = Vector2(1678.71, 200.644) - -[node name="Coin37" parent="Coins" instance=ExtResource("2")] -position = Vector2(2086.38, 302.529) - -[node name="Coin38" parent="Coins" instance=ExtResource("2")] -position = Vector2(2118.38, 302.529) - -[node name="Coin39" parent="Coins" instance=ExtResource("2")] -position = Vector2(2150.38, 302.529) - -[node name="Coin40" parent="Coins" instance=ExtResource("2")] -position = Vector2(2150.38, 270.529) - -[node name="Coin41" parent="Coins" instance=ExtResource("2")] -position = Vector2(2118.38, 270.529) - -[node name="Coin42" parent="Coins" instance=ExtResource("2")] -position = Vector2(2086.38, 270.529) - -[node name="Props" type="Node2D" parent="."] - -[node name="MovingPlatform" parent="Props" instance=ExtResource("3")] -position = Vector2(725.93, 371.484) -motion = Vector2(0, 70) -cycle = 5.0 - -[node name="MovingPlatform 2" parent="Props" instance=ExtResource("3")] -position = Vector2(312.412, 272.772) -motion = Vector2(150, 0) -cycle = 10.0 - -[node name="MovingPlatform 3" parent="Props" instance=ExtResource("3")] -position = Vector2(1709.93, 369.831) -motion = Vector2(225, 0) -cycle = 10.0 - -[node name="Seesaw" parent="Props" instance=ExtResource("4")] -position = Vector2(1201.4, 424.76) - -[node name="OneWayPlatform" parent="Props" instance=ExtResource("5")] -position = Vector2(463.849, 560.405) - -[node name="Player" parent="." instance=ExtResource("6")] -position = Vector2(125.842, 522.8) -physics_material_override = SubResource("1") - -[node name="Enemies" type="Node2D" parent="."] - -[node name="Enemy1" parent="Enemies" instance=ExtResource("7")] -position = Vector2(417.332, 654.8) -physics_material_override = SubResource("2") - -[node name="Enemy2" parent="Enemies" instance=ExtResource("7")] -position = Vector2(353.832, 612.525) -physics_material_override = SubResource("3") - -[node name="Enemy3" parent="Enemies" instance=ExtResource("7")] -position = Vector2(562.605, 526.53) -physics_material_override = SubResource("4") - -[node name="Enemy4" parent="Enemies" instance=ExtResource("7")] -position = Vector2(646.055, 529.62) -physics_material_override = SubResource("5") - -[node name="Enemy5" parent="Enemies" instance=ExtResource("7")] -position = Vector2(803.69, 461.62) -physics_material_override = SubResource("6") - -[node name="Enemy6" parent="Enemies" instance=ExtResource("7")] -position = Vector2(1293.45, 469.53) -physics_material_override = SubResource("7") - -[node name="Enemy7" parent="Enemies" instance=ExtResource("7")] -position = Vector2(728.8, 344.371) -physics_material_override = SubResource("8") - -[node name="Enemy8" parent="Enemies" instance=ExtResource("7")] -position = Vector2(596.815, 230.191) -physics_material_override = SubResource("9") - -[node name="Enemy9" parent="Enemies" instance=ExtResource("7")] -position = Vector2(1714.86, 270.432) -physics_material_override = SubResource("10") - -[node name="Enemy10" parent="Enemies" instance=ExtResource("7")] -position = Vector2(1773.1, 678.095) -physics_material_override = SubResource("11") - -[node name="Enemy11" parent="Enemies" instance=ExtResource("7")] -position = Vector2(1203.31, 407.557) -physics_material_override = SubResource("12") - -[node name="ParallaxBg" parent="." instance=ExtResource("8")] - -[node name="Label" type="Label" parent="."] -offset_left = 12.0 -offset_top = -202.0 -offset_right = 358.0 -offset_bottom = -10.0 -size_flags_horizontal = 2 -size_flags_vertical = 0 -text = "This is a simple demo on how to make a platformer game with Godot. -This version uses physics and the 2D physics engine for motion and collision. -The demo also shows the benefits of using the scene system, where coins, -enemies and the player are edited separatedly and instanced in the stage. - -To edit the base tiles for the tileset, open the tileset_edit.tscn file and follow -instructions." - -[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] -stream = ExtResource("9") -autoplay = true diff --git a/2d/physics_platformer/Tileset.tres b/2d/physics_platformer/Tileset.tres deleted file mode 100644 index ccebab30..00000000 --- a/2d/physics_platformer/Tileset.tres +++ /dev/null @@ -1,349 +0,0 @@ -[gd_resource type="TileSet" load_steps=14 format=2] - -[ext_resource path="res://tiles_demo.png" type="Texture2D" id=1] - -[sub_resource type="ConvexPolygonShape2D" id=1] -points = PackedVector2Array( -16, -12, 16, -12, 16, 16, -16, 16 ) - -[sub_resource type="ConvexPolygonShape2D" id=2] -points = PackedVector2Array( -16, 16, -16, -12, 12, -12, 12, 16 ) - -[sub_resource type="ConvexPolygonShape2D" id=3] -points = PackedVector2Array( -16, -16, 16, -16, 16, 16, -16, 16 ) - -[sub_resource type="ConvexPolygonShape2D" id=4] -points = PackedVector2Array( -16, -28, 16, 4, 16, 32, -16, 32 ) - -[sub_resource type="ConvexPolygonShape2D" id=5] -points = PackedVector2Array( -16, 16, -16, -16, 12, -16, 12, 16 ) - -[sub_resource type="ConvexPolygonShape2D" id=6] -points = PackedVector2Array( -16, -12, 16, -12, 16, 12, -16, 12 ) - -[sub_resource type="ConvexPolygonShape2D" id=7] -points = PackedVector2Array( -16, -12, 12, -12, 12, 12, -16, 12 ) - -[sub_resource type="ConvexPolygonShape2D" id=8] -points = PackedVector2Array( -16, 16, -16, -16, 12, -16, 12, 16 ) - -[sub_resource type="ConvexPolygonShape2D" id=9] -points = PackedVector2Array( -32, 16, -32, -16, -4, -16, -4, 16 ) - -[sub_resource type="ConvexPolygonShape2D" id=10] -points = PackedVector2Array( -16, 16, -16, -16, 12, -16, 16, -12, 16, 16 ) - -[sub_resource type="ConvexPolygonShape2D" id=11] -points = PackedVector2Array( -16, 16, -16, -12, 16, -12, 16, 16 ) - -[sub_resource type="ConvexPolygonShape2D" id=12] -points = PackedVector2Array( -16, 16, -16, -12, 16, -12, 16, 16 ) - -[resource] -0/name = "floor" -0/texture = ExtResource( 1 ) -0/tex_offset = Vector2( 0, 0 ) -0/modulate = Color( 1, 1, 1, 1 ) -0/region = Rect2( 0, 0, 32, 32 ) -0/tile_mode = 0 -0/occluder_offset = Vector2( 16, 16 ) -0/navigation_offset = Vector2( 16, 16 ) -0/shape_offset = Vector2( 16, 16 ) -0/shape_transform = Transform2D( 1, 0, 0, 1, 16, 16 ) -0/shape = SubResource( 1 ) -0/shape_one_way = false -0/shape_one_way_margin = 1.0 -0/shapes = [ { -"autotile_coord": Vector2( 0, 0 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 1 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 16, 16 ) -} ] -0/z_index = 0 -1/name = "edge" -1/texture = ExtResource( 1 ) -1/tex_offset = Vector2( 0, 0 ) -1/modulate = Color( 1, 1, 1, 1 ) -1/region = Rect2( 32, 0, 32, 32 ) -1/tile_mode = 0 -1/occluder_offset = Vector2( 16, 16 ) -1/navigation_offset = Vector2( 16, 16 ) -1/shape_offset = Vector2( 16, 16 ) -1/shape_transform = Transform2D( 1, 0, 0, 1, 16, 16 ) -1/shape = SubResource( 2 ) -1/shape_one_way = false -1/shape_one_way_margin = 1.0 -1/shapes = [ { -"autotile_coord": Vector2( 0, 0 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 2 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 16, 16 ) -} ] -1/z_index = 0 -2/name = "wall" -2/texture = ExtResource( 1 ) -2/tex_offset = Vector2( 0, 0 ) -2/modulate = Color( 1, 1, 1, 1 ) -2/region = Rect2( 32, 32, 32, 32 ) -2/tile_mode = 0 -2/occluder_offset = Vector2( 16, 16 ) -2/navigation_offset = Vector2( 16, 16 ) -2/shape_offset = Vector2( 16, 16 ) -2/shape_transform = Transform2D( 1, 0, 0, 1, 16, 16 ) -2/shape = SubResource( 8 ) -2/shape_one_way = false -2/shape_one_way_margin = 1.0 -2/shapes = [ { -"autotile_coord": Vector2( 0, 0 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 8 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 16, 16 ) -} ] -2/z_index = 0 -3/name = "wall_deco" -3/texture = ExtResource( 1 ) -3/tex_offset = Vector2( 0, 0 ) -3/modulate = Color( 1, 1, 1, 1 ) -3/region = Rect2( 160, 64, 64, 32 ) -3/tile_mode = 0 -3/occluder_offset = Vector2( 32, 16 ) -3/navigation_offset = Vector2( 32, 16 ) -3/shape_offset = Vector2( 32, 16 ) -3/shape_transform = Transform2D( 1, 0, 0, 1, 32, 16 ) -3/shape = SubResource( 9 ) -3/shape_one_way = false -3/shape_one_way_margin = 1.0 -3/shapes = [ { -"autotile_coord": Vector2( 0, 0 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 9 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 32, 16 ) -} ] -3/z_index = 0 -4/name = "corner" -4/texture = ExtResource( 1 ) -4/tex_offset = Vector2( 0, 0 ) -4/modulate = Color( 1, 1, 1, 1 ) -4/region = Rect2( 32, 64, 32, 32 ) -4/tile_mode = 0 -4/occluder_offset = Vector2( 16, 16 ) -4/navigation_offset = Vector2( 16, 16 ) -4/shape_offset = Vector2( 16, 16 ) -4/shape_transform = Transform2D( 1, 0, 0, 1, 16, 16 ) -4/shape = SubResource( 10 ) -4/shape_one_way = false -4/shape_one_way_margin = 1.0 -4/shapes = [ { -"autotile_coord": Vector2( 0, 0 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 10 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 16, 16 ) -} ] -4/z_index = 0 -5/name = "flowers" -5/texture = ExtResource( 1 ) -5/tex_offset = Vector2( 0, 0 ) -5/modulate = Color( 1, 1, 1, 1 ) -5/region = Rect2( 96, 96, 32, 32 ) -5/tile_mode = 0 -5/occluder_offset = Vector2( 16, 16 ) -5/navigation_offset = Vector2( 16, 16 ) -5/shape_offset = Vector2( 16, 16 ) -5/shape_transform = Transform2D( 1, 0, 0, 1, 16, 16 ) -5/shape = SubResource( 11 ) -5/shape_one_way = false -5/shape_one_way_margin = 1.0 -5/shapes = [ { -"autotile_coord": Vector2( 0, 0 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 11 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 16, 16 ) -} ] -5/z_index = 0 -6/name = "tree_base" -6/texture = ExtResource( 1 ) -6/tex_offset = Vector2( 0, 0 ) -6/modulate = Color( 1, 1, 1, 1 ) -6/region = Rect2( 128, 96, 32, 32 ) -6/tile_mode = 0 -6/occluder_offset = Vector2( 16, 16 ) -6/navigation_offset = Vector2( 16, 16 ) -6/shape_offset = Vector2( 16, 16 ) -6/shape_transform = Transform2D( 1, 0, 0, 1, 16, 16 ) -6/shape = SubResource( 12 ) -6/shape_one_way = false -6/shape_one_way_margin = 1.0 -6/shapes = [ { -"autotile_coord": Vector2( 0, 0 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 12 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 16, 16 ) -} ] -6/z_index = 0 -7/name = "tree_mid" -7/texture = ExtResource( 1 ) -7/tex_offset = Vector2( 0, 0 ) -7/modulate = Color( 1, 1, 1, 1 ) -7/region = Rect2( 128, 64, 32, 32 ) -7/tile_mode = 0 -7/occluder_offset = Vector2( 16, 16 ) -7/navigation_offset = Vector2( 16, 16 ) -7/shape_offset = Vector2( 0, 0 ) -7/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -7/shape_one_way = false -7/shape_one_way_margin = 0.0 -7/shapes = [ ] -7/z_index = 0 -8/name = "tree_mid 2" -8/texture = ExtResource( 1 ) -8/tex_offset = Vector2( 0, 0 ) -8/modulate = Color( 1, 1, 1, 1 ) -8/region = Rect2( 128, 32, 32, 32 ) -8/tile_mode = 0 -8/occluder_offset = Vector2( 16, 16 ) -8/navigation_offset = Vector2( 16, 16 ) -8/shape_offset = Vector2( 0, 0 ) -8/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -8/shape_one_way = false -8/shape_one_way_margin = 0.0 -8/shapes = [ ] -8/z_index = 0 -9/name = "tree_top" -9/texture = ExtResource( 1 ) -9/tex_offset = Vector2( 0, 0 ) -9/modulate = Color( 1, 1, 1, 1 ) -9/region = Rect2( 128, 0, 32, 32 ) -9/tile_mode = 0 -9/occluder_offset = Vector2( 16, 16 ) -9/navigation_offset = Vector2( 16, 16 ) -9/shape_offset = Vector2( 0, 0 ) -9/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -9/shape_one_way = false -9/shape_one_way_margin = 0.0 -9/shapes = [ ] -9/z_index = 0 -10/name = "solid" -10/texture = ExtResource( 1 ) -10/tex_offset = Vector2( 0, 0 ) -10/modulate = Color( 1, 1, 1, 1 ) -10/region = Rect2( 0, 32, 32, 32 ) -10/tile_mode = 0 -10/occluder_offset = Vector2( 16, 16 ) -10/navigation_offset = Vector2( 16, 16 ) -10/shape_offset = Vector2( 0, 0 ) -10/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -10/shape_one_way = false -10/shape_one_way_margin = 0.0 -10/shapes = [ ] -10/z_index = 0 -11/name = "ceiling" -11/texture = ExtResource( 1 ) -11/tex_offset = Vector2( 0, 0 ) -11/modulate = Color( 1, 1, 1, 1 ) -11/region = Rect2( 192, 32, 32, 32 ) -11/tile_mode = 0 -11/occluder_offset = Vector2( 16, 16 ) -11/navigation_offset = Vector2( 16, 16 ) -11/shape_offset = Vector2( 16, 16 ) -11/shape_transform = Transform2D( 1, 0, 0, 1, 16, 16 ) -11/shape = SubResource( 3 ) -11/shape_one_way = false -11/shape_one_way_margin = 1.0 -11/shapes = [ { -"autotile_coord": Vector2( 0, 0 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 3 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 16, 16 ) -} ] -11/z_index = 0 -12/name = "ramp" -12/texture = ExtResource( 1 ) -12/tex_offset = Vector2( 0, 0 ) -12/modulate = Color( 1, 1, 1, 1 ) -12/region = Rect2( 64, 64, 32, 64 ) -12/tile_mode = 0 -12/occluder_offset = Vector2( 16, 32 ) -12/navigation_offset = Vector2( 16, 32 ) -12/shape_offset = Vector2( 16, 32 ) -12/shape_transform = Transform2D( 1, 0, 0, 1, 16, 32 ) -12/shape = SubResource( 4 ) -12/shape_one_way = false -12/shape_one_way_margin = 1.0 -12/shapes = [ { -"autotile_coord": Vector2( 0, 0 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 4 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 16, 32 ) -} ] -12/z_index = 0 -13/name = "ceiling2wall" -13/texture = ExtResource( 1 ) -13/tex_offset = Vector2( 0, 0 ) -13/modulate = Color( 1, 1, 1, 1 ) -13/region = Rect2( 224, 32, 32, 32 ) -13/tile_mode = 0 -13/occluder_offset = Vector2( 16, 16 ) -13/navigation_offset = Vector2( 16, 16 ) -13/shape_offset = Vector2( 16, 16 ) -13/shape_transform = Transform2D( 1, 0, 0, 1, 16, 16 ) -13/shape = SubResource( 5 ) -13/shape_one_way = false -13/shape_one_way_margin = 1.0 -13/shapes = [ { -"autotile_coord": Vector2( 0, 0 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 5 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 16, 16 ) -} ] -13/z_index = 0 -14/name = "platform_floor" -14/texture = ExtResource( 1 ) -14/tex_offset = Vector2( 0, 0 ) -14/modulate = Color( 1, 1, 1, 1 ) -14/region = Rect2( 64, 0, 32, 32 ) -14/tile_mode = 0 -14/occluder_offset = Vector2( 16, 16 ) -14/navigation_offset = Vector2( 16, 16 ) -14/shape_offset = Vector2( 16, 16 ) -14/shape_transform = Transform2D( 1, 0, 0, 1, 16, 16 ) -14/shape = SubResource( 6 ) -14/shape_one_way = false -14/shape_one_way_margin = 1.0 -14/shapes = [ { -"autotile_coord": Vector2( 0, 0 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 6 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 16, 16 ) -} ] -14/z_index = 0 -15/name = "platform_edge" -15/texture = ExtResource( 1 ) -15/tex_offset = Vector2( 0, 0 ) -15/modulate = Color( 1, 1, 1, 1 ) -15/region = Rect2( 96, 0, 32, 32 ) -15/tile_mode = 0 -15/occluder_offset = Vector2( 16, 16 ) -15/navigation_offset = Vector2( 16, 16 ) -15/shape_offset = Vector2( 16, 16 ) -15/shape_transform = Transform2D( 1, 0, 0, 1, 16, 16 ) -15/shape = SubResource( 7 ) -15/shape_one_way = false -15/shape_one_way_margin = 1.0 -15/shapes = [ { -"autotile_coord": Vector2( 0, 0 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 7 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 16, 16 ) -} ] -15/z_index = 0 diff --git a/2d/physics_platformer/background/Seesaw.tscn b/2d/physics_platformer/background/Seesaw.tscn deleted file mode 100644 index a1b5dc85..00000000 --- a/2d/physics_platformer/background/Seesaw.tscn +++ /dev/null @@ -1,35 +0,0 @@ -[gd_scene load_steps=5 format=2] - -[ext_resource path="res://background/plank.png" type="Texture2D" id=1] -[ext_resource path="res://background/plankpin.png" type="Texture2D" id=2] - -[sub_resource type="RectangleShape2D" id=1] -extents = Vector2(64, 4) - -[sub_resource type="RectangleShape2D" id=2] -extents = Vector2(8, 13.5) - -[node name="Seesaw" type="Node2D"] - -[node name="Plank" type="RigidDynamicBody2D" parent="."] -mass = 5.10204 - -[node name="Sprite2D" type="Sprite2D" parent="Plank"] -texture = ExtResource( 1 ) - -[node name="CollisionShape2D" type="CollisionShape2D" parent="Plank"] -shape = SubResource( 1 ) - -[node name="Pin" type="PinJoint2D" parent="."] -node_a = NodePath("../Plank") -node_b = NodePath("../Pillar") - -[node name="Pillar" type="StaticBody2D" parent="."] - -[node name="Sprite2D" type="Sprite2D" parent="Pillar"] -position = Vector2(0, 10) -texture = ExtResource( 2 ) - -[node name="CollisionShape2D" type="CollisionShape2D" parent="Pillar"] -position = Vector2(0, 12.5) -shape = SubResource( 2 ) diff --git a/2d/physics_platformer/background/ParallaxBg.tscn b/2d/physics_platformer/background/parallax_bg.tscn similarity index 100% rename from 2d/physics_platformer/background/ParallaxBg.tscn rename to 2d/physics_platformer/background/parallax_bg.tscn diff --git a/2d/physics_platformer/background/plank.png.import b/2d/physics_platformer/background/plank.png.import index 4bf28b1d..4a238706 100644 --- a/2d/physics_platformer/background/plank.png.import +++ b/2d/physics_platformer/background/plank.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/plank.png-d70731fc82f225d8353819786c2ed28a.ct [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/background/plankpin.png.import b/2d/physics_platformer/background/plankpin.png.import index e7a8ba39..8cd08118 100644 --- a/2d/physics_platformer/background/plankpin.png.import +++ b/2d/physics_platformer/background/plankpin.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/plankpin.png-68d06cc4b9ab95f9d0142d1a4c768140 [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/background/scroll_bg_cloud_1.png.import b/2d/physics_platformer/background/scroll_bg_cloud_1.png.import index e9ca1367..59bf0524 100644 --- a/2d/physics_platformer/background/scroll_bg_cloud_1.png.import +++ b/2d/physics_platformer/background/scroll_bg_cloud_1.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/scroll_bg_cloud_1.png-19f55c25a7e1985c92542fa [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/background/scroll_bg_cloud_2.png.import b/2d/physics_platformer/background/scroll_bg_cloud_2.png.import index c95a14c4..8c8ae68e 100644 --- a/2d/physics_platformer/background/scroll_bg_cloud_2.png.import +++ b/2d/physics_platformer/background/scroll_bg_cloud_2.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/scroll_bg_cloud_2.png-869806dcc546591f3d754e3 [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/background/scroll_bg_cloud_3.png.import b/2d/physics_platformer/background/scroll_bg_cloud_3.png.import index 93c4431b..d5e10143 100644 --- a/2d/physics_platformer/background/scroll_bg_cloud_3.png.import +++ b/2d/physics_platformer/background/scroll_bg_cloud_3.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/scroll_bg_cloud_3.png-831c6ed9fa8b4070081428a [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/background/scroll_bg_fg_1.png.import b/2d/physics_platformer/background/scroll_bg_fg_1.png.import index c1fc29b7..78ffe66f 100644 --- a/2d/physics_platformer/background/scroll_bg_fg_1.png.import +++ b/2d/physics_platformer/background/scroll_bg_fg_1.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/scroll_bg_fg_1.png-20c90ebded5095c6863cdf6b1b [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/background/scroll_bg_fg_2.png.import b/2d/physics_platformer/background/scroll_bg_fg_2.png.import index 10eb96f5..24b95921 100644 --- a/2d/physics_platformer/background/scroll_bg_fg_2.png.import +++ b/2d/physics_platformer/background/scroll_bg_fg_2.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/scroll_bg_fg_2.png-2b54decd69e8aff2caa33640a3 [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/background/scroll_bg_sky.png.import b/2d/physics_platformer/background/scroll_bg_sky.png.import index 5e8aab39..b8a02100 100644 --- a/2d/physics_platformer/background/scroll_bg_sky.png.import +++ b/2d/physics_platformer/background/scroll_bg_sky.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/scroll_bg_sky.png-377ea542199b2e23d7a822ed940 [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/background/seesaw.tscn b/2d/physics_platformer/background/seesaw.tscn new file mode 100644 index 00000000..2c48f794 --- /dev/null +++ b/2d/physics_platformer/background/seesaw.tscn @@ -0,0 +1,35 @@ +[gd_scene load_steps=5 format=3 uid="uid://rxbjx7rhfd8k"] + +[ext_resource type="Texture2D" uid="uid://c3w6uvr4jjkwa" path="res://background/plank.png" id="1"] +[ext_resource type="Texture2D" uid="uid://ci8y3ieuf3ltc" path="res://background/plankpin.png" id="2"] + +[sub_resource type="RectangleShape2D" id="1"] +size = Vector2(128, 8) + +[sub_resource type="RectangleShape2D" id="2"] +size = Vector2(16, 27) + +[node name="Seesaw" type="Node2D"] + +[node name="Plank" type="RigidBody2D" parent="."] +mass = 5.10204 + +[node name="Sprite2D" type="Sprite2D" parent="Plank"] +texture = ExtResource("1") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Plank"] +shape = SubResource("1") + +[node name="Pin" type="PinJoint2D" parent="."] +node_a = NodePath("../Plank") +node_b = NodePath("../Pillar") + +[node name="Pillar" type="StaticBody2D" parent="."] + +[node name="Sprite2D" type="Sprite2D" parent="Pillar"] +position = Vector2(0, 10) +texture = ExtResource("2") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Pillar"] +position = Vector2(0, 12.5) +shape = SubResource("2") diff --git a/2d/physics_platformer/coin/coin.png.import b/2d/physics_platformer/coin/coin.png.import index 45977d0a..8809e6b0 100644 --- a/2d/physics_platformer/coin/coin.png.import +++ b/2d/physics_platformer/coin/coin.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/coin.png-c9e5c2f51b2a10beb2d794afbbee004f.cte [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/coin/Coin.tscn b/2d/physics_platformer/coin/coin.tscn similarity index 100% rename from 2d/physics_platformer/coin/Coin.tscn rename to 2d/physics_platformer/coin/coin.tscn diff --git a/2d/physics_platformer/enemy/enemy.gd b/2d/physics_platformer/enemy/enemy.gd index 7b6d3086..fd97abbe 100644 --- a/2d/physics_platformer/enemy/enemy.gd +++ b/2d/physics_platformer/enemy/enemy.gd @@ -1,5 +1,5 @@ -class_name Enemy -extends RigidBody2D +class_name Enemy extends RigidBody2D + const WALK_SPEED = 50 @@ -8,40 +8,39 @@ enum State { DYING, } -var state = State.WALKING +var _state := State.WALKING -var direction = -1 -var anim = "" +var direction := -1 +var anim := "" -var Bullet = preload("res://player/bullet.gd") +var Bullet := preload("res://player/bullet.gd") -@onready var rc_left = $RaycastLeft -@onready var rc_right = $RaycastRight +@onready var rc_left := $RaycastLeft as RayCast2D +@onready var rc_right := $RaycastRight as RayCast2D -func _integrate_forces(s): - var lv = s.get_linear_velocity() - var new_anim = anim - if state == State.DYING: +func _integrate_forces(state: PhysicsDirectBodyState2D) -> void: + var velocity := state.get_linear_velocity() + var new_anim := anim + + if _state == State.DYING: new_anim = "explode" - elif state == State.WALKING: + elif _state == State.WALKING: new_anim = "walk" - var wall_side = 0.0 + var wall_side := 0.0 - for i in range(s.get_contact_count()): - var cc = s.get_contact_collider_object(i) - var dp = s.get_contact_local_normal(i) + for collider_index in state.get_contact_count(): + var collider := state.get_contact_collider_object(collider_index) + var collision_normal := state.get_contact_local_normal(collider_index) - if cc: - if cc is Bullet and not cc.disabled: - # enqueue call - call_deferred("_bullet_collider", cc, s, dp) - break + if collider is Bullet and not (collider as Bullet).disabled: + _bullet_collider.call_deferred(collider, state, collision_normal) + break - if dp.x > 0.9: + if collision_normal.x > 0.9: wall_side = 1.0 - elif dp.x < -0.9: + elif collision_normal.x < -0.9: wall_side = -1.0 if wall_side != 0 and wall_side != direction: @@ -54,35 +53,36 @@ func _integrate_forces(s): direction = -direction ($Sprite2D as Sprite2D).scale.x = -direction - lv.x = direction * WALK_SPEED + velocity.x = direction * WALK_SPEED if anim != new_anim: anim = new_anim ($AnimationPlayer as AnimationPlayer).play(anim) - s.set_linear_velocity(lv) + state.set_linear_velocity(velocity) -func _die(): +func _die() -> void: queue_free() -func _pre_explode(): +func _pre_explode() -> void: #make sure nothing collides against this $Shape1.queue_free() $Shape2.queue_free() $Shape3.queue_free() - # Stay there - #mode = MODE_STATIC ($SoundExplode as AudioStreamPlayer2D).play() -func _bullet_collider(cc, s, dp): - #mode = MODE_RIGID - state = State.DYING +func _bullet_collider( + collider: Bullet, + state: PhysicsDirectBodyState2D, + collision_normal: Vector2 +) -> void: + _state = State.DYING - s.set_angular_velocity(sign(dp.x) * 33.0) + state.set_angular_velocity(signf(collision_normal.x) * 33.0) physics_material_override.friction = 1 - cc.disable() + collider.disable() ($SoundHit as AudioStreamPlayer2D).play() diff --git a/2d/physics_platformer/enemy/enemy.png.import b/2d/physics_platformer/enemy/enemy.png.import index 438ebb72..102cacd1 100644 --- a/2d/physics_platformer/enemy/enemy.png.import +++ b/2d/physics_platformer/enemy/enemy.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/enemy.png-1891d9038eeed672a2459bc4e7db5910.ct [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/enemy/Enemy.tscn b/2d/physics_platformer/enemy/enemy.tscn similarity index 56% rename from 2d/physics_platformer/enemy/Enemy.tscn rename to 2d/physics_platformer/enemy/enemy.tscn index 62e1d618..d90b1a65 100644 --- a/2d/physics_platformer/enemy/Enemy.tscn +++ b/2d/physics_platformer/enemy/enemy.tscn @@ -1,22 +1,22 @@ -[gd_scene load_steps=12 format=2] +[gd_scene load_steps=14 format=3 uid="uid://daqqtote00syu"] -[ext_resource path="res://enemy/enemy.gd" type="Script" id=1] -[ext_resource path="res://enemy/enemy.png" type="Texture2D" id=2] -[ext_resource path="res://player/bullet.png" type="Texture2D" id=3] -[ext_resource path="res://audio/sound_hit.wav" type="AudioStream" id=4] -[ext_resource path="res://audio/sound_explode.wav" type="AudioStream" id=5] +[ext_resource type="Script" path="res://enemy/enemy.gd" id="1_hjwkx"] +[ext_resource type="Texture2D" uid="uid://crrmmbu8k46tl" path="res://enemy/enemy.png" id="2_org2d"] +[ext_resource type="Texture2D" uid="uid://7sv64orewgmb" path="res://player/bullet.png" id="3_7unrb"] +[ext_resource type="AudioStream" uid="uid://cfssio7r2t7wq" path="res://audio/sound_hit.wav" id="4_5rkwm"] +[ext_resource type="AudioStream" uid="uid://bulmr2lpb7y4h" path="res://audio/sound_explode.wav" id="5_t2e2f"] -[sub_resource type="PhysicsMaterial" id=1] +[sub_resource type="PhysicsMaterial" id="1"] -[sub_resource type="Animation" id=2] +[sub_resource type="Animation" id="2"] length = 6.0 step = 0.0 tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true tracks/0/path = NodePath("Sprite2D:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), @@ -24,11 +24,11 @@ tracks/0/keys = { "values": [4] } tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true tracks/1/path = NodePath("Explosion:emitting") tracks/1/interp = 1 tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true tracks/1/keys = { "times": PackedFloat32Array(1), "transitions": PackedFloat32Array(1), @@ -36,28 +36,28 @@ tracks/1/keys = { "values": [true] } tracks/2/type = "method" +tracks/2/imported = false +tracks/2/enabled = true tracks/2/path = NodePath(".") tracks/2/interp = 1 tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true tracks/2/keys = { -"times": PackedFloat32Array(0.8, 2), +"times": PackedFloat32Array(1.04, 2), "transitions": PackedFloat32Array(1, 1), "values": [{ "args": [], -"method": "_pre_explode" +"method": &"_pre_explode" }, { "args": [], -"method": "_die" +"method": &"_die" }] } tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true tracks/3/path = NodePath("Sprite2D:self_modulate") tracks/3/interp = 1 tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true tracks/3/keys = { "times": PackedFloat32Array(0.5, 1.1), "transitions": PackedFloat32Array(1, 1), @@ -65,16 +65,16 @@ tracks/3/keys = { "values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)] } -[sub_resource type="Animation" id=3] +[sub_resource type="Animation" id="3"] length = 6.75 -loop = true +loop_mode = 1 step = 0.25 tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true tracks/0/path = NodePath("Sprite2D:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.75, 1.5, 2.25, 3, 3.75, 4.5, 5.25, 6, 6.75), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), @@ -82,16 +82,16 @@ tracks/0/keys = { "values": [5, 6, 5, 6, 5, 6, 7, 6, 7, 5] } -[sub_resource type="Animation" id=4] +[sub_resource type="Animation" id="4"] length = 1.25 -loop = true +loop_mode = 1 step = 0.25 tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true tracks/0/path = NodePath("Sprite2D:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1, 1.25), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), @@ -99,55 +99,85 @@ tracks/0/keys = { "values": [0, 1, 2, 3, 4, 0] } -[sub_resource type="CircleShape2D" id=5] +[sub_resource type="Animation" id="Animation_a7qal"] +resource_name = "RESET" +length = 0.01 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:self_modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_ay0tp"] +_data = { +"RESET": SubResource("Animation_a7qal"), +"explode": SubResource("2"), +"idle": SubResource("3"), +"walk": SubResource("4") +} + +[sub_resource type="CircleShape2D" id="5"] radius = 7.0 -[sub_resource type="Gradient" id=6] +[sub_resource type="Gradient" id="6"] offsets = PackedFloat32Array(0.5, 1) colors = PackedColorArray(1, 1, 1, 0.501961, 0, 0, 0, 0) -[node name="Enemy" type="RigidDynamicBody2D"] -mode = 2 -physics_material_override = SubResource( 1 ) -contacts_reported = 4 -script = ExtResource( 1 ) - -[node name="Enabler" type="VisibleOnScreenEnabler2D" parent="."] -position = Vector2(8.12845, 5.5017) -scale = Vector2(11.7528, 5.43145) -pause_particles = false +[node name="Enemy" type="RigidBody2D"] +physics_material_override = SubResource("1") +max_contacts_reported = 4 +contact_monitor = true +lock_rotation = true +script = ExtResource("1_hjwkx") [node name="AnimationPlayer" type="AnimationPlayer" parent="."] -anims/explode = SubResource( 2 ) -anims/idle = SubResource( 3 ) -anims/walk = SubResource( 4 ) +libraries = { +"": SubResource("AnimationLibrary_ay0tp") +} + +[node name="VisibleOnScreenEnabler2D" type="VisibleOnScreenEnabler2D" parent="."] +rect = Rect2(-150, -100, 300, 200) [node name="Sprite2D" type="Sprite2D" parent="."] -texture = ExtResource( 2 ) +texture = ExtResource("2_org2d") hframes = 8 -frame = 4 [node name="Shape1" type="CollisionShape2D" parent="."] position = Vector2(-0.54036, -1.08072) -shape = SubResource( 5 ) +shape = SubResource("5") [node name="Shape2" type="CollisionShape2D" parent="."] position = Vector2(3.24216, 1.62108) -shape = SubResource( 5 ) +shape = SubResource("5") [node name="Shape3" type="CollisionShape2D" parent="."] position = Vector2(-6.2475, 1.76707) -shape = SubResource( 5 ) +shape = SubResource("5") [node name="RaycastLeft" type="RayCast2D" parent="."] position = Vector2(-14, -4.672) -enabled = true -cast_to = Vector2(0, 22.5) [node name="RaycastRight" type="RayCast2D" parent="."] position = Vector2(11, -4.672) -enabled = true -cast_to = Vector2(0, 22.5) [node name="Explosion" type="CPUParticles2D" parent="."] modulate = Color(1, 1, 1, 0.685843) @@ -157,19 +187,15 @@ lifetime = 0.5 one_shot = true speed_scale = 1.2 explosiveness = 0.76 -texture = ExtResource( 3 ) +texture = ExtResource("3_7unrb") emission_shape = 1 emission_sphere_radius = 8.0 spread = 180.0 gravity = Vector2(0, 0) -initial_velocity = 120.0 -initial_velocity_random = 0.5 -angle_random = 1.0 -scale_amount_random = 1.0 -color_ramp = SubResource( 6 ) +color_ramp = SubResource("6") [node name="SoundHit" type="AudioStreamPlayer2D" parent="."] -stream = ExtResource( 4 ) +stream = ExtResource("4_5rkwm") [node name="SoundExplode" type="AudioStreamPlayer2D" parent="."] -stream = ExtResource( 5 ) +stream = ExtResource("5_t2e2f") diff --git a/2d/physics_platformer/icon.png b/2d/physics_platformer/icon.png deleted file mode 100644 index 8f118484..00000000 Binary files a/2d/physics_platformer/icon.png and /dev/null differ diff --git a/2d/physics_platformer/icon.webp b/2d/physics_platformer/icon.webp new file mode 100644 index 00000000..5738e213 Binary files /dev/null and b/2d/physics_platformer/icon.webp differ diff --git a/2d/physics_platformer/icon.png.import b/2d/physics_platformer/icon.webp.import similarity index 67% rename from 2d/physics_platformer/icon.png.import rename to 2d/physics_platformer/icon.webp.import index 2d1827c6..29730c1d 100644 --- a/2d/physics_platformer/icon.png.import +++ b/2d/physics_platformer/icon.webp.import @@ -2,23 +2,23 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dv2hr3igi3roi" -path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex" +uid="uid://upnbycigfu4k" +path="res://.godot/imported/icon.webp-e94f9a68b0f625a567a797079e4d325f.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://icon.png" -dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"] +source_file="res://icon.webp" +dest_files=["res://.godot/imported/icon.webp-e94f9a68b0f625a567a797079e4d325f.ctex"] [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/platform/MovingPlatform.tscn b/2d/physics_platformer/platform/MovingPlatform.tscn deleted file mode 100644 index 1780ac7b..00000000 --- a/2d/physics_platformer/platform/MovingPlatform.tscn +++ /dev/null @@ -1,16 +0,0 @@ -[gd_scene load_steps=3 format=2] - -[ext_resource path="res://platform/moving_platform.gd" type="Script" id=1] -[ext_resource path="res://platform/moving_platform.png" type="Texture2D" id=2] - -[node name="MovingPlatform" type="Node2D"] -script = ExtResource( 1 ) - -[node name="Platform" type="RigidDynamicBody2D" parent="."] -mode = 3 - -[node name="Sprite2D" type="Sprite2D" parent="Platform"] -texture = ExtResource( 2 ) - -[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Platform"] -polygon = PackedVector2Array(-44, -12, 44, -12, 44, 12, -44, 12) diff --git a/2d/physics_platformer/platform/OneWayPlatform.tscn b/2d/physics_platformer/platform/OneWayPlatform.tscn deleted file mode 100644 index 0d6531c3..00000000 --- a/2d/physics_platformer/platform/OneWayPlatform.tscn +++ /dev/null @@ -1,16 +0,0 @@ -[gd_scene load_steps=3 format=2] - -[ext_resource path="res://platform/one_way_platform.png" type="Texture2D" id=1] - -[sub_resource type="RectangleShape2D" id=1] -extents = Vector2(50, 5) - -[node name="OneWayPlatform" type="StaticBody2D"] - -[node name="Sprite2D" type="Sprite2D" parent="."] -texture = ExtResource( 1 ) - -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -position = Vector2(0.73152, -6.5836) -shape = SubResource( 1 ) -one_way_collision = true diff --git a/2d/physics_platformer/platform/moving_platform.gd b/2d/physics_platformer/platform/moving_platform.gd deleted file mode 100644 index 13b5c4fe..00000000 --- a/2d/physics_platformer/platform/moving_platform.gd +++ /dev/null @@ -1,17 +0,0 @@ -class_name MovingPlatform -extends Node2D - -@export var motion = Vector2() -@export var cycle = 1.0 - -var accum = 0.0 - -func _physics_process(delta): - accum += delta * (1.0 / cycle) * TAU - accum = fmod(accum, TAU) - - var d = sin(accum) - var xf = Transform2D() - - xf[2]= motion * d - ($Platform as RigidBody2D).transform = xf diff --git a/2d/physics_platformer/platform/moving_platform.png.import b/2d/physics_platformer/platform/moving_platform.png.import index 42567fbe..9a28b896 100644 --- a/2d/physics_platformer/platform/moving_platform.png.import +++ b/2d/physics_platformer/platform/moving_platform.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/moving_platform.png-7e92061cd93e8b0235df711d3 [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/platform/moving_platform.tscn b/2d/physics_platformer/platform/moving_platform.tscn new file mode 100644 index 00000000..199f2980 --- /dev/null +++ b/2d/physics_platformer/platform/moving_platform.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=2 format=3 uid="uid://dtbrdmojpvetu"] + +[ext_resource type="Texture2D" uid="uid://cde7btbdorp8f" path="res://platform/moving_platform.png" id="2"] + +[node name="MovingPlatform" type="CharacterBody2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2") + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] +polygon = PackedVector2Array(-44, -12, 44, -12, 44, 12, -44, 12) diff --git a/2d/physics_platformer/platform/one_way_platform.png.import b/2d/physics_platformer/platform/one_way_platform.png.import index 74e05f33..88e6b44f 100644 --- a/2d/physics_platformer/platform/one_way_platform.png.import +++ b/2d/physics_platformer/platform/one_way_platform.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/one_way_platform.png-2865772e209813c1636a14ae [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/platform/one_way_platform.tscn b/2d/physics_platformer/platform/one_way_platform.tscn new file mode 100644 index 00000000..94a2ee6f --- /dev/null +++ b/2d/physics_platformer/platform/one_way_platform.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=3 format=3 uid="uid://dkmxopg1dknq8"] + +[ext_resource type="Texture2D" uid="uid://c15sicsdamq2o" path="res://platform/one_way_platform.png" id="1"] + +[sub_resource type="RectangleShape2D" id="1"] +size = Vector2(110, 10) + +[node name="OneWayPlatform" type="StaticBody2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("1") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(0.73152, -6.5836) +shape = SubResource("1") +one_way_collision = true diff --git a/2d/physics_platformer/player/bullet.png.import b/2d/physics_platformer/player/bullet.png.import index b5d1b5d8..504f371b 100644 --- a/2d/physics_platformer/player/bullet.png.import +++ b/2d/physics_platformer/player/bullet.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/bullet.png-5615cb9904aab8db60fe6f48e996475f.c [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/player/Bullet.tscn b/2d/physics_platformer/player/bullet.tscn similarity index 100% rename from 2d/physics_platformer/player/Bullet.tscn rename to 2d/physics_platformer/player/bullet.tscn diff --git a/2d/physics_platformer/player/osb_fire.png.import b/2d/physics_platformer/player/osb_fire.png.import index dc73a597..40e453f8 100644 --- a/2d/physics_platformer/player/osb_fire.png.import +++ b/2d/physics_platformer/player/osb_fire.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/osb_fire.png-67a49910acd764fd7c67429af0ad5cb8 [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/player/osb_jump.png.import b/2d/physics_platformer/player/osb_jump.png.import index e640cb3a..bdc43819 100644 --- a/2d/physics_platformer/player/osb_jump.png.import +++ b/2d/physics_platformer/player/osb_jump.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/osb_jump.png-0d4d2b2d1a7d2c11e3e4fd800b8589ed [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/player/osb_left.png.import b/2d/physics_platformer/player/osb_left.png.import index 541ac512..ea323c6b 100644 --- a/2d/physics_platformer/player/osb_left.png.import +++ b/2d/physics_platformer/player/osb_left.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/osb_left.png-95ec3a371455889d592aa8cae0a755bc [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/player/osb_right.png.import b/2d/physics_platformer/player/osb_right.png.import index 781dcc0c..7ea33fd8 100644 --- a/2d/physics_platformer/player/osb_right.png.import +++ b/2d/physics_platformer/player/osb_right.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/osb_right.png-db9bb4651315f3d42b87bd17a86cce7 [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/player/player.gd b/2d/physics_platformer/player/player.gd index 872d1165..964dd9d9 100644 --- a/2d/physics_platformer/player/player.gd +++ b/2d/physics_platformer/player/player.gd @@ -1,27 +1,5 @@ -class_name Player -extends RigidBody2D +class_name Player extends RigidBody2D -# Character Demo, written by Juan Linietsky. -# -# Implementation of a 2D Character controller. -# This implementation uses the physics engine for -# controlling a character, in a very similar way -# than a 3D character controller would be implemented. -# -# Using the physics engine for this has the main advantages: -# - Easy to write. -# - Interaction with other physics-based objects is free -# - Only have to deal with the object linear velocity, not position -# - All collision/area framework available -# -# But also has the following disadvantages: -# - Objects may bounce a little bit sometimes -# - Going up ramps sends the chracter flying up, small hack is needed. -# - A ray collider is needed to avoid sliding down on ramps and -# undesiderd bumps, small steps and rare numerical precision errors. -# (another alternative may be to turn on friction when the character is not moving). -# - Friction cant be used, so floor velocity must be considered -# for moving platforms. const WALK_ACCEL = 500.0 const WALK_DEACCEL = 500.0 @@ -33,63 +11,64 @@ const STOP_JUMP_FORCE = 450.0 const MAX_SHOOT_POSE_TIME = 0.3 const MAX_FLOOR_AIRBORNE_TIME = 0.15 -var anim = "" -var siding_left = false -var jumping = false -var stopping_jump = false -var shooting = false +var anim := "" +var siding_left := false +var jumping := false +var stopping_jump := false +var shooting := false -var floor_h_velocity = 0.0 +var floor_h_velocity: float = 0.0 -var airborne_time = 1e20 -var shoot_time = 1e20 +var airborne_time: float = 1e20 +var shoot_time: float = 1e20 -var Bullet = preload("res://player/Bullet.tscn") -var Enemy = preload("res://enemy/Enemy.tscn") +var Bullet := preload("res://player/bullet.tscn") +var Enemy := preload("res://enemy/enemy.tscn") -@onready var sound_jump = $SoundJump -@onready var sound_shoot = $SoundShoot -@onready var sprite = $Sprite2D -@onready var sprite_smoke = sprite.get_node(^"Smoke") -@onready var animation_player = $AnimationPlayer -@onready var bullet_shoot = $BulletShoot +@onready var sound_jump := $SoundJump as AudioStreamPlayer2D +@onready var sound_shoot := $SoundShoot as AudioStreamPlayer2D +@onready var sprite := $Sprite2D as Sprite2D +@onready var sprite_smoke := sprite.get_node(^"Smoke") as CPUParticles2D +@onready var animation_player := $AnimationPlayer as AnimationPlayer +@onready var bullet_shoot := $BulletShoot as Marker2D -func _integrate_forces(s): - var lv = s.get_linear_velocity() - var step = s.get_step() - var new_anim = anim - var new_siding_left = siding_left +func _integrate_forces(state: PhysicsDirectBodyState2D) -> void: + var velocity := state.get_linear_velocity() + var step := state.get_step() + + var new_anim := anim + var new_siding_left := siding_left # Get player input. - var move_left = Input.is_action_pressed(&"move_left") - var move_right = Input.is_action_pressed(&"move_right") - var jump = Input.is_action_pressed(&"jump") - var shoot = Input.is_action_pressed(&"shoot") - var spawn = Input.is_action_pressed(&"spawn") + var move_left := Input.is_action_pressed(&"move_left") + var move_right := Input.is_action_pressed(&"move_right") + var jump := Input.is_action_pressed(&"jump") + var shoot := Input.is_action_pressed(&"shoot") + var spawn := Input.is_action_pressed(&"spawn") if spawn: - call_deferred("_spawn_enemy_above") + _spawn_enemy_above.call_deferred() # Deapply prev floor velocity. - lv.x -= floor_h_velocity + velocity.x -= floor_h_velocity floor_h_velocity = 0.0 # Find the floor (a contact with upwards facing collision normal). - var found_floor = false - var floor_index = -1 + var found_floor := false + var floor_index := -1 - for x in range(s.get_contact_count()): - var ci = s.get_contact_local_normal(x) + for contact_index in state.get_contact_count(): + var collision_normal = state.get_contact_local_normal(contact_index) - if ci.dot(Vector2(0, -1)) > 0.6: + if collision_normal.dot(Vector2(0, -1)) > 0.6: found_floor = true - floor_index = x + floor_index = contact_index # A good idea when implementing characters of all kinds, # compensates for physics imprecision, as well as human reaction delay. if shoot and not shooting: - call_deferred("_shot_bullet") + _shot_bullet.call_deferred() else: shoot_time += step @@ -98,49 +77,49 @@ func _integrate_forces(s): else: airborne_time += step # Time it spent in the air. - var on_floor = airborne_time < MAX_FLOOR_AIRBORNE_TIME + var on_floor := airborne_time < MAX_FLOOR_AIRBORNE_TIME # Process jump. if jumping: - if lv.y > 0: + if velocity.y > 0: # Set off the jumping flag if going down. jumping = false elif not jump: stopping_jump = true if stopping_jump: - lv.y += STOP_JUMP_FORCE * step + velocity.y += STOP_JUMP_FORCE * step if on_floor: # Process logic when character is on floor. if move_left and not move_right: - if lv.x > -WALK_MAX_VELOCITY: - lv.x -= WALK_ACCEL * step + if velocity.x > -WALK_MAX_VELOCITY: + velocity.x -= WALK_ACCEL * step elif move_right and not move_left: - if lv.x < WALK_MAX_VELOCITY: - lv.x += WALK_ACCEL * step + if velocity.x < WALK_MAX_VELOCITY: + velocity.x += WALK_ACCEL * step else: - var xv = abs(lv.x) + var xv := absf(velocity.x) xv -= WALK_DEACCEL * step if xv < 0: xv = 0 - lv.x = sign(lv.x) * xv + velocity.x = signf(velocity.x) * xv # Check jump. if not jumping and jump: - lv.y = -JUMP_VELOCITY + velocity.y = -JUMP_VELOCITY jumping = true stopping_jump = false sound_jump.play() # Check siding. - if lv.x < 0 and move_left: + if velocity.x < 0 and move_left: new_siding_left = true - elif lv.x > 0 and move_right: + elif velocity.x > 0 and move_right: new_siding_left = false if jumping: new_anim = "jumping" - elif abs(lv.x) < 0.1: + elif absf(velocity.x) < 0.1: if shoot_time < MAX_SHOOT_POSE_TIME: new_anim = "idle_weapon" else: @@ -153,20 +132,20 @@ func _integrate_forces(s): else: # Process logic when the character is in the air. if move_left and not move_right: - if lv.x > -WALK_MAX_VELOCITY: - lv.x -= AIR_ACCEL * step + if velocity.x > -WALK_MAX_VELOCITY: + velocity.x -= AIR_ACCEL * step elif move_right and not move_left: - if lv.x < WALK_MAX_VELOCITY: - lv.x += AIR_ACCEL * step + if velocity.x < WALK_MAX_VELOCITY: + velocity.x += AIR_ACCEL * step else: - var xv = abs(lv.x) + var xv := absf(velocity.x) xv -= AIR_DEACCEL * step if xv < 0: xv = 0 - lv.x = sign(lv.x) * xv + velocity.x = signf(velocity.x) * xv - if lv.y < 0: + if velocity.y < 0: if shoot_time < MAX_SHOOT_POSE_TIME: new_anim = "jumping_weapon" else: @@ -195,36 +174,35 @@ func _integrate_forces(s): # Apply floor velocity. if found_floor: - floor_h_velocity = s.get_contact_collider_velocity_at_position(floor_index).x - lv.x += floor_h_velocity + floor_h_velocity = state.get_contact_collider_velocity_at_position(floor_index).x + velocity.x += floor_h_velocity # Finally, apply gravity and set back the linear velocity. - lv += s.get_total_gravity() * step - s.set_linear_velocity(lv) + velocity += state.get_total_gravity() * step + state.set_linear_velocity(velocity) -func _shot_bullet(): +func _shot_bullet() -> void: shoot_time = 0 - var bi = Bullet.instantiate() - var ss + var bullet := Bullet.instantiate() as RigidBody2D + var speed_scale: float if siding_left: - ss = -1.0 + speed_scale = -1.0 else: - ss = 1.0 - var pos = position + bullet_shoot.position * Vector2(ss, 1.0) + speed_scale = 1.0 - bi.position = pos - get_parent().add_child(bi) + bullet.position = self.position + bullet_shoot.position * Vector2(speed_scale, 1.0) + get_parent().add_child(bullet) - bi.linear_velocity = Vector2(400.0 * ss, -40) + bullet.linear_velocity = Vector2(400.0 * speed_scale, -40) sprite_smoke.restart() sound_shoot.play() - add_collision_exception_with(bi) # Make bullet and this not collide. + add_collision_exception_with(bullet) # Make bullet and this not collide. -func _spawn_enemy_above(): - var e = Enemy.instantiate() - e.position = position + 50 * Vector2.UP - get_parent().add_child(e) +func _spawn_enemy_above() -> void: + var enemy := Enemy.instantiate() as RigidBody2D + enemy.position = self.position + 50 * Vector2.UP + get_parent().add_child(enemy) diff --git a/2d/physics_platformer/player/Player.tscn b/2d/physics_platformer/player/player.tscn similarity index 96% rename from 2d/physics_platformer/player/Player.tscn rename to 2d/physics_platformer/player/player.tscn index 28a8fd5b..12eb4209 100644 --- a/2d/physics_platformer/player/Player.tscn +++ b/2d/physics_platformer/player/player.tscn @@ -1,7 +1,7 @@ -[gd_scene load_steps=20 format=3 uid="uid://bv85r3nk410cj"] +[gd_scene load_steps=20 format=3 uid="uid://bbxsp4gp554vh"] [ext_resource type="Script" path="res://player/player.gd" id="1"] -[ext_resource type="Texture2D" uid="uid://u5mto8jq4nhu" path="res://player/robot_demo.png" id="2"] +[ext_resource type="Texture2D" uid="uid://dh57uloeigwj6" path="res://player/player.webp" id="2_675nc"] [ext_resource type="Texture2D" uid="uid://7sv64orewgmb" path="res://player/bullet.png" id="3"] [ext_resource type="AudioStream" uid="uid://gw2a4ii0oby2" path="res://audio/sound_shoot.wav" id="8"] [ext_resource type="AudioStream" uid="uid://bpyko2i13mj0v" path="res://audio/sound_jump.wav" id="9"] @@ -194,10 +194,13 @@ length = 18.0 mass = 1.5 physics_material_override = SubResource("1") custom_integrator = true +max_contacts_reported = 4 +contact_monitor = true +lock_rotation = true script = ExtResource("1") [node name="Sprite2D" type="Sprite2D" parent="."] -texture = ExtResource("2") +texture = ExtResource("2_675nc") hframes = 16 vframes = 2 @@ -220,7 +223,6 @@ libraries = { } [node name="Camera2D" type="Camera2D" parent="."] -current = true zoom = Vector2(2, 2) limit_left = 0 limit_top = 0 diff --git a/2d/physics_platformer/player/player.webp b/2d/physics_platformer/player/player.webp new file mode 100644 index 00000000..f5969fde Binary files /dev/null and b/2d/physics_platformer/player/player.webp differ diff --git a/2d/physics_platformer/player/robot_demo.png.import b/2d/physics_platformer/player/player.webp.import similarity index 66% rename from 2d/physics_platformer/player/robot_demo.png.import rename to 2d/physics_platformer/player/player.webp.import index 0419b9b1..c1de4556 100644 --- a/2d/physics_platformer/player/robot_demo.png.import +++ b/2d/physics_platformer/player/player.webp.import @@ -2,23 +2,23 @@ importer="texture" type="CompressedTexture2D" -uid="uid://u5mto8jq4nhu" -path="res://.godot/imported/robot_demo.png-7165a8ae8f36b01883df6b585a93f592.ctex" +uid="uid://dh57uloeigwj6" +path="res://.godot/imported/player.webp-f8efd9c2246a95708b9c4853ed21513e.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://player/robot_demo.png" -dest_files=["res://.godot/imported/robot_demo.png-7165a8ae8f36b01883df6b585a93f592.ctex"] +source_file="res://player/player.webp" +dest_files=["res://.godot/imported/player.webp-f8efd9c2246a95708b9c4853ed21513e.ctex"] [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/player/robot_demo.png b/2d/physics_platformer/player/robot_demo.png deleted file mode 100644 index 914a5efb..00000000 Binary files a/2d/physics_platformer/player/robot_demo.png and /dev/null differ diff --git a/2d/physics_platformer/project.godot b/2d/physics_platformer/project.godot index a5d84956..13417f28 100644 --- a/2d/physics_platformer/project.godot +++ b/2d/physics_platformer/project.godot @@ -8,40 +8,6 @@ config_version=5 -_global_script_classes=[{ -"base": "RigidBody2D", -"class": &"Bullet", -"language": &"GDScript", -"path": "res://player/bullet.gd" -}, { -"base": "Area2D", -"class": &"Coin", -"language": &"GDScript", -"path": "res://coin/coin.gd" -}, { -"base": "RigidBody2D", -"class": &"Enemy", -"language": &"GDScript", -"path": "res://enemy/enemy.gd" -}, { -"base": "Node2D", -"class": &"MovingPlatform", -"language": &"GDScript", -"path": "res://platform/moving_platform.gd" -}, { -"base": "RigidBody2D", -"class": &"Player", -"language": &"GDScript", -"path": "res://player/player.gd" -}] -_global_script_class_icons={ -"Bullet": "", -"Coin": "", -"Enemy": "", -"MovingPlatform": "", -"Player": "" -} - [application] config/name="Physics-Based Platformer 2D" @@ -49,9 +15,9 @@ config/description="This demo uses RigidDynamicBody2D for the player and enemies character controllers are more powerful than CharacterBody2D, but can be more difficult to handle, as they require manual modification of the RigidDynamicBody3D velocity." -run/main_scene="res://Stage.tscn" +run/main_scene="res://stage.tscn" config/features=PackedStringArray("4.0") -config/icon="res://icon.png" +config/icon="res://icon.webp" [debug] @@ -95,39 +61,39 @@ texture={ jump={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777232,"physical_keycode":0,"unicode":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777232,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":87,"physical_keycode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":87,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) ] } move_left={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777231,"physical_keycode":0,"unicode":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777231,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":65,"physical_keycode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":65,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) ] } move_right={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777233,"physical_keycode":0,"unicode":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777233,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":68,"physical_keycode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":68,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) ] } shoot={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"unicode":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":90,"physical_keycode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":90,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":7,"pressure":0.0,"pressed":false,"script":null) , Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"pressed":false,"double_click":false,"script":null) ] } spawn={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777244,"physical_keycode":0,"unicode":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777244,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) ] } diff --git a/2d/physics_platformer/stage.tscn b/2d/physics_platformer/stage.tscn new file mode 100644 index 00000000..b01f771c --- /dev/null +++ b/2d/physics_platformer/stage.tscn @@ -0,0 +1,359 @@ +[gd_scene load_steps=24 format=3 uid="uid://b53muvlsw1tx3"] + +[ext_resource type="TileSet" uid="uid://rowrak7ls50v" path="res://tileset.tres" id="1"] +[ext_resource type="PackedScene" path="res://coin/coin.tscn" id="2"] +[ext_resource type="PackedScene" uid="uid://dtbrdmojpvetu" path="res://platform/moving_platform.tscn" id="3"] +[ext_resource type="PackedScene" uid="uid://rxbjx7rhfd8k" path="res://background/seesaw.tscn" id="4"] +[ext_resource type="PackedScene" uid="uid://dkmxopg1dknq8" path="res://platform/one_way_platform.tscn" id="5"] +[ext_resource type="PackedScene" uid="uid://bbxsp4gp554vh" path="res://player/player.tscn" id="6_fauva"] +[ext_resource type="PackedScene" uid="uid://daqqtote00syu" path="res://enemy/enemy.tscn" id="7"] +[ext_resource type="PackedScene" path="res://background/parallax_bg.tscn" id="8"] +[ext_resource type="AudioStream" uid="uid://gunv00cij80t" path="res://audio/music.ogg" id="9"] + +[sub_resource type="Animation" id="Animation_oxal6"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("MovingPlatform2:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(438, 272)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("MovingPlatform3:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1554, 369)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("MovingPlatform1:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(725, 439)] +} + +[sub_resource type="Animation" id="Animation_vjtqx"] +resource_name = "move" +length = 6.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("MovingPlatform1:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 3), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(725, 439), Vector2(725, 304)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("MovingPlatform2:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 3), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(438, 272), Vector2(137, 272)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("MovingPlatform3:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 3), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(1490, 369), Vector2(1905, 369)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_el48w"] +_data = { +"RESET": SubResource("Animation_oxal6"), +"move": SubResource("Animation_vjtqx") +} + +[sub_resource type="PhysicsMaterial" id="2"] + +[sub_resource type="PhysicsMaterial" id="3"] +friction = 0.0 + +[sub_resource type="PhysicsMaterial" id="4"] +friction = 0.0 + +[sub_resource type="PhysicsMaterial" id="5"] +friction = 0.0 + +[sub_resource type="PhysicsMaterial" id="6"] + +[sub_resource type="PhysicsMaterial" id="7"] +friction = 0.0 + +[sub_resource type="PhysicsMaterial" id="8"] +friction = 0.0 + +[sub_resource type="PhysicsMaterial" id="9"] +friction = 0.0 + +[sub_resource type="PhysicsMaterial" id="10"] +friction = 0.0 + +[sub_resource type="PhysicsMaterial" id="11"] +friction = 0.0 + +[sub_resource type="PhysicsMaterial" id="12"] +friction = 0.0 + +[node name="Stage" type="Node2D"] + +[node name="TileMap" type="TileMap" parent="."] +position = Vector2(2, 0) +tile_set = ExtResource("1") +cell_quadrant_size = 4 +collision_visibility_mode = 1 +format = 2 +layer_0/tile_data = PackedInt32Array(0, 2, 0, 70, 2, 65536, 71, 10, 0, 72, 10, 0, 73, 10, 0, 74, 10, 0, 75, 10, 0, 76, 10, 0, 77, 10, 0, 78, 10, 0, 65536, 2, 0, 65606, 2, 65536, 65607, 10, 0, 65608, 10, 0, 65609, 10, 0, 65610, 10, 0, 65611, 10, 0, 65612, 10, 0, 65613, 10, 0, 65614, 10, 0, 131072, 2, 0, 131142, 2, 65536, 131143, 10, 0, 131144, 10, 0, 131145, 10, 0, 131146, 10, 0, 131147, 10, 0, 131148, 10, 0, 131149, 10, 0, 131150, 10, 0, 196608, 2, 0, 196626, 9, 0, 196678, 2, 65536, 196679, 10, 0, 196680, 10, 0, 196681, 10, 0, 196682, 10, 0, 196683, 10, 0, 196684, 10, 0, 196685, 10, 0, 196686, 10, 0, 262144, 2, 0, 262162, 8, 0, 262214, 2, 65536, 262215, 10, 0, 262216, 10, 0, 262217, 10, 0, 262218, 10, 0, 262219, 10, 0, 262220, 10, 0, 262221, 10, 0, 262222, 10, 0, 327680, 2, 0, 327697, 9, 65536, 327698, 7, 0, 327733, 9, 0, 327750, 2, 65536, 327751, 10, 0, 327752, 10, 0, 327753, 10, 0, 327754, 10, 0, 327755, 10, 0, 327756, 10, 0, 327757, 10, 0, 327758, 10, 0, 393216, 2, 0, 393233, 8, 65536, 393234, 7, 0, 393257, 9, 0, 393269, 7, 0, 393286, 2, 65536, 393287, 10, 0, 393288, 10, 0, 393289, 10, 0, 393290, 10, 0, 393291, 10, 0, 393292, 10, 0, 393293, 10, 0, 393294, 10, 0, 458752, 2, 0, 458769, 7, 0, 458770, 8, 0, 458790, 9, 0, 458793, 8, 0, 458805, 8, 0, 458822, 2, 65536, 458823, 10, 0, 458824, 10, 0, 458825, 10, 0, 458826, 10, 0, 458827, 10, 0, 458828, 10, 0, 458829, 10, 0, 458830, 10, 0, 524288, 4, 0, 524289, 1, 0, 524304, 1, 65536, 524305, 6, 65536, 524306, 6, 0, 524307, 5, 0, 524308, 1, 0, 524326, 8, 0, 524329, 7, 0, 524341, 7, 0, 524358, 2, 65536, 524359, 10, 0, 524360, 10, 0, 524361, 10, 0, 524362, 10, 0, 524363, 10, 0, 524364, 10, 0, 524365, 10, 0, 524366, 10, 0, 589824, 10, 0, 589825, 13, 0, 589840, 2, 65536, 589841, 10, 0, 589842, 10, 0, 589843, 10, 0, 589844, 2, 0, 589862, 7, 0, 589865, 7, 0, 589876, 1, 65536, 589877, 6, 0, 589878, 1, 0, 589894, 2, 65536, 589895, 10, 0, 589896, 10, 0, 589897, 10, 0, 589898, 10, 0, 589899, 10, 0, 589900, 10, 0, 589901, 10, 0, 589902, 10, 0, 655360, 2, 0, 655376, 2, 65536, 655377, 10, 0, 655378, 10, 0, 655379, 10, 0, 655380, 2, 0, 655398, 7, 0, 655401, 8, 0, 655412, 13, 65536, 655413, 11, 0, 655414, 13, 0, 655430, 2, 65536, 655431, 10, 0, 655432, 10, 0, 655433, 10, 0, 655434, 10, 0, 655435, 10, 0, 655436, 10, 0, 655437, 10, 0, 655438, 10, 0, 720896, 2, 0, 720912, 2, 65536, 720913, 10, 0, 720914, 10, 0, 720915, 10, 0, 720916, 2, 0, 720934, 8, 0, 720937, 7, 0, 720958, 1, 65536, 720959, 5, 0, 720960, 5, 65536, 720961, 5, 0, 720962, 5, 0, 720963, 5, 65536, 720964, 5, 0, 720965, 0, 0, 720966, 4, 65536, 720967, 10, 0, 720968, 10, 0, 720969, 10, 0, 720970, 10, 0, 720971, 10, 0, 720972, 10, 0, 720973, 10, 0, 720974, 10, 0, 786432, 2, 0, 786437, 9, 0, 786448, 2, 65536, 786449, 10, 0, 786450, 10, 0, 786451, 10, 0, 786452, 2, 0, 786464, 1, 65536, 786465, 1, 0, 786470, 7, 0, 786473, 7, 0, 786474, 12, 65536, 786475, 1, 0, 786494, 2, 65536, 786495, 10, 0, 786496, 10, 0, 786497, 10, 0, 786498, 10, 0, 786499, 10, 0, 786500, 10, 0, 786501, 10, 0, 786502, 10, 0, 786503, 10, 0, 786504, 10, 0, 786505, 10, 0, 786506, 10, 0, 786507, 10, 0, 786508, 10, 0, 786509, 10, 0, 851968, 2, 0, 851973, 7, 0, 851984, 2, 65536, 851985, 10, 0, 851986, 10, 0, 851987, 10, 0, 851988, 2, 0, 851996, 1, 65536, 851997, 1, 0, 852000, 2, 65536, 852006, 7, 0, 852009, 6, 0, 852011, 2, 0, 852030, 2, 65536, 852031, 10, 0, 852032, 10, 0, 852033, 10, 0, 852034, 10, 0, 852035, 10, 0, 852036, 10, 0, 852037, 10, 0, 852038, 10, 0, 852039, 10, 0, 852040, 10, 0, 852041, 10, 0, 852042, 10, 0, 852043, 10, 0, 852044, 10, 0, 852045, 10, 0, 917504, 2, 0, 917506, 9, 0, 917509, 7, 0, 917512, 9, 65536, 917520, 13, 65536, 917521, 11, 0, 917522, 11, 0, 917523, 11, 0, 917524, 13, 0, 917532, 13, 65536, 917533, 13, 0, 917536, 2, 65536, 917537, 4, 0, 917538, 1, 0, 917540, 1, 65536, 917541, 0, 0, 917542, 6, 0, 917545, 10, 0, 917546, 10, 0, 917547, 4, 0, 917548, 1, 0, 917566, 2, 65536, 917567, 10, 0, 917568, 10, 0, 917569, 10, 0, 917570, 10, 0, 917571, 10, 0, 917572, 10, 0, 917573, 10, 0, 917574, 10, 0, 917575, 10, 0, 917576, 10, 0, 917577, 10, 0, 917578, 10, 0, 917579, 10, 0, 917580, 10, 0, 917581, 10, 0, 983040, 2, 0, 983042, 7, 0, 983045, 7, 0, 983048, 8, 65536, 983050, 1, 65536, 983051, 0, 0, 983052, 1, 0, 983064, 1, 65536, 983065, 1, 0, 983072, 2, 65536, 983073, 10, 0, 983074, 4, 0, 983075, 0, 0, 983076, 4, 65536, 983077, 10, 0, 983078, 10, 0, 983079, 10, 0, 983080, 10, 0, 983081, 10, 0, 983082, 10, 0, 983083, 10, 0, 983084, 2, 0, 983095, 9, 0, 983102, 2, 65536, 983103, 10, 0, 983104, 10, 0, 983105, 10, 0, 983106, 10, 0, 983107, 10, 0, 983108, 10, 0, 983109, 10, 0, 983110, 10, 0, 983111, 10, 0, 983112, 10, 0, 983113, 10, 0, 983114, 10, 0, 983115, 10, 0, 983116, 10, 0, 983117, 10, 0, 1048576, 2, 0, 1048578, 8, 0, 1048581, 8, 0, 1048584, 7, 65536, 1048586, 2, 65536, 1048587, 10, 65536, 1048588, 2, 0, 1048600, 13, 65536, 1048601, 13, 0, 1048604, 9, 0, 1048608, 13, 65536, 1048609, 11, 65536, 1048610, 11, 65536, 1048611, 11, 65536, 1048612, 10, 0, 1048613, 10, 0, 1048614, 10, 0, 1048615, 10, 0, 1048616, 10, 0, 1048617, 10, 0, 1048618, 10, 0, 1048619, 10, 0, 1048620, 4, 0, 1048621, 1, 0, 1048630, 9, 65536, 1048631, 8, 0, 1048638, 2, 65536, 1048639, 10, 0, 1048640, 10, 0, 1048641, 10, 0, 1048642, 10, 0, 1048643, 10, 0, 1048644, 10, 0, 1048645, 10, 0, 1048646, 10, 0, 1048647, 10, 0, 1048648, 10, 0, 1048649, 10, 0, 1048650, 10, 0, 1048651, 10, 0, 1048652, 10, 0, 1048653, 10, 0, 1114112, 4, 0, 1114113, 0, 0, 1114114, 6, 0, 1114115, 0, 0, 1114116, 0, 0, 1114117, 6, 0, 1114118, 1, 0, 1114120, 8, 65536, 1114122, 13, 65536, 1114123, 11, 0, 1114124, 13, 0, 1114128, 1, 65536, 1114129, 5, 0, 1114130, 5, 65536, 1114131, 5, 0, 1114132, 0, 0, 1114133, 1, 0, 1114140, 7, 0, 1114141, 9, 65536, 1114148, 2, 65536, 1114149, 10, 0, 1114150, 10, 0, 1114151, 10, 0, 1114152, 10, 0, 1114153, 10, 0, 1114154, 10, 0, 1114155, 10, 0, 1114156, 10, 0, 1114157, 2, 0, 1114166, 8, 65536, 1114167, 8, 0, 1114174, 2, 65536, 1114175, 10, 0, 1114176, 10, 0, 1114177, 10, 0, 1114178, 10, 0, 1114179, 10, 0, 1114180, 10, 0, 1114181, 10, 0, 1114182, 10, 0, 1114183, 10, 0, 1114184, 10, 0, 1114185, 10, 0, 1114186, 10, 0, 1114187, 10, 0, 1114188, 10, 0, 1179648, 10, 0, 1179649, 10, 0, 1179650, 10, 0, 1179651, 10, 0, 1179652, 10, 0, 1179653, 10, 0, 1179654, 2, 0, 1179656, 7, 65536, 1179664, 2, 65536, 1179665, 10, 0, 1179666, 10, 0, 1179667, 10, 0, 1179668, 10, 0, 1179669, 4, 0, 1179670, 12, 0, 1179675, 9, 0, 1179676, 8, 0, 1179677, 8, 0, 1179684, 2, 65536, 1179685, 10, 0, 1179686, 10, 0, 1179687, 10, 0, 1179688, 10, 0, 1179689, 10, 0, 1179690, 10, 0, 1179691, 10, 0, 1179692, 10, 0, 1179693, 4, 0, 1179694, 1, 0, 1179701, 9, 0, 1179702, 7, 65536, 1179703, 7, 0, 1179710, 2, 65536, 1179711, 10, 0, 1179712, 10, 0, 1179713, 10, 0, 1179714, 10, 0, 1179715, 10, 0, 1179716, 10, 0, 1179717, 10, 0, 1179718, 10, 0, 1179719, 10, 0, 1179720, 10, 0, 1179721, 10, 0, 1179722, 10, 0, 1245184, 10, 0, 1245185, 10, 0, 1245186, 10, 0, 1245187, 10, 0, 1245188, 10, 0, 1245189, 10, 0, 1245190, 2, 0, 1245192, 7, 65536, 1245199, 1, 65536, 1245200, 4, 65536, 1245201, 10, 0, 1245202, 10, 0, 1245203, 10, 0, 1245204, 10, 0, 1245205, 10, 0, 1245207, 1, 0, 1245211, 7, 0, 1245212, 7, 0, 1245213, 8, 65536, 1245220, 2, 65536, 1245221, 10, 0, 1245222, 10, 0, 1245223, 10, 0, 1245224, 10, 0, 1245225, 10, 0, 1245226, 10, 0, 1245227, 10, 0, 1245228, 10, 0, 1245229, 10, 0, 1245230, 2, 0, 1245237, 8, 0, 1245238, 7, 65536, 1245239, 8, 0, 1245240, 9, 65536, 1245246, 2, 65536, 1245247, 10, 0, 1245248, 10, 0, 1245249, 10, 0, 1245250, 10, 0, 1245251, 10, 0, 1245252, 10, 0, 1245253, 10, 0, 1245254, 10, 0, 1245255, 10, 0, 1245256, 10, 0, 1245257, 10, 0, 1245258, 10, 0, 1310720, 10, 0, 1310721, 10, 0, 1310722, 10, 0, 1310723, 10, 0, 1310724, 10, 0, 1310725, 10, 0, 1310726, 2, 0, 1310728, 8, 65536, 1310730, 1, 65536, 1310731, 1, 0, 1310734, 1, 65536, 1310735, 4, 65536, 1310736, 10, 0, 1310737, 10, 0, 1310738, 10, 0, 1310739, 10, 0, 1310740, 10, 0, 1310741, 10, 0, 1310742, 10, 0, 1310743, 4, 0, 1310744, 1, 0, 1310747, 8, 0, 1310748, 7, 0, 1310749, 7, 65536, 1310756, 2, 65536, 1310757, 10, 0, 1310758, 10, 0, 1310759, 10, 0, 1310760, 10, 0, 1310761, 10, 0, 1310762, 10, 0, 1310763, 10, 0, 1310764, 10, 0, 1310765, 10, 0, 1310766, 4, 0, 1310767, 5, 0, 1310768, 12, 0, 1310773, 7, 0, 1310774, 7, 65536, 1310775, 7, 0, 1310776, 7, 65536, 1310782, 2, 65536, 1310783, 10, 0, 1310784, 10, 0, 1310785, 10, 0, 1310786, 10, 0, 1310787, 10, 0, 1310788, 10, 0, 1310789, 10, 0, 1310790, 10, 0, 1310791, 10, 0, 1310792, 10, 0, 1310793, 10, 0, 1376256, 10, 0, 1376257, 10, 0, 1376258, 10, 0, 1376259, 10, 0, 1376260, 10, 0, 1376261, 10, 0, 1376262, 4, 0, 1376263, 0, 0, 1376265, 0, 0, 1376266, 4, 65536, 1376267, 4, 0, 1376268, 0, 0, 1376269, 0, 0, 1376270, 4, 65536, 1376271, 10, 0, 1376272, 10, 0, 1376273, 10, 0, 1376274, 10, 0, 1376275, 10, 0, 1376276, 10, 0, 1376277, 10, 0, 1376278, 10, 0, 1376279, 10, 0, 1376280, 4, 0, 1376281, 12, 0, 1376283, 8, 0, 1376284, 8, 0, 1376285, 8, 65536, 1376287, 12, 65536, 1376288, 0, 0, 1376289, 5, 0, 1376290, 5, 65536, 1376291, 0, 0, 1376292, 4, 65536, 1376293, 10, 0, 1376294, 10, 0, 1376295, 10, 0, 1376296, 10, 0, 1376297, 10, 0, 1376298, 10, 0, 1376299, 10, 0, 1376300, 10, 0, 1376301, 10, 0, 1376302, 10, 0, 1376303, 10, 0, 1376305, 12, 0, 1376309, 7, 0, 1376310, 8, 65536, 1376311, 7, 0, 1376312, 8, 65536, 1376318, 2, 65536, 1376319, 10, 0, 1376320, 10, 0, 1376321, 10, 0, 1376322, 10, 0, 1376323, 10, 0, 1376324, 10, 0, 1376325, 10, 0, 1376326, 10, 0, 1376327, 10, 0, 1376328, 10, 0, 1441792, 10, 0, 1441793, 10, 0, 1441794, 10, 0, 1441795, 10, 0, 1441796, 10, 0, 1441797, 10, 0, 1441798, 10, 0, 1441799, 10, 0, 1441800, 10, 0, 1441801, 10, 0, 1441802, 10, 0, 1441803, 10, 0, 1441804, 10, 0, 1441805, 10, 0, 1441806, 10, 0, 1441807, 10, 0, 1441808, 10, 0, 1441809, 10, 0, 1441810, 10, 0, 1441811, 10, 0, 1441812, 10, 0, 1441813, 10, 0, 1441814, 10, 0, 1441815, 10, 0, 1441816, 10, 0, 1441818, 0, 0, 1441819, 6, 0, 1441820, 6, 0, 1441821, 6, 65536, 1441822, 5, 0, 1441824, 10, 0, 1441825, 10, 0, 1441826, 10, 0, 1441827, 10, 0, 1441828, 10, 0, 1441829, 10, 0, 1441830, 10, 0, 1441831, 10, 0, 1441832, 10, 0, 1441833, 10, 0, 1441834, 10, 0, 1441835, 10, 0, 1441836, 10, 0, 1441837, 10, 0, 1441838, 10, 0, 1441839, 10, 0, 1441840, 10, 0, 1441842, 0, 0, 1441843, 0, 0, 1441844, 0, 0, 1441845, 6, 0, 1441846, 6, 65536, 1441847, 6, 0, 1441848, 6, 65536, 1441849, 0, 0, 1441850, 5, 0, 1441851, 5, 65536, 1441852, 5, 0, 1441853, 0, 0, 1441854, 4, 65536, 1441855, 10, 0, 1441856, 10, 0, 1441857, 10, 0, 1441858, 10, 0, 1441859, 10, 0, 1441860, 10, 0, 1441861, 10, 0, 1441862, 10, 0, 1441863, 10, 0, 1507328, 10, 0, 1507329, 10, 0, 1507330, 10, 0, 1507331, 10, 0, 1507332, 10, 0, 1507333, 10, 0, 1507334, 10, 0, 1507335, 10, 0, 1507336, 10, 0, 1507337, 10, 0, 1507338, 10, 0, 1507339, 10, 0, 1507340, 10, 0, 1507341, 10, 0, 1507342, 10, 0, 1507343, 10, 0, 1507344, 10, 0, 1507345, 10, 0, 1507346, 10, 0, 1507347, 10, 0, 1507348, 10, 0, 1507349, 10, 0, 1507350, 10, 0, 1507351, 10, 0, 1507352, 10, 0, 1507353, 10, 0, 1507354, 10, 0, 1507355, 10, 0, 1507356, 10, 0, 1507357, 10, 0, 1507358, 10, 0, 1507359, 10, 0, 1507360, 10, 0, 1507361, 10, 0, 1507362, 10, 0, 1507363, 10, 0, 1507364, 10, 0, 1507365, 10, 0, 1507366, 10, 0, 1507367, 10, 0, 1507368, 10, 0, 1507369, 10, 0, 1507370, 10, 0, 1507371, 10, 0, 1507372, 10, 0, 1507373, 10, 0, 1507374, 10, 0, 1507375, 10, 0, 1507376, 10, 0, 1507377, 10, 0, 1507378, 10, 0, 1507379, 10, 0, 1507380, 10, 0, 1507381, 10, 0, 1507382, 10, 0, 1507383, 10, 0, 1507384, 10, 0, 1507385, 10, 0, 1507386, 10, 0, 1507387, 10, 0, 1507388, 10, 0, 1507389, 10, 0, 1507390, 10, 0, 1507391, 10, 0, 1507392, 10, 0, 1507393, 10, 0, 1507394, 10, 0, 1507395, 10, 0, 1507396, 10, 0, 1507397, 10, 0, 1507398, 10, 0, 1507399, 10, 0, 1572864, 10, 0, 1572865, 10, 0, 1572866, 10, 0, 1572867, 10, 0, 1572868, 10, 0, 1572869, 10, 0, 1572870, 10, 0, 1572871, 10, 0, 1572872, 10, 0, 1572873, 10, 0, 1572874, 10, 0, 1572875, 10, 0, 1572876, 10, 0, 1572877, 10, 0, 1572878, 10, 0, 1572879, 10, 0, 1572880, 10, 0, 1572881, 10, 0, 1572882, 10, 0, 1572883, 10, 0, 1572884, 10, 0, 1572885, 10, 0, 1572886, 10, 0, 1572887, 10, 0, 1572888, 10, 0, 1572889, 10, 0, 1572890, 10, 0, 1572891, 10, 0, 1572892, 10, 0, 1572893, 10, 0, 1572894, 10, 0, 1572895, 10, 0, 1572896, 10, 0, 1572897, 10, 0, 1572898, 10, 0, 1572899, 10, 0, 1572900, 10, 0, 1572901, 10, 0, 1572902, 10, 0, 1572903, 10, 0, 1572904, 10, 0, 1572905, 10, 0, 1572906, 10, 0, 1572907, 10, 0, 1572908, 10, 0, 1572909, 10, 0, 1572910, 10, 0, 1572911, 10, 0, 1572912, 10, 0, 1572913, 10, 0, 1572914, 10, 0, 1572915, 10, 0, 1572916, 10, 0, 1572917, 10, 0, 1572918, 10, 0, 1572919, 10, 0, 1572920, 10, 0, 1572921, 10, 0, 1572922, 10, 0, 1572923, 10, 0, 1572924, 10, 0, 1572925, 10, 0, 1572926, 10, 0, 1572927, 10, 0, 1572928, 10, 0, 1572929, 10, 0, 1572930, 10, 0, 1572931, 10, 0, 1572932, 10, 0, 1572933, 10, 0, 1572934, 10, 0, 1572935, 10, 0, 1638400, 10, 0, 1638401, 10, 0, 1638402, 10, 0, 1638403, 10, 0, 1638404, 10, 0, 1638405, 10, 0, 1638406, 10, 0, 1638407, 10, 0, 1638408, 10, 0, 1638409, 10, 0, 1638410, 10, 0, 1638411, 10, 0, 1638412, 10, 0, 1638413, 10, 0, 1638414, 10, 0, 1638415, 10, 0, 1638416, 10, 0, 1638417, 10, 0, 1638418, 10, 0, 1638419, 10, 0, 1638420, 10, 0, 1638421, 10, 0, 1638422, 10, 0, 1638423, 10, 0, 1638424, 10, 0, 1638425, 10, 0, 1638426, 10, 0, 1638427, 10, 0, 1638428, 10, 0, 1638429, 10, 0, 1638430, 10, 0, 1638431, 10, 0, 1638432, 10, 0, 1638433, 10, 0, 1638434, 10, 0, 1638435, 10, 0, 1638436, 10, 0, 1638437, 10, 0, 1638438, 10, 0, 1638439, 10, 0, 1638440, 10, 0, 1638441, 10, 0, 1638442, 10, 0, 1638443, 10, 0, 1638444, 10, 0, 1638445, 10, 0, 1638446, 10, 0, 1638447, 10, 0, 1638448, 10, 0, 1638449, 10, 0, 1638450, 10, 0, 1638451, 10, 0, 1638452, 10, 0, 1638453, 10, 0, 1638454, 10, 0, 1638455, 10, 0, 1638456, 10, 0, 1638457, 10, 0, 1638458, 10, 0, 1638459, 10, 0, 1638460, 10, 0, 1638461, 10, 0, 1638462, 10, 0, 1638463, 10, 0, 1638464, 10, 0, 1638465, 10, 0, 1638466, 10, 0, 1638467, 10, 0, 1638468, 10, 0, 1638469, 10, 0, 1638470, 10, 0, 1638471, 10, 0, 1703952, 10, 0, 1703953, 10, 0, 1703954, 10, 0, 1703955, 10, 0, 1703956, 10, 0, 1703957, 10, 0, 1703958, 10, 0, 1703959, 10, 0, 1703960, 10, 0, 1703961, 10, 0, 1703962, 10, 0, 1703963, 10, 0, 1703964, 10, 0, 1703965, 10, 0, 1703966, 10, 0, 1703967, 10, 0, 1703968, 10, 0, 1703969, 10, 0, 1703970, 10, 0, 1703971, 10, 0, 1703972, 10, 0, 1703973, 10, 0, 1703974, 10, 0, 1703975, 10, 0, 1703976, 10, 0, 1703977, 10, 0, 1703978, 10, 0, 1703979, 10, 0, 1703980, 10, 0, 1703981, 10, 0, 1703982, 10, 0, 1703983, 10, 0, 1703984, 10, 0, 1703985, 10, 0, 1703986, 10, 0, 1703987, 10, 0, 1703988, 10, 0, 1703989, 10, 0, 1703990, 10, 0, 1703991, 10, 0, 1703992, 10, 0, 1703993, 10, 0, 1703994, 10, 0, 1703995, 10, 0, 1703996, 10, 0, 1703997, 10, 0, 1703998, 10, 0, 1703999, 10, 0, 1704000, 10, 0, 1704001, 10, 0, 1704002, 10, 0, 1704003, 10, 0, 1704004, 10, 0, 1704005, 10, 0, 1704006, 10, 0, 1704007, 10, 0, 1769488, 10, 0, 1769489, 10, 0, 1769490, 10, 0, 1769491, 10, 0, 1769492, 10, 0, 1769493, 10, 0, 1769494, 10, 0, 1769495, 10, 0, 1769496, 10, 0, 1769497, 10, 0, 1769498, 10, 0, 1769499, 10, 0, 1769500, 10, 0, 1769501, 10, 0, 1769502, 10, 0, 1769503, 10, 0, 1769504, 10, 0, 1769505, 10, 0, 1769506, 10, 0, 1769507, 10, 0, 1769508, 10, 0, 1769509, 10, 0, 1769510, 10, 0, 1769511, 10, 0, 1769512, 10, 0, 1769513, 10, 0, 1769514, 10, 0, 1769515, 10, 0, 1769516, 10, 0, 1769517, 10, 0, 1769518, 10, 0, 1769519, 10, 0, 1769520, 10, 0, 1769521, 10, 0, 1769522, 10, 0, 1769523, 10, 0, 1769524, 10, 0, 1769525, 10, 0, 1769526, 10, 0, 1769527, 10, 0, 1769528, 10, 0, 1769529, 10, 0, 1769530, 10, 0, 1769531, 10, 0, 1769532, 10, 0, 1769533, 10, 0, 1769534, 10, 0, 1769535, 10, 0, 1769536, 10, 0, 1769537, 10, 0, 1769538, 10, 0, 1769539, 10, 0, 1769540, 10, 0, 1769541, 10, 0, 1376264, 6, 65536, 917543, 5, 0, 917544, 4, 65536, 852008, 1, 65536, 852002, 3, 0) + +[node name="Coins" type="Node2D" parent="."] + +[node name="Coin" parent="Coins" instance=ExtResource("2")] +position = Vector2(336, 589.5) + +[node name="Coin2" parent="Coins" instance=ExtResource("2")] +position = Vector2(352, 589.5) + +[node name="Coin3" parent="Coins" instance=ExtResource("2")] +position = Vector2(368, 589.5) + +[node name="Coin4" parent="Coins" instance=ExtResource("2")] +position = Vector2(560, 496) + +[node name="Coin5" parent="Coins" instance=ExtResource("2")] +position = Vector2(576, 496) + +[node name="Coin6" parent="Coins" instance=ExtResource("2")] +position = Vector2(592, 496) + +[node name="Coin7" parent="Coins" instance=ExtResource("2")] +position = Vector2(608, 496) + +[node name="Coin8" parent="Coins" instance=ExtResource("2")] +position = Vector2(624, 496) + +[node name="Coin9" parent="Coins" instance=ExtResource("2")] +position = Vector2(784, 432) + +[node name="Coin10" parent="Coins" instance=ExtResource("2")] +position = Vector2(816, 432) + +[node name="Coin11" parent="Coins" instance=ExtResource("2")] +position = Vector2(912, 384) + +[node name="Coin12" parent="Coins" instance=ExtResource("2")] +position = Vector2(944, 384) + +[node name="Coin13" parent="Coins" instance=ExtResource("2")] +position = Vector2(1040, 336) + +[node name="Coin14" parent="Coins" instance=ExtResource("2")] +position = Vector2(1072, 336) + +[node name="Coin15" parent="Coins" instance=ExtResource("2")] +position = Vector2(896, 624) + +[node name="Coin16" parent="Coins" instance=ExtResource("2")] +position = Vector2(928, 624) + +[node name="Coin17" parent="Coins" instance=ExtResource("2")] +position = Vector2(960, 624) + +[node name="Coin18" parent="Coins" instance=ExtResource("2")] +position = Vector2(960, 592) + +[node name="Coin19" parent="Coins" instance=ExtResource("2")] +position = Vector2(928, 592) + +[node name="Coin20" parent="Coins" instance=ExtResource("2")] +position = Vector2(896, 592) + +[node name="Coin21" parent="Coins" instance=ExtResource("2")] +position = Vector2(49.4434, 244.258) + +[node name="Coin22" parent="Coins" instance=ExtResource("2")] +position = Vector2(44.7994, 240.609) + +[node name="Coin23" parent="Coins" instance=ExtResource("2")] +position = Vector2(54.0875, 240.609) + +[node name="Coin24" parent="Coins" instance=ExtResource("2")] +position = Vector2(58.068, 234.969) + +[node name="Coin25" parent="Coins" instance=ExtResource("2")] +position = Vector2(58.7315, 228.999) + +[node name="Coin26" parent="Coins" instance=ExtResource("2")] +position = Vector2(53.092, 224.686) + +[node name="Coin27" parent="Coins" instance=ExtResource("2")] +position = Vector2(49.1117, 229.331) + +[node name="Coin28" parent="Coins" instance=ExtResource("2")] +position = Vector2(44.136, 224.355) + +[node name="Coin29" parent="Coins" instance=ExtResource("2")] +position = Vector2(39.8238, 228.667) + +[node name="Coin30" parent="Coins" instance=ExtResource("2")] +position = Vector2(41.4823, 234.306) + +[node name="Coin31" parent="Coins" instance=ExtResource("2")] +position = Vector2(1678.71, 232.644) + +[node name="Coin32" parent="Coins" instance=ExtResource("2")] +position = Vector2(1710.71, 232.644) + +[node name="Coin33" parent="Coins" instance=ExtResource("2")] +position = Vector2(1742.71, 232.644) + +[node name="Coin34" parent="Coins" instance=ExtResource("2")] +position = Vector2(1742.71, 200.644) + +[node name="Coin35" parent="Coins" instance=ExtResource("2")] +position = Vector2(1710.71, 200.644) + +[node name="Coin36" parent="Coins" instance=ExtResource("2")] +position = Vector2(1678.71, 200.644) + +[node name="Coin37" parent="Coins" instance=ExtResource("2")] +position = Vector2(2086.38, 302.529) + +[node name="Coin38" parent="Coins" instance=ExtResource("2")] +position = Vector2(2118.38, 302.529) + +[node name="Coin39" parent="Coins" instance=ExtResource("2")] +position = Vector2(2150.38, 302.529) + +[node name="Coin40" parent="Coins" instance=ExtResource("2")] +position = Vector2(2150.38, 270.529) + +[node name="Coin41" parent="Coins" instance=ExtResource("2")] +position = Vector2(2118.38, 270.529) + +[node name="Coin42" parent="Coins" instance=ExtResource("2")] +position = Vector2(2086.38, 270.529) + +[node name="Props" type="Node2D" parent="."] + +[node name="MovingPlatform1" parent="Props" instance=ExtResource("3")] +position = Vector2(725, 439) + +[node name="MovingPlatform2" parent="Props" instance=ExtResource("3")] +position = Vector2(438, 272) + +[node name="MovingPlatform3" parent="Props" instance=ExtResource("3")] +position = Vector2(1554, 369) + +[node name="MovePlatforms" type="AnimationPlayer" parent="Props"] +autoplay = "move" +libraries = { +"": SubResource("AnimationLibrary_el48w") +} + +[node name="Seesaw" parent="Props" instance=ExtResource("4")] +position = Vector2(1201.4, 424.76) + +[node name="OneWayPlatform" parent="Props" instance=ExtResource("5")] +position = Vector2(465, 560.405) + +[node name="Player" parent="." instance=ExtResource("6_fauva")] +position = Vector2(126, 501) + +[node name="Enemies" type="Node2D" parent="."] + +[node name="Enemy1" parent="Enemies" instance=ExtResource("7")] +position = Vector2(417.332, 654.8) +physics_material_override = SubResource("2") + +[node name="Enemy2" parent="Enemies" instance=ExtResource("7")] +position = Vector2(353.832, 612.525) +physics_material_override = SubResource("3") + +[node name="Enemy3" parent="Enemies" instance=ExtResource("7")] +position = Vector2(562.605, 526.53) +physics_material_override = SubResource("4") + +[node name="Enemy4" parent="Enemies" instance=ExtResource("7")] +position = Vector2(646.055, 529.62) +physics_material_override = SubResource("5") + +[node name="Enemy5" parent="Enemies" instance=ExtResource("7")] +position = Vector2(803.69, 461.62) +physics_material_override = SubResource("6") + +[node name="Enemy6" parent="Enemies" instance=ExtResource("7")] +position = Vector2(1325, 391) +physics_material_override = SubResource("7") + +[node name="Enemy7" parent="Enemies" instance=ExtResource("7")] +position = Vector2(728.8, 344.371) +physics_material_override = SubResource("8") + +[node name="Enemy8" parent="Enemies" instance=ExtResource("7")] +position = Vector2(596.815, 230.191) +physics_material_override = SubResource("9") + +[node name="Enemy9" parent="Enemies" instance=ExtResource("7")] +position = Vector2(1714.86, 270.432) +physics_material_override = SubResource("10") + +[node name="Enemy10" parent="Enemies" instance=ExtResource("7")] +position = Vector2(1773.1, 678.095) +physics_material_override = SubResource("11") + +[node name="Enemy11" parent="Enemies" instance=ExtResource("7")] +position = Vector2(1203.31, 407.557) +physics_material_override = SubResource("12") + +[node name="ParallaxBg" parent="." instance=ExtResource("8")] + +[node name="Label" type="Label" parent="."] +offset_left = 12.0 +offset_top = -202.0 +offset_right = 358.0 +offset_bottom = -10.0 +size_flags_horizontal = 2 +size_flags_vertical = 0 +text = "This is a simple demo on how to make a platformer game with Godot. +This version uses physics and the 2D physics engine for motion and collision. +The demo also shows the benefits of using the scene system, where coins, +enemies and the player are edited separatedly and instanced in the stage. + +To edit the base tiles for the tileset, open the tileset_edit.tscn file and follow +instructions." + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource("9") +autoplay = true diff --git a/2d/physics_platformer/tiles_demo.png.import b/2d/physics_platformer/tiles_demo.png.import index 29ac591d..0aee7761 100644 --- a/2d/physics_platformer/tiles_demo.png.import +++ b/2d/physics_platformer/tiles_demo.png.import @@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/tiles_demo.png-7ca5c7c5c02ab8abe0d585a6a8f086 [params] compress/mode=0 +compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 mipmaps/generate=false diff --git a/2d/physics_platformer/tileset.tres b/2d/physics_platformer/tileset.tres new file mode 100644 index 00000000..975b426f --- /dev/null +++ b/2d/physics_platformer/tileset.tres @@ -0,0 +1,798 @@ +[gd_resource type="TileSet" load_steps=18 format=3 uid="uid://rowrak7ls50v"] + +[ext_resource type="Texture2D" uid="uid://dbcdt0wqr3gd3" path="res://tiles_demo.png" id="1"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_va8am"] +texture = ExtResource("1") +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -12, 16, -12, 16, 16, -16, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, -12, -16, -12, -16, 16, 16, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 12, 16, 12, 16, -16, -16, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, 12, -16, 12, -16, -16, 16, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -12, 16, -12, 16, 16, -16, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, -12, -16, -12, -16, 16, 16, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 12, 16, 12, 16, -16, -16, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, 12, -16, 12, -16, -16, 16, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_dri2i"] +texture = ExtResource("1") +margins = Vector2i(32, 0) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -12, 12, -12, 12, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -12, -12, -12, -12, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 12, 12, 12, 12, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 12, -12, 12, -12, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -12, 12, -12, 12, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -12, -12, -12, -12, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 12, 12, 12, 12, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 12, -12, 12, -12, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_hfgct"] +texture = ExtResource("1") +margins = Vector2i(0, 32) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_7xlxp"] +texture = ExtResource("1") +margins = Vector2i(192, 32) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, -16, 16, -16, -16, 16, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, -16, 16, -16, -16, 16, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_64p8q"] +texture = ExtResource("1") +margins = Vector2i(64, 32) +texture_region_size = Vector2i(32, 96) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -10, 16, 22, 16, 48, -16, 48) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 22, 16, -10, 16, 48, -16, 48) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -48, 16, -48, 16, -22, -16, 10) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -48, 16, -48, 16, 10, -16, -22) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -28, 16, 4, 16, 32, -16, 32) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, -28, -16, 4, -16, 32, 16, 32) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 28, 16, -4, 16, -32, -16, -32) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, 28, -16, -4, -16, -32, 16, -32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_bgjgk"] +texture = ExtResource("1") +margins = Vector2i(224, 32) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -16, 12, -16, 12, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -16, -12, -16, -12, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 12, 16, 12, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 16, -12, 16, -12, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -16, 12, -16, 12, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -16, -12, -16, -12, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 12, 16, 12, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 16, -12, 16, -12, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_uq55q"] +texture = ExtResource("1") +margins = Vector2i(64, 0) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -12, 16, -12, 16, 12, -16, 12) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, -12, -16, -12, -16, 12, 16, 12) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 12, 16, 12, 16, -12, -16, -12) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, 12, -16, 12, -16, -12, 16, -12) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -12, 16, -12, 16, 12, -16, 12) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, -12, -16, -12, -16, 12, 16, 12) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 12, 16, 12, 16, -12, -16, -12) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, 12, -16, 12, -16, -12, 16, -12) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_l5dh6"] +texture = ExtResource("1") +margins = Vector2i(96, 0) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -12, 12, -12, 12, 12, -16, 12) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, -12, -12, -12, -12, 12, 16, 12) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 12, 12, 12, 12, -12, -16, -12) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, 12, -12, 12, -12, -12, 16, -12) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -12, 12, -12, 12, 12, -16, 12) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, -12, -12, -12, -12, 12, 16, 12) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 12, 12, 12, 12, -12, -16, -12) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, 12, -12, 12, -12, -12, 16, -12) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_w6c8t"] +texture = ExtResource("1") +margins = Vector2i(32, 32) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -16, 12, -16, 12, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -16, -12, -16, -12, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 12, 16, 12, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 16, -12, 16, -12, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -16, 12, -16, 12, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -16, -12, -16, -12, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 12, 16, 12, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 16, -12, 16, -12, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_05nbk"] +texture = ExtResource("1") +margins = Vector2i(160, 64) +texture_region_size = Vector2i(96, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-48, 16, -48, -16, -20, -16, -20, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(48, 16, 48, -16, 20, -16.5, 20, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, -32, 16, -4, 16, -4, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, -16, 32, 16, 4, 16, 4, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 16, -32, -16, -4, -16, -4, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, 16, 32, -16, 4, -16, 4, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, -32, 16, -4, 16, -4, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, -16, 32, 16, 4, 16, 4, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_ee0gv"] +texture = ExtResource("1") +margins = Vector2i(32, 64) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -16, 12, -16, 16, -12, 16, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -16, -12, -16, -16, -12, -16, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 12, 16, 16, 12, 16, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 16, -12, 16, -16, 12, -16, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -16, 12, -16, 16, -12, 16, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -16, -12, -16, -16, -12, -16, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 12, 16, 16, 12, 16, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 16, -12, 16, -16, 12, -16, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_lnu6d"] +texture = ExtResource("1") +margins = Vector2i(96, 96) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -12, 16, -12, 16, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -12, -16, -12, -16, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 12, 16, 12, 16, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 12, -16, 12, -16, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -12, 16, -12, 16, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -12, -16, -12, -16, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 12, 16, 12, 16, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 12, -16, 12, -16, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_8javq"] +texture = ExtResource("1") +margins = Vector2i(128, 96) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -12, 16, -12, 16, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -12, -16, -12, -16, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 12, 16, 12, 16, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 12, -16, 12, -16, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -12, 16, -12, 16, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -12, -16, -12, -16, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 12, 16, 12, 16, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 12, -16, 12, -16, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_8pchj"] +texture = ExtResource("1") +margins = Vector2i(128, 64) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_s315k"] +texture = ExtResource("1") +margins = Vector2i(128, 32) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_cnnsu"] +texture = ExtResource("1") +margins = Vector2i(128, 0) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 + +[resource] +tile_size = Vector2i(32, 32) +physics_layer_0/collision_layer = 1 +sources/0 = SubResource("TileSetAtlasSource_va8am") +sources/1 = SubResource("TileSetAtlasSource_dri2i") +sources/2 = SubResource("TileSetAtlasSource_w6c8t") +sources/3 = SubResource("TileSetAtlasSource_05nbk") +sources/4 = SubResource("TileSetAtlasSource_ee0gv") +sources/5 = SubResource("TileSetAtlasSource_lnu6d") +sources/6 = SubResource("TileSetAtlasSource_8javq") +sources/7 = SubResource("TileSetAtlasSource_8pchj") +sources/8 = SubResource("TileSetAtlasSource_s315k") +sources/9 = SubResource("TileSetAtlasSource_cnnsu") +sources/10 = SubResource("TileSetAtlasSource_hfgct") +sources/11 = SubResource("TileSetAtlasSource_7xlxp") +sources/12 = SubResource("TileSetAtlasSource_64p8q") +sources/13 = SubResource("TileSetAtlasSource_bgjgk") +sources/14 = SubResource("TileSetAtlasSource_uq55q") +sources/15 = SubResource("TileSetAtlasSource_l5dh6") diff --git a/2d/physics_platformer/TilesetEdit.tscn b/2d/physics_platformer/tileset_edit.tscn similarity index 100% rename from 2d/physics_platformer/TilesetEdit.tscn rename to 2d/physics_platformer/tileset_edit.tscn