├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── assets ├── misc │ ├── character.atlas │ └── sprites.atlas ├── script │ ├── player.script │ └── scene_manage.script └── texture │ ├── Cloud_1.png │ ├── Cloud_2.png │ ├── Cloud_3.png │ ├── Cloud_4.png │ ├── Cloud_bg_1.png │ ├── Cloud_bg_2.png │ ├── Cloud_bg_3.png │ ├── Hills_1.png │ ├── Hills_2.png │ ├── Hills_3.png │ ├── Hills_4.png │ ├── Hills_5.png │ ├── Hills_6.png │ ├── Hills_7.png │ ├── Hills_bg.png │ ├── Hills_mid_1.png │ ├── Hills_mid_2.png │ ├── Hills_mid_3.png │ ├── Hills_mid_4.png │ ├── Hills_mid_5.png │ ├── Hills_wall.png │ ├── Plant_1.png │ ├── Plant_2.png │ ├── Plant_3.png │ ├── Platform_1.png │ ├── Platform_2.png │ ├── bg_ground.png │ └── character │ ├── bopz_idle_ 001.png │ ├── bopz_idle_ 002.png │ ├── bopz_idle_ 003.png │ ├── bopz_idle_ 004.png │ ├── bopz_idle_ 005.png │ ├── bopz_idle_ 006.png │ ├── bopz_idle_ 007.png │ ├── bopz_idle_ 008.png │ ├── bopz_idle_ 009.png │ ├── bopz_idle_ 010.png │ ├── bopz_idle_ 011.png │ ├── bopz_idle_ 012.png │ ├── bopz_idle_ 013.png │ ├── bopz_idle_ 014.png │ ├── bopz_idle_ 015.png │ ├── bopz_idle_ 016.png │ ├── bopz_jump_01.png │ ├── bopz_jump_02.png │ ├── bopz_jump_03.png │ ├── bopz_jump_04.png │ ├── bopz_jump_05.png │ ├── bopz_run_001.png │ ├── bopz_run_002.png │ ├── bopz_run_003.png │ ├── bopz_run_004.png │ ├── bopz_run_005.png │ ├── bopz_run_006.png │ ├── bopz_run_007.png │ ├── bopz_run_008.png │ ├── bopz_run_009.png │ ├── bopz_run_010.png │ ├── bopz_run_011.png │ ├── bopz_run_012.png │ ├── bopz_run_013.png │ ├── bopz_run_014.png │ ├── bopz_run_015.png │ ├── bopz_run_016.png │ ├── bopz_walk_001.png │ ├── bopz_walk_002.png │ ├── bopz_walk_003.png │ ├── bopz_walk_004.png │ ├── bopz_walk_005.png │ ├── bopz_walk_006.png │ ├── bopz_walk_007.png │ ├── bopz_walk_008.png │ ├── bopz_walk_009.png │ ├── bopz_walk_010.png │ ├── bopz_walk_011.png │ ├── bopz_walk_012.png │ ├── bopz_walk_013.png │ ├── bopz_walk_014.png │ ├── bopz_walk_015.png │ ├── bopz_walk_016.png │ └── shadow.png ├── game.project ├── input └── game.input_binding ├── main └── main.collection └── render ├── 3D.render └── 3D.render_script /.gitattributes: -------------------------------------------------------------------------------- 1 | # Defold Protocol Buffer Text Files (https://github.com/github/linguist/issues/5091) 2 | *.animationset linguist-language=JSON5 3 | *.atlas linguist-language=JSON5 4 | *.camera linguist-language=JSON5 5 | *.collection linguist-language=JSON5 6 | *.collectionfactory linguist-language=JSON5 7 | *.collectionproxy linguist-language=JSON5 8 | *.collisionobject linguist-language=JSON5 9 | *.cubemap linguist-language=JSON5 10 | *.display_profiles linguist-language=JSON5 11 | *.factory linguist-language=JSON5 12 | *.font linguist-language=JSON5 13 | *.gamepads linguist-language=JSON5 14 | *.go linguist-language=JSON5 15 | *.gui linguist-language=JSON5 16 | *.input_binding linguist-language=JSON5 17 | *.label linguist-language=JSON5 18 | *.material linguist-language=JSON5 19 | *.mesh linguist-language=JSON5 20 | *.model linguist-language=JSON5 21 | *.particlefx linguist-language=JSON5 22 | *.render linguist-language=JSON5 23 | *.sound linguist-language=JSON5 24 | *.sprite linguist-language=JSON5 25 | *.spinemodel linguist-language=JSON5 26 | *.spinescene linguist-language=JSON5 27 | *.texture_profiles linguist-language=JSON5 28 | *.tilemap linguist-language=JSON5 29 | *.tilesource linguist-language=JSON5 30 | 31 | # Defold JSON Files 32 | *.buffer linguist-language=JSON 33 | 34 | # Defold GLSL Shaders 35 | *.fp linguist-language=GLSL 36 | *.vp linguist-language=GLSL 37 | 38 | # Defold Lua Files 39 | *.editor_script linguist-language=Lua 40 | *.render_script linguist-language=Lua 41 | *.script linguist-language=Lua 42 | *.gui_script linguist-language=Lua 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.internal 2 | /build 3 | .externalToolBuilders 4 | .DS_Store 5 | Thumbs.db 6 | .lock-wscript 7 | *.pyc 8 | .project 9 | .cproject 10 | builtins 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Agustin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Perspective Parallax - Defold sample project 2 | 3 | This project showcases perspective parallax effect, setup using a perspective camera and custom rendering script. Sprites are used in this sample, however sprites and 3d models can be rendered in same scene using this renerscript. 4 | 5 | --------- 6 | 7 | ["Play The Demo"](https://flexyourbrain.itch.io/perspective-parallax) 8 | 9 | **Key Controls** : 10 | 11 | - D or right arrow | Walk right 12 | - A or left arrow | Walk left 13 | - Left shift | Run 14 | - Spacebar | Jump 15 | 16 | --------- 17 | 18 | 19 | Learn more about the DEFOLD game engine check out [the documentation pages](https://defold.com/learn) for examples, tutorials, manuals and API docs. 20 | 21 | If you run into trouble, check out the Defold [forum](https://forum.defold.com) 22 | 23 | 24 | 25 | Art Credit : Agustin R. 26 | 27 | -------------------------------------------------------------------------------- /assets/misc/character.atlas: -------------------------------------------------------------------------------- 1 | images { 2 | image: "/assets/texture/character/shadow.png" 3 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 4 | } 5 | animations { 6 | id: "idle" 7 | images { 8 | image: "/assets/texture/character/bopz_idle_ 001.png" 9 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 10 | } 11 | images { 12 | image: "/assets/texture/character/bopz_idle_ 002.png" 13 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 14 | } 15 | images { 16 | image: "/assets/texture/character/bopz_idle_ 003.png" 17 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 18 | } 19 | images { 20 | image: "/assets/texture/character/bopz_idle_ 004.png" 21 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 22 | } 23 | images { 24 | image: "/assets/texture/character/bopz_idle_ 005.png" 25 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 26 | } 27 | images { 28 | image: "/assets/texture/character/bopz_idle_ 006.png" 29 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 30 | } 31 | images { 32 | image: "/assets/texture/character/bopz_idle_ 007.png" 33 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 34 | } 35 | images { 36 | image: "/assets/texture/character/bopz_idle_ 008.png" 37 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 38 | } 39 | images { 40 | image: "/assets/texture/character/bopz_idle_ 009.png" 41 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 42 | } 43 | images { 44 | image: "/assets/texture/character/bopz_idle_ 010.png" 45 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 46 | } 47 | images { 48 | image: "/assets/texture/character/bopz_idle_ 011.png" 49 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 50 | } 51 | images { 52 | image: "/assets/texture/character/bopz_idle_ 012.png" 53 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 54 | } 55 | images { 56 | image: "/assets/texture/character/bopz_idle_ 013.png" 57 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 58 | } 59 | images { 60 | image: "/assets/texture/character/bopz_idle_ 014.png" 61 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 62 | } 63 | images { 64 | image: "/assets/texture/character/bopz_idle_ 015.png" 65 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 66 | } 67 | images { 68 | image: "/assets/texture/character/bopz_idle_ 016.png" 69 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 70 | } 71 | playback: PLAYBACK_LOOP_FORWARD 72 | fps: 10 73 | flip_horizontal: 0 74 | flip_vertical: 0 75 | } 76 | animations { 77 | id: "walk" 78 | images { 79 | image: "/assets/texture/character/bopz_walk_001.png" 80 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 81 | } 82 | images { 83 | image: "/assets/texture/character/bopz_walk_002.png" 84 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 85 | } 86 | images { 87 | image: "/assets/texture/character/bopz_walk_003.png" 88 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 89 | } 90 | images { 91 | image: "/assets/texture/character/bopz_walk_004.png" 92 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 93 | } 94 | images { 95 | image: "/assets/texture/character/bopz_walk_005.png" 96 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 97 | } 98 | images { 99 | image: "/assets/texture/character/bopz_walk_006.png" 100 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 101 | } 102 | images { 103 | image: "/assets/texture/character/bopz_walk_007.png" 104 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 105 | } 106 | images { 107 | image: "/assets/texture/character/bopz_walk_008.png" 108 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 109 | } 110 | images { 111 | image: "/assets/texture/character/bopz_walk_009.png" 112 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 113 | } 114 | images { 115 | image: "/assets/texture/character/bopz_walk_010.png" 116 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 117 | } 118 | images { 119 | image: "/assets/texture/character/bopz_walk_011.png" 120 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 121 | } 122 | images { 123 | image: "/assets/texture/character/bopz_walk_012.png" 124 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 125 | } 126 | images { 127 | image: "/assets/texture/character/bopz_walk_013.png" 128 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 129 | } 130 | images { 131 | image: "/assets/texture/character/bopz_walk_014.png" 132 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 133 | } 134 | images { 135 | image: "/assets/texture/character/bopz_walk_015.png" 136 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 137 | } 138 | images { 139 | image: "/assets/texture/character/bopz_walk_016.png" 140 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 141 | } 142 | playback: PLAYBACK_LOOP_FORWARD 143 | fps: 18 144 | flip_horizontal: 0 145 | flip_vertical: 0 146 | } 147 | animations { 148 | id: "run" 149 | images { 150 | image: "/assets/texture/character/bopz_run_001.png" 151 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 152 | } 153 | images { 154 | image: "/assets/texture/character/bopz_run_002.png" 155 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 156 | } 157 | images { 158 | image: "/assets/texture/character/bopz_run_003.png" 159 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 160 | } 161 | images { 162 | image: "/assets/texture/character/bopz_run_004.png" 163 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 164 | } 165 | images { 166 | image: "/assets/texture/character/bopz_run_005.png" 167 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 168 | } 169 | images { 170 | image: "/assets/texture/character/bopz_run_006.png" 171 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 172 | } 173 | images { 174 | image: "/assets/texture/character/bopz_run_007.png" 175 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 176 | } 177 | images { 178 | image: "/assets/texture/character/bopz_run_008.png" 179 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 180 | } 181 | images { 182 | image: "/assets/texture/character/bopz_run_009.png" 183 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 184 | } 185 | images { 186 | image: "/assets/texture/character/bopz_run_010.png" 187 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 188 | } 189 | images { 190 | image: "/assets/texture/character/bopz_run_011.png" 191 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 192 | } 193 | images { 194 | image: "/assets/texture/character/bopz_run_012.png" 195 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 196 | } 197 | images { 198 | image: "/assets/texture/character/bopz_run_013.png" 199 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 200 | } 201 | images { 202 | image: "/assets/texture/character/bopz_run_014.png" 203 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 204 | } 205 | images { 206 | image: "/assets/texture/character/bopz_run_015.png" 207 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 208 | } 209 | images { 210 | image: "/assets/texture/character/bopz_run_016.png" 211 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 212 | } 213 | playback: PLAYBACK_LOOP_FORWARD 214 | fps: 14 215 | flip_horizontal: 0 216 | flip_vertical: 0 217 | } 218 | animations { 219 | id: "jump" 220 | images { 221 | image: "/assets/texture/character/bopz_jump_01.png" 222 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 223 | } 224 | images { 225 | image: "/assets/texture/character/bopz_jump_02.png" 226 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 227 | } 228 | images { 229 | image: "/assets/texture/character/bopz_jump_03.png" 230 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 231 | } 232 | images { 233 | image: "/assets/texture/character/bopz_jump_04.png" 234 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 235 | } 236 | images { 237 | image: "/assets/texture/character/bopz_jump_05.png" 238 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 239 | } 240 | playback: PLAYBACK_ONCE_FORWARD 241 | fps: 16 242 | flip_horizontal: 0 243 | flip_vertical: 0 244 | } 245 | animations { 246 | id: "fall" 247 | images { 248 | image: "/assets/texture/character/bopz_jump_04.png" 249 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 250 | } 251 | playback: PLAYBACK_LOOP_FORWARD 252 | fps: 1 253 | flip_horizontal: 0 254 | flip_vertical: 0 255 | } 256 | margin: 0 257 | extrude_borders: 2 258 | inner_padding: 0 259 | max_page_width: 0 260 | max_page_height: 0 261 | rename_patterns: "" 262 | -------------------------------------------------------------------------------- /assets/misc/sprites.atlas: -------------------------------------------------------------------------------- 1 | images { 2 | image: "/assets/texture/Cloud_1.png" 3 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 4 | } 5 | images { 6 | image: "/assets/texture/Cloud_2.png" 7 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 8 | } 9 | images { 10 | image: "/assets/texture/Cloud_3.png" 11 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 12 | } 13 | images { 14 | image: "/assets/texture/Cloud_4.png" 15 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 16 | } 17 | images { 18 | image: "/assets/texture/Cloud_bg_1.png" 19 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 20 | } 21 | images { 22 | image: "/assets/texture/Cloud_bg_2.png" 23 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 24 | } 25 | images { 26 | image: "/assets/texture/Cloud_bg_3.png" 27 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 28 | } 29 | images { 30 | image: "/assets/texture/Hills_1.png" 31 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 32 | } 33 | images { 34 | image: "/assets/texture/Hills_2.png" 35 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 36 | } 37 | images { 38 | image: "/assets/texture/Hills_3.png" 39 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 40 | } 41 | images { 42 | image: "/assets/texture/Hills_4.png" 43 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 44 | } 45 | images { 46 | image: "/assets/texture/Hills_5.png" 47 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 48 | } 49 | images { 50 | image: "/assets/texture/Hills_6.png" 51 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 52 | } 53 | images { 54 | image: "/assets/texture/Hills_7.png" 55 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 56 | } 57 | images { 58 | image: "/assets/texture/Hills_bg.png" 59 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 60 | } 61 | images { 62 | image: "/assets/texture/Hills_mid_1.png" 63 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 64 | } 65 | images { 66 | image: "/assets/texture/Hills_mid_2.png" 67 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 68 | } 69 | images { 70 | image: "/assets/texture/Hills_mid_3.png" 71 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 72 | } 73 | images { 74 | image: "/assets/texture/Hills_mid_4.png" 75 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 76 | } 77 | images { 78 | image: "/assets/texture/Hills_mid_5.png" 79 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 80 | } 81 | images { 82 | image: "/assets/texture/Plant_1.png" 83 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 84 | } 85 | images { 86 | image: "/assets/texture/Plant_2.png" 87 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 88 | } 89 | images { 90 | image: "/assets/texture/Plant_3.png" 91 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 92 | } 93 | images { 94 | image: "/assets/texture/Platform_1.png" 95 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 96 | } 97 | images { 98 | image: "/assets/texture/Platform_2.png" 99 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 100 | } 101 | images { 102 | image: "/assets/texture/Hills_wall.png" 103 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 104 | } 105 | images { 106 | image: "/assets/texture/bg_ground.png" 107 | sprite_trim_mode: SPRITE_TRIM_MODE_OFF 108 | } 109 | margin: 6 110 | extrude_borders: 2 111 | inner_padding: 0 112 | max_page_width: 0 113 | max_page_height: 0 114 | rename_patterns: "" 115 | -------------------------------------------------------------------------------- /assets/script/player.script: -------------------------------------------------------------------------------- 1 | -- Bopz character controls 2 | 3 | -- these are the tweaks for the mechanics, feel free to change them for a different feeling 4 | -- acceleration factor to use when air-borne 5 | local air_acceleration_factor = 0.8 6 | -- max speed right/left 7 | local max_speed = 230 8 | -- gravity pulling the player down in pixel units 9 | local gravity = -1900 10 | -- take-off speed when jumping in pixel units 11 | local jump_takeoff_speed = 1200 12 | -- hflip boolean for sprite facing left(true) or right(false) 13 | local flip = false 14 | -- max run speed 15 | local max_run_speed = 600 16 | 17 | -- pre-hashing ids improves performance 18 | local msg_contact_point_response = hash("contact_point_response") 19 | local msg_animation_done = hash("animation_done") 20 | local group_obstacle = hash("ground") 21 | local input_shift = hash("shift") 22 | local input_left = hash("left") 23 | local input_right = hash("right") 24 | local input_jump = hash("jump") 25 | local anim_walk = hash("walk") 26 | local anim_idle = hash("idle") 27 | local anim_jump = hash("jump") 28 | local anim_fall = hash("fall") 29 | local anim_run = hash("run") 30 | local url_shadow = hash("/shadow") 31 | local url_bopz = hash("/Bopz") 32 | 33 | function init(self) 34 | -- this lets us handle input in this script 35 | msg.post(".", "acquire_input_focus") 36 | 37 | -- initial player velocity 38 | self.velocity = vmath.vector3(0, 0, 0) 39 | -- support variable to keep track of collisions and separation 40 | self.correction = vmath.vector3() 41 | -- if the player stands on ground or not 42 | self.ground_contact = false 43 | -- the currently playing animation 44 | self.anim = nil 45 | -- Shift boolean 46 | self.shift_pressed = false 47 | 48 | end 49 | 50 | local function play_animation(self, anim) 51 | -- only play animations which are not already playing 52 | if self.anim ~= anim then 53 | -- tell the sprite to play the animation 54 | sprite.play_flipbook("#sprite", anim) 55 | -- remember which animation is playing 56 | self.anim = anim 57 | end 58 | end 59 | 60 | local function update_animations(self) 61 | -- make sure the right animation is playing 62 | if self.ground_contact then 63 | if self.velocity.x == 0 then 64 | play_animation(self, anim_idle) 65 | elseif self.velocity.x == max_speed or self.velocity.x == -max_speed then 66 | play_animation(self, anim_walk) 67 | else 68 | play_animation(self, anim_run) 69 | end 70 | else 71 | if self.velocity.y > 0 then 72 | play_animation(self, anim_jump) 73 | else 74 | play_animation(self, anim_fall) 75 | end 76 | end 77 | end 78 | 79 | function fixed_update(self, dt) 80 | local bopz_position = go.get_position(url_bopz) 81 | -- apply gravity 82 | self.velocity.y = self.velocity.y + gravity * dt 83 | 84 | -- move player 85 | if self.velocity == 0 then 86 | else 87 | local pos = go.get_position() 88 | pos = pos + self.velocity * dt 89 | go.set_position(pos) 90 | end 91 | 92 | -- update animations based on state (ground, air, move, idle and run) 93 | update_animations(self) 94 | -- reset volatile state 95 | self.correction = vmath.vector3() 96 | self.ground_contact = false 97 | self.wall_contact = false 98 | 99 | go.set_position(vmath.vector3(bopz_position.x, -273, 0), url_shadow) 100 | end 101 | 102 | -- https://defold.com/manuals/physics/#resolving-kinematic-collisions 103 | local function handle_obstacle_contact(self, normal, distance) 104 | if distance > 0 then 105 | -- First, project the accumulated correction onto 106 | -- the penetration vector 107 | local proj = vmath.project(self.correction, normal * distance) 108 | if proj < 1 then 109 | -- Only care for projections that does not overshoot. 110 | local comp = (distance - distance * proj) * normal 111 | -- Apply compensation 112 | go.set_position(go.get_position() + comp) 113 | -- Accumulate correction done 114 | self.correction = self.correction + comp 115 | end 116 | end 117 | 118 | -- collided with a wall 119 | -- stop horizontal movement 120 | if math.abs(normal.x) > 0.5 then 121 | self.wall_contact = true 122 | self.velocity.x = 0 123 | end 124 | -- collided with the ground 125 | -- stop vertical movement 126 | if normal.y > 0.5 then 127 | self.ground_contact = true 128 | self.velocity.y = 0 129 | end 130 | -- collided with the ceiling 131 | -- stop vertical movement 132 | if normal.y < -0.7 then 133 | self.velocity.y = 0 134 | end 135 | end 136 | 137 | function on_message(self, message_id, message, sender) 138 | -- check if we received a contact point message 139 | if message_id == msg_contact_point_response then 140 | -- check that the object is something we consider an obstacle 141 | if message.group == group_obstacle then 142 | handle_obstacle_contact(self, message.normal, message.distance) 143 | end 144 | end 145 | end 146 | 147 | local function jump(self) 148 | -- only allow jump from ground 149 | -- (extend this with a counter to do things like double-jumps) 150 | if self.ground_contact then 151 | -- set take-off speed 152 | self.velocity.y = jump_takeoff_speed 153 | -- play animation 154 | play_animation(self, anim_jump) 155 | self.ground_contact = false 156 | end 157 | end 158 | 159 | local function abort_jump(self) 160 | -- cut the jump short if we are still going up 161 | if self.velocity.y > 0 then 162 | -- scale down the upwards speed 163 | self.velocity.y = self.velocity.y * 0.5 164 | end 165 | end 166 | 167 | local function walk(self, direction) 168 | if self.ground_contact then 169 | self.velocity.x = max_speed * direction 170 | else 171 | -- move slower in the air 172 | self.velocity.x = max_speed * air_acceleration_factor * direction 173 | end 174 | end 175 | 176 | local function run(self, direction) 177 | if self.ground_contact then 178 | self.velocity.x = max_run_speed * direction 179 | else 180 | -- move slower in the air 181 | self.velocity.x = max_run_speed * air_acceleration_factor * direction 182 | end 183 | end 184 | 185 | local function flip_sprite(bool) 186 | --Use hflip to make sprite face the correct direction 187 | sprite.set_hflip("#sprite", bool) 188 | end 189 | 190 | function on_input(self, action_id, action) 191 | 192 | if action_id == input_shift and action.pressed then 193 | self.shift_pressed = true 194 | elseif action_id == input_shift and action.released then 195 | self.shift_pressed = false 196 | end 197 | 198 | if action_id == input_left then 199 | if not flip then -- face character left 200 | flip = true 201 | flip_sprite(flip) 202 | end 203 | if not self.shift_pressed then 204 | walk(self, -action.value) 205 | else 206 | run(self, -action.value) 207 | end 208 | elseif action_id == input_right then 209 | if flip then -- face character right 210 | flip = false 211 | flip_sprite(flip) 212 | end 213 | if not self.shift_pressed then 214 | walk(self, action.value) 215 | else 216 | run(self, action.value) 217 | end 218 | elseif action_id == input_jump then 219 | if action.pressed then 220 | jump(self) 221 | elseif action.released then 222 | abort_jump(self) 223 | elseif action.released then 224 | walk(self, action.value) 225 | end 226 | end 227 | end 228 | 229 | 230 | -------------------------------------------------------------------------------- /assets/script/scene_manage.script: -------------------------------------------------------------------------------- 1 | --// Cloud , Window , Camera ; management // 2 | 3 | local fg_cloud1_dur = 90 4 | local fg_cloud2_dur = 160 5 | local fg_cloud3_dur = 220 6 | local bg_cloud1_dur = 200 7 | local bg_cloud2_dur = 340 8 | local bg_cloud3_dur = 500 9 | 10 | local fg_clouds_1 = hash("/group_1") 11 | local fg_clouds_2 = hash("/group_2") 12 | local fg_clouds_3 = hash("/group_3") 13 | local bg_clouds_1 = hash("/group_4") 14 | local bg_clouds_2 = hash("/group_5") 15 | local bg_clouds_3 = hash("/group_6") 16 | 17 | local reset_pos = vmath.vector3(7500, 0, 0) 18 | local target_pos = vmath.vector3(-6200, 0, 0) 19 | local cam = "/cam_pivot#camera" 20 | 21 | local function cloud_init(self) 22 | 23 | go.animate(fg_clouds_1,"position.x", go.PLAYBACK_ONCE_FORWARD, target_pos.x , go.EASING_LINEAR, fg_cloud1_dur) 24 | go.animate(fg_clouds_2,"position.x", go.PLAYBACK_ONCE_FORWARD, target_pos.x , go.EASING_LINEAR, fg_cloud2_dur) 25 | go.animate(fg_clouds_3,"position.x", go.PLAYBACK_ONCE_FORWARD, target_pos.x , go.EASING_LINEAR, fg_cloud3_dur) 26 | go.animate(bg_clouds_1,"position.x", go.PLAYBACK_ONCE_FORWARD, target_pos.x , go.EASING_LINEAR, bg_cloud1_dur) 27 | go.animate(bg_clouds_2,"position.x", go.PLAYBACK_ONCE_FORWARD, target_pos.x , go.EASING_LINEAR, bg_cloud2_dur) 28 | go.animate(bg_clouds_3,"position.x", go.PLAYBACK_ONCE_FORWARD, target_pos.x , go.EASING_LINEAR, bg_cloud3_dur) 29 | 30 | end 31 | 32 | local function animate_clouds(url,duration) 33 | 34 | go.set_position(reset_pos, url) 35 | go.animate(url,"position.x", go.PLAYBACK_ONCE_FORWARD, target_pos.x , go.EASING_LINEAR, duration) 36 | 37 | end 38 | 39 | function init(self) 40 | 41 | msg.post("@render:", "clear_color", { color = vmath.vector4(0.59, 0.82, 1.0, 1) }) -- Set Clear Color RGBA(Background color) 42 | msg.post("@render:", "use_camera_projection") -- set camera projection in render script 43 | msg.post(cam, "acquire_camera_focus") -- set camera to active slot on renderer 44 | 45 | -- start moving clouds 46 | cloud_init(self) 47 | 48 | -- this sets window event listener for window focus & resize changes. 49 | window.set_listener(window_callback) 50 | 51 | end 52 | 53 | function on_message(self, message_id, message, sender) 54 | if message_id == hash("trigger_response") then 55 | if message.enter then 56 | if message.other_id == fg_clouds_1 then 57 | animate_clouds(message.other_id, fg_cloud1_dur + 100) 58 | elseif message.other_id == fg_clouds_2 then 59 | animate_clouds(message.other_id, fg_cloud1_dur + 100) 60 | elseif message.other_id == fg_clouds_3 then 61 | animate_clouds(message.other_id, fg_cloud1_dur + 100) 62 | elseif message.other_id == bg_clouds_1 then 63 | animate_clouds(message.other_id, bg_cloud1_dur + 200) 64 | elseif message.other_id == bg_clouds_2 then 65 | animate_clouds(message.other_id, bg_cloud1_dur + 200) 66 | elseif message.other_id == bg_clouds_3 then 67 | animate_clouds(message.other_id, bg_cloud1_dur + 200) 68 | end 69 | end 70 | end 71 | end 72 | 73 | function window_callback(self, event, data) 74 | 75 | if event == window.WINDOW_EVENT_FOCUS_LOST then -- stop player input 76 | window_event_flag = true 77 | msg.post(".", "release_input_focus") 78 | elseif event == window.WINDOW_EVENT_FOCUS_GAINED then -- reset player input 79 | window_event_flag = false 80 | msg.post(".", "acquire_input_focus") 81 | end 82 | 83 | end -------------------------------------------------------------------------------- /assets/texture/Cloud_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Cloud_1.png -------------------------------------------------------------------------------- /assets/texture/Cloud_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Cloud_2.png -------------------------------------------------------------------------------- /assets/texture/Cloud_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Cloud_3.png -------------------------------------------------------------------------------- /assets/texture/Cloud_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Cloud_4.png -------------------------------------------------------------------------------- /assets/texture/Cloud_bg_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Cloud_bg_1.png -------------------------------------------------------------------------------- /assets/texture/Cloud_bg_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Cloud_bg_2.png -------------------------------------------------------------------------------- /assets/texture/Cloud_bg_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Cloud_bg_3.png -------------------------------------------------------------------------------- /assets/texture/Hills_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Hills_1.png -------------------------------------------------------------------------------- /assets/texture/Hills_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Hills_2.png -------------------------------------------------------------------------------- /assets/texture/Hills_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Hills_3.png -------------------------------------------------------------------------------- /assets/texture/Hills_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Hills_4.png -------------------------------------------------------------------------------- /assets/texture/Hills_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Hills_5.png -------------------------------------------------------------------------------- /assets/texture/Hills_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Hills_6.png -------------------------------------------------------------------------------- /assets/texture/Hills_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Hills_7.png -------------------------------------------------------------------------------- /assets/texture/Hills_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Hills_bg.png -------------------------------------------------------------------------------- /assets/texture/Hills_mid_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Hills_mid_1.png -------------------------------------------------------------------------------- /assets/texture/Hills_mid_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Hills_mid_2.png -------------------------------------------------------------------------------- /assets/texture/Hills_mid_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Hills_mid_3.png -------------------------------------------------------------------------------- /assets/texture/Hills_mid_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Hills_mid_4.png -------------------------------------------------------------------------------- /assets/texture/Hills_mid_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Hills_mid_5.png -------------------------------------------------------------------------------- /assets/texture/Hills_wall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Hills_wall.png -------------------------------------------------------------------------------- /assets/texture/Plant_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Plant_1.png -------------------------------------------------------------------------------- /assets/texture/Plant_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Plant_2.png -------------------------------------------------------------------------------- /assets/texture/Plant_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Plant_3.png -------------------------------------------------------------------------------- /assets/texture/Platform_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Platform_1.png -------------------------------------------------------------------------------- /assets/texture/Platform_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/Platform_2.png -------------------------------------------------------------------------------- /assets/texture/bg_ground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/bg_ground.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_idle_ 001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_idle_ 001.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_idle_ 002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_idle_ 002.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_idle_ 003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_idle_ 003.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_idle_ 004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_idle_ 004.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_idle_ 005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_idle_ 005.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_idle_ 006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_idle_ 006.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_idle_ 007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_idle_ 007.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_idle_ 008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_idle_ 008.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_idle_ 009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_idle_ 009.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_idle_ 010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_idle_ 010.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_idle_ 011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_idle_ 011.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_idle_ 012.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_idle_ 012.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_idle_ 013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_idle_ 013.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_idle_ 014.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_idle_ 014.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_idle_ 015.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_idle_ 015.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_idle_ 016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_idle_ 016.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_jump_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_jump_01.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_jump_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_jump_02.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_jump_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_jump_03.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_jump_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_jump_04.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_jump_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_jump_05.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_run_001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_run_001.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_run_002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_run_002.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_run_003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_run_003.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_run_004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_run_004.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_run_005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_run_005.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_run_006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_run_006.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_run_007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_run_007.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_run_008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_run_008.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_run_009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_run_009.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_run_010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_run_010.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_run_011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_run_011.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_run_012.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_run_012.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_run_013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_run_013.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_run_014.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_run_014.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_run_015.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_run_015.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_run_016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_run_016.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_walk_001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_walk_001.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_walk_002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_walk_002.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_walk_003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_walk_003.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_walk_004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_walk_004.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_walk_005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_walk_005.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_walk_006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_walk_006.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_walk_007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_walk_007.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_walk_008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_walk_008.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_walk_009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_walk_009.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_walk_010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_walk_010.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_walk_011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_walk_011.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_walk_012.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_walk_012.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_walk_013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_walk_013.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_walk_014.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_walk_014.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_walk_015.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_walk_015.png -------------------------------------------------------------------------------- /assets/texture/character/bopz_walk_016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/bopz_walk_016.png -------------------------------------------------------------------------------- /assets/texture/character/shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlexYourBrain/sample-perspective_parallax/01e0b7b0cf2dafb694a9e018394cbccc014a4669/assets/texture/character/shadow.png -------------------------------------------------------------------------------- /game.project: -------------------------------------------------------------------------------- 1 | [bootstrap] 2 | main_collection = /main/main.collectionc 3 | render = /render/3D.renderc 4 | 5 | [script] 6 | shared_state = 1 7 | 8 | [display] 9 | width = 1280 10 | height = 800 11 | samples = 2 12 | update_frequency = 60 13 | vsync = 1 14 | 15 | [android] 16 | input_method = HiddenInputField 17 | package = com.defold.example.basic3d 18 | 19 | [project] 20 | dependencies = 21 | title = Perspective Camera Parallax-Sample 22 | 23 | [physics] 24 | type = 2D 25 | allow_dynamic_transforms = 0 26 | use_fixed_timestep = 1 27 | 28 | [osx] 29 | bundle_identifier = com.defold.example.basic3d 30 | 31 | [ios] 32 | bundle_identifier = com.defold.example.basic3d 33 | 34 | [graphics] 35 | verify_graphics_calls = 0 36 | 37 | [html5] 38 | cssfile = /builtins/manifests/web/dark_theme.css 39 | show_made_with_defold = 0 40 | 41 | [sprite] 42 | max_count = 256 43 | 44 | -------------------------------------------------------------------------------- /input/game.input_binding: -------------------------------------------------------------------------------- 1 | key_trigger { 2 | input: KEY_LEFT 3 | action: "left" 4 | } 5 | key_trigger { 6 | input: KEY_RIGHT 7 | action: "right" 8 | } 9 | key_trigger { 10 | input: KEY_SPACE 11 | action: "jump" 12 | } 13 | key_trigger { 14 | input: KEY_A 15 | action: "left" 16 | } 17 | key_trigger { 18 | input: KEY_D 19 | action: "right" 20 | } 21 | key_trigger { 22 | input: KEY_LSHIFT 23 | action: "shift" 24 | } 25 | mouse_trigger { 26 | input: MOUSE_BUTTON_1 27 | action: "touch" 28 | } 29 | -------------------------------------------------------------------------------- /main/main.collection: -------------------------------------------------------------------------------- 1 | name: "main" 2 | scale_along_z: 0 3 | embedded_instances { 4 | id: "Bopz" 5 | children: "camera" 6 | data: "components {\n" 7 | " id: \"player\"\n" 8 | " component: \"/assets/script/player.script\"\n" 9 | " position {\n" 10 | " x: 0.0\n" 11 | " y: 0.0\n" 12 | " z: 0.0\n" 13 | " }\n" 14 | " rotation {\n" 15 | " x: 0.0\n" 16 | " y: 0.0\n" 17 | " z: 0.0\n" 18 | " w: 1.0\n" 19 | " }\n" 20 | " property_decls {\n" 21 | " }\n" 22 | "}\n" 23 | "embedded_components {\n" 24 | " id: \"collisionobject\"\n" 25 | " type: \"collisionobject\"\n" 26 | " data: \"collision_shape: \\\"\\\"\\n" 27 | "type: COLLISION_OBJECT_TYPE_KINEMATIC\\n" 28 | "mass: 0.0\\n" 29 | "friction: 0.0\\n" 30 | "restitution: 0.0\\n" 31 | "group: \\\"player\\\"\\n" 32 | "mask: \\\"ground\\\"\\n" 33 | "embedded_collision_shape {\\n" 34 | " shapes {\\n" 35 | " shape_type: TYPE_SPHERE\\n" 36 | " position {\\n" 37 | " x: 0.0\\n" 38 | " y: -61.0\\n" 39 | " z: 0.0\\n" 40 | " }\\n" 41 | " rotation {\\n" 42 | " x: 0.0\\n" 43 | " y: 0.0\\n" 44 | " z: 0.0\\n" 45 | " w: 1.0\\n" 46 | " }\\n" 47 | " index: 0\\n" 48 | " count: 1\\n" 49 | " }\\n" 50 | " data: 45.0\\n" 51 | "}\\n" 52 | "linear_damping: 0.0\\n" 53 | "angular_damping: 0.0\\n" 54 | "locked_rotation: true\\n" 55 | "bullet: false\\n" 56 | "\"\n" 57 | " position {\n" 58 | " x: 0.0\n" 59 | " y: 0.0\n" 60 | " z: 0.0\n" 61 | " }\n" 62 | " rotation {\n" 63 | " x: 0.0\n" 64 | " y: 0.0\n" 65 | " z: 0.0\n" 66 | " w: 1.0\n" 67 | " }\n" 68 | "}\n" 69 | "embedded_components {\n" 70 | " id: \"sprite\"\n" 71 | " type: \"sprite\"\n" 72 | " data: \"tile_set: \\\"/assets/misc/character.atlas\\\"\\n" 73 | "default_animation: \\\"idle\\\"\\n" 74 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 75 | "blend_mode: BLEND_MODE_ALPHA\\n" 76 | "\"\n" 77 | " position {\n" 78 | " x: 0.0\n" 79 | " y: 0.0\n" 80 | " z: 0.1\n" 81 | " }\n" 82 | " rotation {\n" 83 | " x: 0.0\n" 84 | " y: 0.0\n" 85 | " z: 0.0\n" 86 | " w: 1.0\n" 87 | " }\n" 88 | "}\n" 89 | "" 90 | position { 91 | x: 0.0 92 | y: -13.0 93 | z: 0.35 94 | } 95 | rotation { 96 | x: 0.0 97 | y: 0.0 98 | z: 0.0 99 | w: 1.0 100 | } 101 | scale3 { 102 | x: 1.0 103 | y: 1.0 104 | z: 1.0 105 | } 106 | } 107 | embedded_instances { 108 | id: "camera" 109 | children: "cam_pivot" 110 | data: "" 111 | position { 112 | x: 0.0 113 | y: 158.0 114 | z: 0.0 115 | } 116 | rotation { 117 | x: 0.0 118 | y: 0.0 119 | z: 0.0 120 | w: 1.0 121 | } 122 | scale3 { 123 | x: 1.0 124 | y: 1.0 125 | z: 1.0 126 | } 127 | } 128 | embedded_instances { 129 | id: "cam_pivot" 130 | data: "embedded_components {\n" 131 | " id: \"camera\"\n" 132 | " type: \"camera\"\n" 133 | " data: \"aspect_ratio: 1.0\\n" 134 | "fov: 0.7854\\n" 135 | "near_z: 0.1\\n" 136 | "far_z: 3250.0\\n" 137 | "auto_aspect_ratio: 1\\n" 138 | "orthographic_projection: 0\\n" 139 | "orthographic_zoom: 1.0\\n" 140 | "\"\n" 141 | " position {\n" 142 | " x: 0.0\n" 143 | " y: 0.0\n" 144 | " z: 0.0\n" 145 | " }\n" 146 | " rotation {\n" 147 | " x: 0.0\n" 148 | " y: 0.0\n" 149 | " z: 0.0\n" 150 | " w: 1.0\n" 151 | " }\n" 152 | "}\n" 153 | "" 154 | position { 155 | x: 0.0 156 | y: 0.0 157 | z: 1000.0 158 | } 159 | rotation { 160 | x: 0.0 161 | y: 0.0 162 | z: 0.0 163 | w: 1.0 164 | } 165 | scale3 { 166 | x: 1.0 167 | y: 1.0 168 | z: 1.0 169 | } 170 | } 171 | embedded_instances { 172 | id: "shadow" 173 | data: "embedded_components {\n" 174 | " id: \"sprite\"\n" 175 | " type: \"sprite\"\n" 176 | " data: \"tile_set: \\\"/assets/misc/character.atlas\\\"\\n" 177 | "default_animation: \\\"shadow\\\"\\n" 178 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 179 | "blend_mode: BLEND_MODE_ALPHA\\n" 180 | "\"\n" 181 | " position {\n" 182 | " x: 0.0\n" 183 | " y: 0.0\n" 184 | " z: 0.0\n" 185 | " }\n" 186 | " rotation {\n" 187 | " x: 0.0\n" 188 | " y: 0.0\n" 189 | " z: 0.0\n" 190 | " w: 1.0\n" 191 | " }\n" 192 | "}\n" 193 | "" 194 | position { 195 | x: 0.0 196 | y: -273.0 197 | z: 0.0 198 | } 199 | rotation { 200 | x: 0.0 201 | y: 0.0 202 | z: 0.0 203 | w: 1.0 204 | } 205 | scale3 { 206 | x: 1.0 207 | y: 1.0 208 | z: 1.0 209 | } 210 | } 211 | embedded_instances { 212 | id: "scene" 213 | children: "clouds" 214 | children: "clouds_bg" 215 | children: "ground" 216 | children: "hills_bg" 217 | children: "hills_forground" 218 | children: "hills_mid" 219 | children: "plants" 220 | children: "platforms" 221 | children: "reciever" 222 | data: "" 223 | position { 224 | x: 0.0 225 | y: 0.0 226 | z: 0.0 227 | } 228 | rotation { 229 | x: 0.0 230 | y: 0.0 231 | z: 0.0 232 | w: 1.0 233 | } 234 | scale3 { 235 | x: 1.0 236 | y: 1.0 237 | z: 1.0 238 | } 239 | } 240 | embedded_instances { 241 | id: "clouds" 242 | children: "group_1" 243 | children: "group_2" 244 | children: "group_3" 245 | data: "" 246 | position { 247 | x: 0.0 248 | y: 0.0 249 | z: -335.0 250 | } 251 | rotation { 252 | x: 0.0 253 | y: 0.0 254 | z: 0.0 255 | w: 1.0 256 | } 257 | scale3 { 258 | x: 1.0 259 | y: 1.0 260 | z: 1.0 261 | } 262 | } 263 | embedded_instances { 264 | id: "clouds_bg" 265 | children: "group_4" 266 | children: "group_5" 267 | children: "group_6" 268 | data: "" 269 | position { 270 | x: 461.0 271 | y: 148.0 272 | z: -949.0 273 | } 274 | rotation { 275 | x: 0.0 276 | y: 0.0 277 | z: 0.0 278 | w: 1.0 279 | } 280 | scale3 { 281 | x: 1.0 282 | y: 1.0 283 | z: 1.0 284 | } 285 | } 286 | embedded_instances { 287 | id: "ground" 288 | data: "embedded_components {\n" 289 | " id: \"sprite\"\n" 290 | " type: \"sprite\"\n" 291 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 292 | "default_animation: \\\"bg_ground\\\"\\n" 293 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 294 | "blend_mode: BLEND_MODE_ALPHA\\n" 295 | "\"\n" 296 | " position {\n" 297 | " x: 0.0\n" 298 | " y: 0.0\n" 299 | " z: 0.0\n" 300 | " }\n" 301 | " rotation {\n" 302 | " x: 0.0\n" 303 | " y: 0.0\n" 304 | " z: 0.0\n" 305 | " w: 1.0\n" 306 | " }\n" 307 | "}\n" 308 | "embedded_components {\n" 309 | " id: \"sprite1\"\n" 310 | " type: \"sprite\"\n" 311 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 312 | "default_animation: \\\"bg_ground\\\"\\n" 313 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 314 | "blend_mode: BLEND_MODE_ALPHA\\n" 315 | "\"\n" 316 | " position {\n" 317 | " x: 1213.0\n" 318 | " y: 0.0\n" 319 | " z: 0.0\n" 320 | " }\n" 321 | " rotation {\n" 322 | " x: 0.0\n" 323 | " y: 0.0\n" 324 | " z: 0.0\n" 325 | " w: 1.0\n" 326 | " }\n" 327 | "}\n" 328 | "embedded_components {\n" 329 | " id: \"sprite2\"\n" 330 | " type: \"sprite\"\n" 331 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 332 | "default_animation: \\\"bg_ground\\\"\\n" 333 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 334 | "blend_mode: BLEND_MODE_ALPHA\\n" 335 | "\"\n" 336 | " position {\n" 337 | " x: 2426.0\n" 338 | " y: 0.0\n" 339 | " z: 0.0\n" 340 | " }\n" 341 | " rotation {\n" 342 | " x: 0.0\n" 343 | " y: 0.0\n" 344 | " z: 0.0\n" 345 | " w: 1.0\n" 346 | " }\n" 347 | "}\n" 348 | "embedded_components {\n" 349 | " id: \"sprite3\"\n" 350 | " type: \"sprite\"\n" 351 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 352 | "default_animation: \\\"bg_ground\\\"\\n" 353 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 354 | "blend_mode: BLEND_MODE_ALPHA\\n" 355 | "\"\n" 356 | " position {\n" 357 | " x: 3639.0\n" 358 | " y: 0.0\n" 359 | " z: 0.0\n" 360 | " }\n" 361 | " rotation {\n" 362 | " x: 0.0\n" 363 | " y: 0.0\n" 364 | " z: 0.0\n" 365 | " w: 1.0\n" 366 | " }\n" 367 | "}\n" 368 | "embedded_components {\n" 369 | " id: \"sprite4\"\n" 370 | " type: \"sprite\"\n" 371 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 372 | "default_animation: \\\"bg_ground\\\"\\n" 373 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 374 | "blend_mode: BLEND_MODE_ALPHA\\n" 375 | "\"\n" 376 | " position {\n" 377 | " x: 4852.0\n" 378 | " y: 0.0\n" 379 | " z: 0.0\n" 380 | " }\n" 381 | " rotation {\n" 382 | " x: 0.0\n" 383 | " y: 0.0\n" 384 | " z: 0.0\n" 385 | " w: 1.0\n" 386 | " }\n" 387 | "}\n" 388 | "embedded_components {\n" 389 | " id: \"sprite5\"\n" 390 | " type: \"sprite\"\n" 391 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 392 | "default_animation: \\\"bg_ground\\\"\\n" 393 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 394 | "blend_mode: BLEND_MODE_ALPHA\\n" 395 | "\"\n" 396 | " position {\n" 397 | " x: 6064.0\n" 398 | " y: 0.0\n" 399 | " z: 0.0\n" 400 | " }\n" 401 | " rotation {\n" 402 | " x: 0.0\n" 403 | " y: 0.0\n" 404 | " z: 0.0\n" 405 | " w: 1.0\n" 406 | " }\n" 407 | "}\n" 408 | "embedded_components {\n" 409 | " id: \"sprite6\"\n" 410 | " type: \"sprite\"\n" 411 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 412 | "default_animation: \\\"bg_ground\\\"\\n" 413 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 414 | "blend_mode: BLEND_MODE_ALPHA\\n" 415 | "\"\n" 416 | " position {\n" 417 | " x: 7277.0\n" 418 | " y: 0.0\n" 419 | " z: 0.0\n" 420 | " }\n" 421 | " rotation {\n" 422 | " x: 0.0\n" 423 | " y: 0.0\n" 424 | " z: 0.0\n" 425 | " w: 1.0\n" 426 | " }\n" 427 | "}\n" 428 | "" 429 | position { 430 | x: -1141.0 431 | y: -350.0 432 | z: -661.0 433 | } 434 | rotation { 435 | x: 0.0 436 | y: 0.0 437 | z: 0.0 438 | w: 1.0 439 | } 440 | scale3 { 441 | x: 1.0 442 | y: 1.0 443 | z: 1.0 444 | } 445 | } 446 | embedded_instances { 447 | id: "hills_bg" 448 | data: "embedded_components {\n" 449 | " id: \"sprite\"\n" 450 | " type: \"sprite\"\n" 451 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 452 | "default_animation: \\\"Hills_bg\\\"\\n" 453 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 454 | "blend_mode: BLEND_MODE_ALPHA\\n" 455 | "\"\n" 456 | " position {\n" 457 | " x: 0.0\n" 458 | " y: 0.0\n" 459 | " z: 0.0\n" 460 | " }\n" 461 | " rotation {\n" 462 | " x: 0.0\n" 463 | " y: 0.0\n" 464 | " z: 0.0\n" 465 | " w: 1.0\n" 466 | " }\n" 467 | "}\n" 468 | "embedded_components {\n" 469 | " id: \"sprite1\"\n" 470 | " type: \"sprite\"\n" 471 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 472 | "default_animation: \\\"Hills_bg\\\"\\n" 473 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 474 | "blend_mode: BLEND_MODE_ALPHA\\n" 475 | "\"\n" 476 | " position {\n" 477 | " x: -844.5\n" 478 | " y: 0.0\n" 479 | " z: -152.0\n" 480 | " }\n" 481 | " rotation {\n" 482 | " x: 0.0\n" 483 | " y: 0.0\n" 484 | " z: 0.0\n" 485 | " w: 1.0\n" 486 | " }\n" 487 | "}\n" 488 | "embedded_components {\n" 489 | " id: \"sprite2\"\n" 490 | " type: \"sprite\"\n" 491 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 492 | "default_animation: \\\"Hills_bg\\\"\\n" 493 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 494 | "blend_mode: BLEND_MODE_ALPHA\\n" 495 | "\"\n" 496 | " position {\n" 497 | " x: 754.0\n" 498 | " y: 0.0\n" 499 | " z: -121.0\n" 500 | " }\n" 501 | " rotation {\n" 502 | " x: 0.0\n" 503 | " y: 0.0\n" 504 | " z: 0.0\n" 505 | " w: 1.0\n" 506 | " }\n" 507 | "}\n" 508 | "embedded_components {\n" 509 | " id: \"sprite3\"\n" 510 | " type: \"sprite\"\n" 511 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 512 | "default_animation: \\\"Hills_bg\\\"\\n" 513 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 514 | "blend_mode: BLEND_MODE_ALPHA\\n" 515 | "\"\n" 516 | " position {\n" 517 | " x: 1566.0\n" 518 | " y: 0.0\n" 519 | " z: 0.0\n" 520 | " }\n" 521 | " rotation {\n" 522 | " x: 0.0\n" 523 | " y: 0.0\n" 524 | " z: 0.0\n" 525 | " w: 1.0\n" 526 | " }\n" 527 | "}\n" 528 | "embedded_components {\n" 529 | " id: \"sprite4\"\n" 530 | " type: \"sprite\"\n" 531 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 532 | "default_animation: \\\"Hills_bg\\\"\\n" 533 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 534 | "blend_mode: BLEND_MODE_ALPHA\\n" 535 | "\"\n" 536 | " position {\n" 537 | " x: 2157.5\n" 538 | " y: 0.0\n" 539 | " z: -225.0\n" 540 | " }\n" 541 | " rotation {\n" 542 | " x: 0.0\n" 543 | " y: 0.0\n" 544 | " z: 0.0\n" 545 | " w: 1.0\n" 546 | " }\n" 547 | "}\n" 548 | "embedded_components {\n" 549 | " id: \"sprite5\"\n" 550 | " type: \"sprite\"\n" 551 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 552 | "default_animation: \\\"Hills_bg\\\"\\n" 553 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 554 | "blend_mode: BLEND_MODE_ALPHA\\n" 555 | "\"\n" 556 | " position {\n" 557 | " x: -1652.5\n" 558 | " y: 0.0\n" 559 | " z: -341.0\n" 560 | " }\n" 561 | " rotation {\n" 562 | " x: 0.0\n" 563 | " y: 0.0\n" 564 | " z: 0.0\n" 565 | " w: 1.0\n" 566 | " }\n" 567 | "}\n" 568 | "" 569 | position { 570 | x: 1189.0 571 | y: 0.0 572 | z: -1104.0 573 | } 574 | rotation { 575 | x: 0.0 576 | y: 0.0 577 | z: 0.0 578 | w: 1.0 579 | } 580 | scale3 { 581 | x: 2.0 582 | y: 2.0 583 | z: 1.0 584 | } 585 | } 586 | embedded_instances { 587 | id: "hills_forground" 588 | data: "embedded_components {\n" 589 | " id: \"sprite\"\n" 590 | " type: \"sprite\"\n" 591 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 592 | "default_animation: \\\"Hills_1\\\"\\n" 593 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 594 | "blend_mode: BLEND_MODE_ALPHA\\n" 595 | "\"\n" 596 | " position {\n" 597 | " x: 0.0\n" 598 | " y: -80.0\n" 599 | " z: 0.0\n" 600 | " }\n" 601 | " rotation {\n" 602 | " x: 0.0\n" 603 | " y: 0.0\n" 604 | " z: 0.0\n" 605 | " w: 1.0\n" 606 | " }\n" 607 | "}\n" 608 | "embedded_components {\n" 609 | " id: \"sprite1\"\n" 610 | " type: \"sprite\"\n" 611 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 612 | "default_animation: \\\"Hills_2\\\"\\n" 613 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 614 | "blend_mode: BLEND_MODE_ALPHA\\n" 615 | "\"\n" 616 | " position {\n" 617 | " x: 325.0\n" 618 | " y: -164.0\n" 619 | " z: -43.0\n" 620 | " }\n" 621 | " rotation {\n" 622 | " x: 0.0\n" 623 | " y: 0.0\n" 624 | " z: 0.0\n" 625 | " w: 1.0\n" 626 | " }\n" 627 | "}\n" 628 | "embedded_components {\n" 629 | " id: \"sprite2\"\n" 630 | " type: \"sprite\"\n" 631 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 632 | "default_animation: \\\"Hills_1\\\"\\n" 633 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 634 | "blend_mode: BLEND_MODE_ALPHA\\n" 635 | "\"\n" 636 | " position {\n" 637 | " x: -775.0\n" 638 | " y: -75.0\n" 639 | " z: -7.0\n" 640 | " }\n" 641 | " rotation {\n" 642 | " x: 0.0\n" 643 | " y: 0.0\n" 644 | " z: 0.0\n" 645 | " w: 1.0\n" 646 | " }\n" 647 | "}\n" 648 | "embedded_components {\n" 649 | " id: \"sprite3\"\n" 650 | " type: \"sprite\"\n" 651 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 652 | "default_animation: \\\"Hills_2\\\"\\n" 653 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 654 | "blend_mode: BLEND_MODE_ALPHA\\n" 655 | "\"\n" 656 | " position {\n" 657 | " x: 1419.0\n" 658 | " y: -152.0\n" 659 | " z: 0.0\n" 660 | " }\n" 661 | " rotation {\n" 662 | " x: 0.0\n" 663 | " y: 0.0\n" 664 | " z: 0.0\n" 665 | " w: 1.0\n" 666 | " }\n" 667 | "}\n" 668 | "embedded_components {\n" 669 | " id: \"sprite4\"\n" 670 | " type: \"sprite\"\n" 671 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 672 | "default_animation: \\\"Hills_3\\\"\\n" 673 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 674 | "blend_mode: BLEND_MODE_ALPHA\\n" 675 | "\"\n" 676 | " position {\n" 677 | " x: -301.0\n" 678 | " y: -186.0\n" 679 | " z: 116.0\n" 680 | " }\n" 681 | " rotation {\n" 682 | " x: 0.0\n" 683 | " y: 0.0\n" 684 | " z: 0.0\n" 685 | " w: 1.0\n" 686 | " }\n" 687 | "}\n" 688 | "embedded_components {\n" 689 | " id: \"sprite5\"\n" 690 | " type: \"sprite\"\n" 691 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 692 | "default_animation: \\\"Hills_4\\\"\\n" 693 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 694 | "blend_mode: BLEND_MODE_ALPHA\\n" 695 | "\"\n" 696 | " position {\n" 697 | " x: 474.0\n" 698 | " y: -123.0\n" 699 | " z: 55.0\n" 700 | " }\n" 701 | " rotation {\n" 702 | " x: 0.0\n" 703 | " y: 0.0\n" 704 | " z: 0.0\n" 705 | " w: 1.0\n" 706 | " }\n" 707 | "}\n" 708 | "embedded_components {\n" 709 | " id: \"sprite6\"\n" 710 | " type: \"sprite\"\n" 711 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 712 | "default_animation: \\\"Hills_5\\\"\\n" 713 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 714 | "blend_mode: BLEND_MODE_ALPHA\\n" 715 | "\"\n" 716 | " position {\n" 717 | " x: 710.0\n" 718 | " y: -168.0\n" 719 | " z: 15.0\n" 720 | " }\n" 721 | " rotation {\n" 722 | " x: 0.0\n" 723 | " y: 0.0\n" 724 | " z: 0.0\n" 725 | " w: 1.0\n" 726 | " }\n" 727 | "}\n" 728 | "embedded_components {\n" 729 | " id: \"sprite7\"\n" 730 | " type: \"sprite\"\n" 731 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 732 | "default_animation: \\\"Hills_7\\\"\\n" 733 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 734 | "blend_mode: BLEND_MODE_ALPHA\\n" 735 | "\"\n" 736 | " position {\n" 737 | " x: -429.0\n" 738 | " y: -200.0\n" 739 | " z: 28.0\n" 740 | " }\n" 741 | " rotation {\n" 742 | " x: 0.0\n" 743 | " y: 0.0\n" 744 | " z: 0.0\n" 745 | " w: 1.0\n" 746 | " }\n" 747 | "}\n" 748 | "embedded_components {\n" 749 | " id: \"sprite8\"\n" 750 | " type: \"sprite\"\n" 751 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 752 | "default_animation: \\\"Hills_1\\\"\\n" 753 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 754 | "blend_mode: BLEND_MODE_ALPHA\\n" 755 | "\"\n" 756 | " position {\n" 757 | " x: 1185.0\n" 758 | " y: -80.0\n" 759 | " z: 62.0\n" 760 | " }\n" 761 | " rotation {\n" 762 | " x: 0.0\n" 763 | " y: 0.0\n" 764 | " z: 0.0\n" 765 | " w: 1.0\n" 766 | " }\n" 767 | "}\n" 768 | "embedded_components {\n" 769 | " id: \"sprite9\"\n" 770 | " type: \"sprite\"\n" 771 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 772 | "default_animation: \\\"Hills_2\\\"\\n" 773 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 774 | "blend_mode: BLEND_MODE_ALPHA\\n" 775 | "\"\n" 776 | " position {\n" 777 | " x: 857.0\n" 778 | " y: -164.0\n" 779 | " z: -60.0\n" 780 | " }\n" 781 | " rotation {\n" 782 | " x: 0.0\n" 783 | " y: 0.0\n" 784 | " z: 0.0\n" 785 | " w: 1.0\n" 786 | " }\n" 787 | "}\n" 788 | "embedded_components {\n" 789 | " id: \"sprite10\"\n" 790 | " type: \"sprite\"\n" 791 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 792 | "default_animation: \\\"Hills_7\\\"\\n" 793 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 794 | "blend_mode: BLEND_MODE_ALPHA\\n" 795 | "\"\n" 796 | " position {\n" 797 | " x: 640.0\n" 798 | " y: -200.0\n" 799 | " z: 56.0\n" 800 | " }\n" 801 | " rotation {\n" 802 | " x: 0.0\n" 803 | " y: 0.0\n" 804 | " z: 0.0\n" 805 | " w: 1.0\n" 806 | " }\n" 807 | "}\n" 808 | "embedded_components {\n" 809 | " id: \"sprite11\"\n" 810 | " type: \"sprite\"\n" 811 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 812 | "default_animation: \\\"Hills_3\\\"\\n" 813 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 814 | "blend_mode: BLEND_MODE_ALPHA\\n" 815 | "\"\n" 816 | " position {\n" 817 | " x: 945.0\n" 818 | " y: -186.0\n" 819 | " z: 36.0\n" 820 | " }\n" 821 | " rotation {\n" 822 | " x: 0.0\n" 823 | " y: 0.0\n" 824 | " z: 0.0\n" 825 | " w: 1.0\n" 826 | " }\n" 827 | "}\n" 828 | "embedded_components {\n" 829 | " id: \"sprite12\"\n" 830 | " type: \"sprite\"\n" 831 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 832 | "default_animation: \\\"Hills_7\\\"\\n" 833 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 834 | "blend_mode: BLEND_MODE_ALPHA\\n" 835 | "\"\n" 836 | " position {\n" 837 | " x: 1562.0\n" 838 | " y: -200.0\n" 839 | " z: 56.0\n" 840 | " }\n" 841 | " rotation {\n" 842 | " x: 0.0\n" 843 | " y: 0.0\n" 844 | " z: 0.0\n" 845 | " w: 1.0\n" 846 | " }\n" 847 | "}\n" 848 | "embedded_components {\n" 849 | " id: \"sprite13\"\n" 850 | " type: \"sprite\"\n" 851 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 852 | "default_animation: \\\"Hills_3\\\"\\n" 853 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 854 | "blend_mode: BLEND_MODE_ALPHA\\n" 855 | "\"\n" 856 | " position {\n" 857 | " x: 1687.0\n" 858 | " y: -186.0\n" 859 | " z: 36.0\n" 860 | " }\n" 861 | " rotation {\n" 862 | " x: 0.0\n" 863 | " y: 0.0\n" 864 | " z: 0.0\n" 865 | " w: 1.0\n" 866 | " }\n" 867 | "}\n" 868 | "embedded_components {\n" 869 | " id: \"sprite14\"\n" 870 | " type: \"sprite\"\n" 871 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 872 | "default_animation: \\\"Hills_4\\\"\\n" 873 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 874 | "blend_mode: BLEND_MODE_ALPHA\\n" 875 | "\"\n" 876 | " position {\n" 877 | " x: 2787.0\n" 878 | " y: -123.0\n" 879 | " z: 84.0\n" 880 | " }\n" 881 | " rotation {\n" 882 | " x: 0.0\n" 883 | " y: 0.0\n" 884 | " z: 0.0\n" 885 | " w: 1.0\n" 886 | " }\n" 887 | "}\n" 888 | "embedded_components {\n" 889 | " id: \"sprite15\"\n" 890 | " type: \"sprite\"\n" 891 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 892 | "default_animation: \\\"Hills_5\\\"\\n" 893 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 894 | "blend_mode: BLEND_MODE_ALPHA\\n" 895 | "\"\n" 896 | " position {\n" 897 | " x: 1822.0\n" 898 | " y: -174.0\n" 899 | " z: -24.0\n" 900 | " }\n" 901 | " rotation {\n" 902 | " x: 0.0\n" 903 | " y: 0.0\n" 904 | " z: 0.0\n" 905 | " w: 1.0\n" 906 | " }\n" 907 | "}\n" 908 | "embedded_components {\n" 909 | " id: \"sprite16\"\n" 910 | " type: \"sprite\"\n" 911 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 912 | "default_animation: \\\"Hills_5\\\"\\n" 913 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 914 | "blend_mode: BLEND_MODE_ALPHA\\n" 915 | "\"\n" 916 | " position {\n" 917 | " x: 3349.0\n" 918 | " y: -174.0\n" 919 | " z: -29.0\n" 920 | " }\n" 921 | " rotation {\n" 922 | " x: 0.0\n" 923 | " y: 0.0\n" 924 | " z: 0.0\n" 925 | " w: 1.0\n" 926 | " }\n" 927 | "}\n" 928 | "embedded_components {\n" 929 | " id: \"sprite17\"\n" 930 | " type: \"sprite\"\n" 931 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 932 | "default_animation: \\\"Hills_5\\\"\\n" 933 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 934 | "blend_mode: BLEND_MODE_ALPHA\\n" 935 | "\"\n" 936 | " position {\n" 937 | " x: 4594.0\n" 938 | " y: -168.0\n" 939 | " z: 51.0\n" 940 | " }\n" 941 | " rotation {\n" 942 | " x: 0.0\n" 943 | " y: 0.0\n" 944 | " z: 0.0\n" 945 | " w: 1.0\n" 946 | " }\n" 947 | "}\n" 948 | "embedded_components {\n" 949 | " id: \"sprite18\"\n" 950 | " type: \"sprite\"\n" 951 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 952 | "default_animation: \\\"Hills_4\\\"\\n" 953 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 954 | "blend_mode: BLEND_MODE_ALPHA\\n" 955 | "\"\n" 956 | " position {\n" 957 | " x: 4427.0\n" 958 | " y: -123.0\n" 959 | " z: 84.0\n" 960 | " }\n" 961 | " rotation {\n" 962 | " x: 0.0\n" 963 | " y: 0.0\n" 964 | " z: 0.0\n" 965 | " w: 1.0\n" 966 | " }\n" 967 | "}\n" 968 | "embedded_components {\n" 969 | " id: \"sprite19\"\n" 970 | " type: \"sprite\"\n" 971 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 972 | "default_animation: \\\"Hills_1\\\"\\n" 973 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 974 | "blend_mode: BLEND_MODE_ALPHA\\n" 975 | "\"\n" 976 | " position {\n" 977 | " x: 2469.0\n" 978 | " y: -80.0\n" 979 | " z: 21.0\n" 980 | " }\n" 981 | " rotation {\n" 982 | " x: 0.0\n" 983 | " y: 0.0\n" 984 | " z: 0.0\n" 985 | " w: 1.0\n" 986 | " }\n" 987 | "}\n" 988 | "embedded_components {\n" 989 | " id: \"sprite20\"\n" 990 | " type: \"sprite\"\n" 991 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 992 | "default_animation: \\\"Hills_1\\\"\\n" 993 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 994 | "blend_mode: BLEND_MODE_ALPHA\\n" 995 | "\"\n" 996 | " position {\n" 997 | " x: 4130.0\n" 998 | " y: -80.0\n" 999 | " z: 13.0\n" 1000 | " }\n" 1001 | " rotation {\n" 1002 | " x: 0.0\n" 1003 | " y: 0.0\n" 1004 | " z: 0.0\n" 1005 | " w: 1.0\n" 1006 | " }\n" 1007 | "}\n" 1008 | "embedded_components {\n" 1009 | " id: \"sprite21\"\n" 1010 | " type: \"sprite\"\n" 1011 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1012 | "default_animation: \\\"Hills_1\\\"\\n" 1013 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1014 | "blend_mode: BLEND_MODE_ALPHA\\n" 1015 | "\"\n" 1016 | " position {\n" 1017 | " x: 5206.0\n" 1018 | " y: -80.0\n" 1019 | " z: 13.0\n" 1020 | " }\n" 1021 | " rotation {\n" 1022 | " x: 0.0\n" 1023 | " y: 0.0\n" 1024 | " z: 0.0\n" 1025 | " w: 1.0\n" 1026 | " }\n" 1027 | "}\n" 1028 | "embedded_components {\n" 1029 | " id: \"sprite22\"\n" 1030 | " type: \"sprite\"\n" 1031 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1032 | "default_animation: \\\"Hills_2\\\"\\n" 1033 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1034 | "blend_mode: BLEND_MODE_ALPHA\\n" 1035 | "\"\n" 1036 | " position {\n" 1037 | " x: 2169.0\n" 1038 | " y: -164.0\n" 1039 | " z: -60.0\n" 1040 | " }\n" 1041 | " rotation {\n" 1042 | " x: 0.0\n" 1043 | " y: 0.0\n" 1044 | " z: 0.0\n" 1045 | " w: 1.0\n" 1046 | " }\n" 1047 | "}\n" 1048 | "embedded_components {\n" 1049 | " id: \"sprite23\"\n" 1050 | " type: \"sprite\"\n" 1051 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1052 | "default_animation: \\\"Hills_2\\\"\\n" 1053 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1054 | "blend_mode: BLEND_MODE_ALPHA\\n" 1055 | "\"\n" 1056 | " position {\n" 1057 | " x: 3205.0\n" 1058 | " y: -164.0\n" 1059 | " z: -60.0\n" 1060 | " }\n" 1061 | " rotation {\n" 1062 | " x: 0.0\n" 1063 | " y: 0.0\n" 1064 | " z: 0.0\n" 1065 | " w: 1.0\n" 1066 | " }\n" 1067 | "}\n" 1068 | "embedded_components {\n" 1069 | " id: \"sprite24\"\n" 1070 | " type: \"sprite\"\n" 1071 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1072 | "default_animation: \\\"Hills_2\\\"\\n" 1073 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1074 | "blend_mode: BLEND_MODE_ALPHA\\n" 1075 | "\"\n" 1076 | " position {\n" 1077 | " x: 4506.0\n" 1078 | " y: -164.0\n" 1079 | " z: -60.0\n" 1080 | " }\n" 1081 | " rotation {\n" 1082 | " x: 0.0\n" 1083 | " y: 0.0\n" 1084 | " z: 0.0\n" 1085 | " w: 1.0\n" 1086 | " }\n" 1087 | "}\n" 1088 | "embedded_components {\n" 1089 | " id: \"sprite25\"\n" 1090 | " type: \"sprite\"\n" 1091 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1092 | "default_animation: \\\"Hills_2\\\"\\n" 1093 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1094 | "blend_mode: BLEND_MODE_ALPHA\\n" 1095 | "\"\n" 1096 | " position {\n" 1097 | " x: 4915.0\n" 1098 | " y: -164.0\n" 1099 | " z: -60.0\n" 1100 | " }\n" 1101 | " rotation {\n" 1102 | " x: 0.0\n" 1103 | " y: 0.0\n" 1104 | " z: 0.0\n" 1105 | " w: 1.0\n" 1106 | " }\n" 1107 | "}\n" 1108 | "embedded_components {\n" 1109 | " id: \"sprite26\"\n" 1110 | " type: \"sprite\"\n" 1111 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1112 | "default_animation: \\\"Hills_7\\\"\\n" 1113 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1114 | "blend_mode: BLEND_MODE_ALPHA\\n" 1115 | "\"\n" 1116 | " position {\n" 1117 | " x: 3021.0\n" 1118 | " y: -200.0\n" 1119 | " z: 56.0\n" 1120 | " }\n" 1121 | " rotation {\n" 1122 | " x: 0.0\n" 1123 | " y: 0.0\n" 1124 | " z: 0.0\n" 1125 | " w: 1.0\n" 1126 | " }\n" 1127 | "}\n" 1128 | "embedded_components {\n" 1129 | " id: \"sprite27\"\n" 1130 | " type: \"sprite\"\n" 1131 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1132 | "default_animation: \\\"Hills_7\\\"\\n" 1133 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1134 | "blend_mode: BLEND_MODE_ALPHA\\n" 1135 | "\"\n" 1136 | " position {\n" 1137 | " x: 3696.0\n" 1138 | " y: -200.0\n" 1139 | " z: 56.0\n" 1140 | " }\n" 1141 | " rotation {\n" 1142 | " x: 0.0\n" 1143 | " y: 0.0\n" 1144 | " z: 0.0\n" 1145 | " w: 1.0\n" 1146 | " }\n" 1147 | "}\n" 1148 | "embedded_components {\n" 1149 | " id: \"sprite28\"\n" 1150 | " type: \"sprite\"\n" 1151 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1152 | "default_animation: \\\"Hills_7\\\"\\n" 1153 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1154 | "blend_mode: BLEND_MODE_ALPHA\\n" 1155 | "\"\n" 1156 | " position {\n" 1157 | " x: 4815.0\n" 1158 | " y: -200.0\n" 1159 | " z: 56.0\n" 1160 | " }\n" 1161 | " rotation {\n" 1162 | " x: 0.0\n" 1163 | " y: 0.0\n" 1164 | " z: 0.0\n" 1165 | " w: 1.0\n" 1166 | " }\n" 1167 | "}\n" 1168 | "embedded_components {\n" 1169 | " id: \"sprite29\"\n" 1170 | " type: \"sprite\"\n" 1171 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1172 | "default_animation: \\\"Hills_3\\\"\\n" 1173 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1174 | "blend_mode: BLEND_MODE_ALPHA\\n" 1175 | "\"\n" 1176 | " position {\n" 1177 | " x: 2930.0\n" 1178 | " y: -186.0\n" 1179 | " z: 36.0\n" 1180 | " }\n" 1181 | " rotation {\n" 1182 | " x: 0.0\n" 1183 | " y: 0.0\n" 1184 | " z: 0.0\n" 1185 | " w: 1.0\n" 1186 | " }\n" 1187 | "}\n" 1188 | "embedded_components {\n" 1189 | " id: \"sprite30\"\n" 1190 | " type: \"sprite\"\n" 1191 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1192 | "default_animation: \\\"Hills_3\\\"\\n" 1193 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1194 | "blend_mode: BLEND_MODE_ALPHA\\n" 1195 | "\"\n" 1196 | " position {\n" 1197 | " x: 3814.0\n" 1198 | " y: -186.0\n" 1199 | " z: 14.0\n" 1200 | " }\n" 1201 | " rotation {\n" 1202 | " x: 0.0\n" 1203 | " y: 0.0\n" 1204 | " z: 0.0\n" 1205 | " w: 1.0\n" 1206 | " }\n" 1207 | "}\n" 1208 | "embedded_components {\n" 1209 | " id: \"sprite31\"\n" 1210 | " type: \"sprite\"\n" 1211 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1212 | "default_animation: \\\"Hills_3\\\"\\n" 1213 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1214 | "blend_mode: BLEND_MODE_ALPHA\\n" 1215 | "\"\n" 1216 | " position {\n" 1217 | " x: 4684.0\n" 1218 | " y: -186.0\n" 1219 | " z: 14.0\n" 1220 | " }\n" 1221 | " rotation {\n" 1222 | " x: 0.0\n" 1223 | " y: 0.0\n" 1224 | " z: 0.0\n" 1225 | " w: 1.0\n" 1226 | " }\n" 1227 | "}\n" 1228 | "embedded_components {\n" 1229 | " id: \"sprite32\"\n" 1230 | " type: \"sprite\"\n" 1231 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1232 | "default_animation: \\\"Hills_2\\\"\\n" 1233 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1234 | "blend_mode: BLEND_MODE_ALPHA\\n" 1235 | "\"\n" 1236 | " position {\n" 1237 | " x: -1032.0\n" 1238 | " y: -280.0\n" 1239 | " z: 295.0\n" 1240 | " }\n" 1241 | " rotation {\n" 1242 | " x: 0.0\n" 1243 | " y: 0.0\n" 1244 | " z: 0.0\n" 1245 | " w: 1.0\n" 1246 | " }\n" 1247 | "}\n" 1248 | "embedded_components {\n" 1249 | " id: \"sprite33\"\n" 1250 | " type: \"sprite\"\n" 1251 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1252 | "default_animation: \\\"Hills_1\\\"\\n" 1253 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1254 | "blend_mode: BLEND_MODE_ALPHA\\n" 1255 | "\"\n" 1256 | " position {\n" 1257 | " x: -814.0\n" 1258 | " y: -167.0\n" 1259 | " z: 283.0\n" 1260 | " }\n" 1261 | " rotation {\n" 1262 | " x: 0.0\n" 1263 | " y: 0.0\n" 1264 | " z: 0.0\n" 1265 | " w: 1.0\n" 1266 | " }\n" 1267 | "}\n" 1268 | "embedded_components {\n" 1269 | " id: \"sprite34\"\n" 1270 | " type: \"sprite\"\n" 1271 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1272 | "default_animation: \\\"Hills_5\\\"\\n" 1273 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1274 | "blend_mode: BLEND_MODE_ALPHA\\n" 1275 | "\"\n" 1276 | " position {\n" 1277 | " x: 5221.0\n" 1278 | " y: -286.0\n" 1279 | " z: 241.0\n" 1280 | " }\n" 1281 | " rotation {\n" 1282 | " x: 0.0\n" 1283 | " y: 0.0\n" 1284 | " z: 0.0\n" 1285 | " w: 1.0\n" 1286 | " }\n" 1287 | "}\n" 1288 | "embedded_components {\n" 1289 | " id: \"sprite35\"\n" 1290 | " type: \"sprite\"\n" 1291 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1292 | "default_animation: \\\"Hills_4\\\"\\n" 1293 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1294 | "blend_mode: BLEND_MODE_ALPHA\\n" 1295 | "\"\n" 1296 | " position {\n" 1297 | " x: 5289.0\n" 1298 | " y: -256.0\n" 1299 | " z: 286.0\n" 1300 | " }\n" 1301 | " rotation {\n" 1302 | " x: 0.0\n" 1303 | " y: 0.0\n" 1304 | " z: 0.0\n" 1305 | " w: 1.0\n" 1306 | " }\n" 1307 | "}\n" 1308 | "" 1309 | position { 1310 | x: 0.0 1311 | y: -65.0 1312 | z: -233.0 1313 | } 1314 | rotation { 1315 | x: 0.0 1316 | y: 0.0 1317 | z: 0.0 1318 | w: 1.0 1319 | } 1320 | scale3 { 1321 | x: 1.0 1322 | y: 1.0 1323 | z: 1.0 1324 | } 1325 | } 1326 | embedded_instances { 1327 | id: "hills_mid" 1328 | data: "embedded_components {\n" 1329 | " id: \"sprite\"\n" 1330 | " type: \"sprite\"\n" 1331 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1332 | "default_animation: \\\"Hills_mid_1\\\"\\n" 1333 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1334 | "blend_mode: BLEND_MODE_ALPHA\\n" 1335 | "\"\n" 1336 | " position {\n" 1337 | " x: -286.0\n" 1338 | " y: -140.0\n" 1339 | " z: -532.0\n" 1340 | " }\n" 1341 | " rotation {\n" 1342 | " x: 0.0\n" 1343 | " y: 0.0\n" 1344 | " z: 0.0\n" 1345 | " w: 1.0\n" 1346 | " }\n" 1347 | "}\n" 1348 | "embedded_components {\n" 1349 | " id: \"sprite1\"\n" 1350 | " type: \"sprite\"\n" 1351 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1352 | "default_animation: \\\"Hills_mid_2\\\"\\n" 1353 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1354 | "blend_mode: BLEND_MODE_ALPHA\\n" 1355 | "\"\n" 1356 | " position {\n" 1357 | " x: -639.0\n" 1358 | " y: -244.0\n" 1359 | " z: -577.0\n" 1360 | " }\n" 1361 | " rotation {\n" 1362 | " x: 0.0\n" 1363 | " y: 0.0\n" 1364 | " z: 0.0\n" 1365 | " w: 1.0\n" 1366 | " }\n" 1367 | "}\n" 1368 | "embedded_components {\n" 1369 | " id: \"sprite2\"\n" 1370 | " type: \"sprite\"\n" 1371 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1372 | "default_animation: \\\"Hills_mid_3\\\"\\n" 1373 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1374 | "blend_mode: BLEND_MODE_ALPHA\\n" 1375 | "\"\n" 1376 | " position {\n" 1377 | " x: 196.0\n" 1378 | " y: -118.0\n" 1379 | " z: -387.0\n" 1380 | " }\n" 1381 | " rotation {\n" 1382 | " x: 0.0\n" 1383 | " y: 0.0\n" 1384 | " z: 0.0\n" 1385 | " w: 1.0\n" 1386 | " }\n" 1387 | "}\n" 1388 | "embedded_components {\n" 1389 | " id: \"sprite3\"\n" 1390 | " type: \"sprite\"\n" 1391 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1392 | "default_animation: \\\"Hills_mid_5\\\"\\n" 1393 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1394 | "blend_mode: BLEND_MODE_ALPHA\\n" 1395 | "\"\n" 1396 | " position {\n" 1397 | " x: 591.0\n" 1398 | " y: -217.0\n" 1399 | " z: -445.0\n" 1400 | " }\n" 1401 | " rotation {\n" 1402 | " x: 0.0\n" 1403 | " y: 0.0\n" 1404 | " z: 0.0\n" 1405 | " w: 1.0\n" 1406 | " }\n" 1407 | "}\n" 1408 | "embedded_components {\n" 1409 | " id: \"sprite4\"\n" 1410 | " type: \"sprite\"\n" 1411 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1412 | "default_animation: \\\"Hills_mid_5\\\"\\n" 1413 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1414 | "blend_mode: BLEND_MODE_ALPHA\\n" 1415 | "\"\n" 1416 | " position {\n" 1417 | " x: 1004.0\n" 1418 | " y: -217.0\n" 1419 | " z: -445.0\n" 1420 | " }\n" 1421 | " rotation {\n" 1422 | " x: 0.0\n" 1423 | " y: 0.0\n" 1424 | " z: 0.0\n" 1425 | " w: 1.0\n" 1426 | " }\n" 1427 | "}\n" 1428 | "embedded_components {\n" 1429 | " id: \"sprite5\"\n" 1430 | " type: \"sprite\"\n" 1431 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1432 | "default_animation: \\\"Hills_mid_5\\\"\\n" 1433 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1434 | "blend_mode: BLEND_MODE_ALPHA\\n" 1435 | "\"\n" 1436 | " position {\n" 1437 | " x: 1733.0\n" 1438 | " y: -217.0\n" 1439 | " z: -445.0\n" 1440 | " }\n" 1441 | " rotation {\n" 1442 | " x: 0.0\n" 1443 | " y: 0.0\n" 1444 | " z: 0.0\n" 1445 | " w: 1.0\n" 1446 | " }\n" 1447 | "}\n" 1448 | "embedded_components {\n" 1449 | " id: \"sprite6\"\n" 1450 | " type: \"sprite\"\n" 1451 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1452 | "default_animation: \\\"Hills_mid_5\\\"\\n" 1453 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1454 | "blend_mode: BLEND_MODE_ALPHA\\n" 1455 | "\"\n" 1456 | " position {\n" 1457 | " x: 3054.0\n" 1458 | " y: -217.0\n" 1459 | " z: -445.0\n" 1460 | " }\n" 1461 | " rotation {\n" 1462 | " x: 0.0\n" 1463 | " y: 0.0\n" 1464 | " z: 0.0\n" 1465 | " w: 1.0\n" 1466 | " }\n" 1467 | "}\n" 1468 | "embedded_components {\n" 1469 | " id: \"sprite7\"\n" 1470 | " type: \"sprite\"\n" 1471 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1472 | "default_animation: \\\"Hills_mid_5\\\"\\n" 1473 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1474 | "blend_mode: BLEND_MODE_ALPHA\\n" 1475 | "\"\n" 1476 | " position {\n" 1477 | " x: 3925.0\n" 1478 | " y: -217.0\n" 1479 | " z: -445.0\n" 1480 | " }\n" 1481 | " rotation {\n" 1482 | " x: 0.0\n" 1483 | " y: 0.0\n" 1484 | " z: 0.0\n" 1485 | " w: 1.0\n" 1486 | " }\n" 1487 | "}\n" 1488 | "embedded_components {\n" 1489 | " id: \"sprite8\"\n" 1490 | " type: \"sprite\"\n" 1491 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1492 | "default_animation: \\\"Hills_mid_5\\\"\\n" 1493 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1494 | "blend_mode: BLEND_MODE_ALPHA\\n" 1495 | "\"\n" 1496 | " position {\n" 1497 | " x: 4953.0\n" 1498 | " y: -217.0\n" 1499 | " z: -445.0\n" 1500 | " }\n" 1501 | " rotation {\n" 1502 | " x: 0.0\n" 1503 | " y: 0.0\n" 1504 | " z: 0.0\n" 1505 | " w: 1.0\n" 1506 | " }\n" 1507 | "}\n" 1508 | "embedded_components {\n" 1509 | " id: \"sprite9\"\n" 1510 | " type: \"sprite\"\n" 1511 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1512 | "default_animation: \\\"Hills_mid_1\\\"\\n" 1513 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1514 | "blend_mode: BLEND_MODE_ALPHA\\n" 1515 | "\"\n" 1516 | " position {\n" 1517 | " x: 1686.0\n" 1518 | " y: -140.0\n" 1519 | " z: -532.0\n" 1520 | " }\n" 1521 | " rotation {\n" 1522 | " x: 0.0\n" 1523 | " y: 0.0\n" 1524 | " z: 0.0\n" 1525 | " w: 1.0\n" 1526 | " }\n" 1527 | "}\n" 1528 | "embedded_components {\n" 1529 | " id: \"sprite10\"\n" 1530 | " type: \"sprite\"\n" 1531 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1532 | "default_animation: \\\"Hills_mid_1\\\"\\n" 1533 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1534 | "blend_mode: BLEND_MODE_ALPHA\\n" 1535 | "\"\n" 1536 | " position {\n" 1537 | " x: 3564.0\n" 1538 | " y: -140.0\n" 1539 | " z: -532.0\n" 1540 | " }\n" 1541 | " rotation {\n" 1542 | " x: 0.0\n" 1543 | " y: 0.0\n" 1544 | " z: 0.0\n" 1545 | " w: 1.0\n" 1546 | " }\n" 1547 | "}\n" 1548 | "embedded_components {\n" 1549 | " id: \"sprite11\"\n" 1550 | " type: \"sprite\"\n" 1551 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1552 | "default_animation: \\\"Hills_mid_1\\\"\\n" 1553 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1554 | "blend_mode: BLEND_MODE_ALPHA\\n" 1555 | "\"\n" 1556 | " position {\n" 1557 | " x: 5354.0\n" 1558 | " y: -140.0\n" 1559 | " z: -532.0\n" 1560 | " }\n" 1561 | " rotation {\n" 1562 | " x: 0.0\n" 1563 | " y: 0.0\n" 1564 | " z: 0.0\n" 1565 | " w: 1.0\n" 1566 | " }\n" 1567 | "}\n" 1568 | "embedded_components {\n" 1569 | " id: \"sprite12\"\n" 1570 | " type: \"sprite\"\n" 1571 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1572 | "default_animation: \\\"Hills_mid_3\\\"\\n" 1573 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1574 | "blend_mode: BLEND_MODE_ALPHA\\n" 1575 | "\"\n" 1576 | " position {\n" 1577 | " x: 1276.0\n" 1578 | " y: -118.0\n" 1579 | " z: -387.0\n" 1580 | " }\n" 1581 | " rotation {\n" 1582 | " x: 0.0\n" 1583 | " y: 0.0\n" 1584 | " z: 0.0\n" 1585 | " w: 1.0\n" 1586 | " }\n" 1587 | "}\n" 1588 | "embedded_components {\n" 1589 | " id: \"sprite13\"\n" 1590 | " type: \"sprite\"\n" 1591 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1592 | "default_animation: \\\"Hills_mid_3\\\"\\n" 1593 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1594 | "blend_mode: BLEND_MODE_ALPHA\\n" 1595 | "\"\n" 1596 | " position {\n" 1597 | " x: 2878.0\n" 1598 | " y: -118.0\n" 1599 | " z: -387.0\n" 1600 | " }\n" 1601 | " rotation {\n" 1602 | " x: 0.0\n" 1603 | " y: 0.0\n" 1604 | " z: 0.0\n" 1605 | " w: 1.0\n" 1606 | " }\n" 1607 | "}\n" 1608 | "embedded_components {\n" 1609 | " id: \"sprite14\"\n" 1610 | " type: \"sprite\"\n" 1611 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1612 | "default_animation: \\\"Hills_mid_3\\\"\\n" 1613 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1614 | "blend_mode: BLEND_MODE_ALPHA\\n" 1615 | "\"\n" 1616 | " position {\n" 1617 | " x: 4637.0\n" 1618 | " y: -118.0\n" 1619 | " z: -387.0\n" 1620 | " }\n" 1621 | " rotation {\n" 1622 | " x: 0.0\n" 1623 | " y: 0.0\n" 1624 | " z: 0.0\n" 1625 | " w: 1.0\n" 1626 | " }\n" 1627 | "}\n" 1628 | "" 1629 | position { 1630 | x: 0.0 1631 | y: 0.0 1632 | z: 0.0 1633 | } 1634 | rotation { 1635 | x: 0.0 1636 | y: 0.0 1637 | z: 0.0 1638 | w: 1.0 1639 | } 1640 | scale3 { 1641 | x: 1.0 1642 | y: 1.0 1643 | z: 1.0 1644 | } 1645 | } 1646 | embedded_instances { 1647 | id: "plants" 1648 | data: "embedded_components {\n" 1649 | " id: \"sprite\"\n" 1650 | " type: \"sprite\"\n" 1651 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1652 | "default_animation: \\\"Plant_1\\\"\\n" 1653 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1654 | "blend_mode: BLEND_MODE_ALPHA\\n" 1655 | "\"\n" 1656 | " position {\n" 1657 | " x: -185.0\n" 1658 | " y: -15.0\n" 1659 | " z: 0.1\n" 1660 | " }\n" 1661 | " rotation {\n" 1662 | " x: 0.0\n" 1663 | " y: 0.0\n" 1664 | " z: 0.0\n" 1665 | " w: 1.0\n" 1666 | " }\n" 1667 | "}\n" 1668 | "embedded_components {\n" 1669 | " id: \"sprite1\"\n" 1670 | " type: \"sprite\"\n" 1671 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1672 | "default_animation: \\\"Plant_2\\\"\\n" 1673 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1674 | "blend_mode: BLEND_MODE_ALPHA\\n" 1675 | "\"\n" 1676 | " position {\n" 1677 | " x: 742.0\n" 1678 | " y: -34.0\n" 1679 | " z: 1.1\n" 1680 | " }\n" 1681 | " rotation {\n" 1682 | " x: 0.0\n" 1683 | " y: 0.0\n" 1684 | " z: 0.0\n" 1685 | " w: 1.0\n" 1686 | " }\n" 1687 | "}\n" 1688 | "embedded_components {\n" 1689 | " id: \"sprite2\"\n" 1690 | " type: \"sprite\"\n" 1691 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1692 | "default_animation: \\\"Plant_3\\\"\\n" 1693 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1694 | "blend_mode: BLEND_MODE_ALPHA\\n" 1695 | "\"\n" 1696 | " position {\n" 1697 | " x: -330.0\n" 1698 | " y: -35.0\n" 1699 | " z: 0.1\n" 1700 | " }\n" 1701 | " rotation {\n" 1702 | " x: 0.0\n" 1703 | " y: 0.0\n" 1704 | " z: 0.0\n" 1705 | " w: 1.0\n" 1706 | " }\n" 1707 | "}\n" 1708 | "embedded_components {\n" 1709 | " id: \"sprite3\"\n" 1710 | " type: \"sprite\"\n" 1711 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1712 | "default_animation: \\\"Plant_1\\\"\\n" 1713 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1714 | "blend_mode: BLEND_MODE_ALPHA\\n" 1715 | "\"\n" 1716 | " position {\n" 1717 | " x: 460.0\n" 1718 | " y: -20.0\n" 1719 | " z: 0.1\n" 1720 | " }\n" 1721 | " rotation {\n" 1722 | " x: 0.0\n" 1723 | " y: 0.0\n" 1724 | " z: 0.0\n" 1725 | " w: 1.0\n" 1726 | " }\n" 1727 | "}\n" 1728 | "embedded_components {\n" 1729 | " id: \"sprite4\"\n" 1730 | " type: \"sprite\"\n" 1731 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1732 | "default_animation: \\\"Plant_1\\\"\\n" 1733 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1734 | "blend_mode: BLEND_MODE_ALPHA\\n" 1735 | "\"\n" 1736 | " position {\n" 1737 | " x: 1408.0\n" 1738 | " y: -55.0\n" 1739 | " z: 1.1\n" 1740 | " }\n" 1741 | " rotation {\n" 1742 | " x: 0.0\n" 1743 | " y: 0.0\n" 1744 | " z: 0.0\n" 1745 | " w: 1.0\n" 1746 | " }\n" 1747 | "}\n" 1748 | "embedded_components {\n" 1749 | " id: \"sprite5\"\n" 1750 | " type: \"sprite\"\n" 1751 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1752 | "default_animation: \\\"Plant_1\\\"\\n" 1753 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1754 | "blend_mode: BLEND_MODE_ALPHA\\n" 1755 | "\"\n" 1756 | " position {\n" 1757 | " x: 2888.0\n" 1758 | " y: -28.0\n" 1759 | " z: 0.1\n" 1760 | " }\n" 1761 | " rotation {\n" 1762 | " x: 0.0\n" 1763 | " y: 0.0\n" 1764 | " z: 0.0\n" 1765 | " w: 1.0\n" 1766 | " }\n" 1767 | "}\n" 1768 | "embedded_components {\n" 1769 | " id: \"sprite6\"\n" 1770 | " type: \"sprite\"\n" 1771 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1772 | "default_animation: \\\"Plant_1\\\"\\n" 1773 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1774 | "blend_mode: BLEND_MODE_ALPHA\\n" 1775 | "\"\n" 1776 | " position {\n" 1777 | " x: 5011.0\n" 1778 | " y: -28.0\n" 1779 | " z: 0.1\n" 1780 | " }\n" 1781 | " rotation {\n" 1782 | " x: 0.0\n" 1783 | " y: 0.0\n" 1784 | " z: 0.0\n" 1785 | " w: 1.0\n" 1786 | " }\n" 1787 | "}\n" 1788 | "embedded_components {\n" 1789 | " id: \"sprite7\"\n" 1790 | " type: \"sprite\"\n" 1791 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1792 | "default_animation: \\\"Plant_2\\\"\\n" 1793 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1794 | "blend_mode: BLEND_MODE_ALPHA\\n" 1795 | "\"\n" 1796 | " position {\n" 1797 | " x: 1308.0\n" 1798 | " y: 5.0\n" 1799 | " z: 0.1\n" 1800 | " }\n" 1801 | " rotation {\n" 1802 | " x: 0.0\n" 1803 | " y: 0.0\n" 1804 | " z: 0.0\n" 1805 | " w: 1.0\n" 1806 | " }\n" 1807 | "}\n" 1808 | "embedded_components {\n" 1809 | " id: \"sprite8\"\n" 1810 | " type: \"sprite\"\n" 1811 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1812 | "default_animation: \\\"Plant_2\\\"\\n" 1813 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1814 | "blend_mode: BLEND_MODE_ALPHA\\n" 1815 | "\"\n" 1816 | " position {\n" 1817 | " x: 5144.0\n" 1818 | " y: -18.0\n" 1819 | " z: 0.2\n" 1820 | " }\n" 1821 | " rotation {\n" 1822 | " x: 0.0\n" 1823 | " y: 0.0\n" 1824 | " z: 0.0\n" 1825 | " w: 1.0\n" 1826 | " }\n" 1827 | "}\n" 1828 | "embedded_components {\n" 1829 | " id: \"sprite9\"\n" 1830 | " type: \"sprite\"\n" 1831 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1832 | "default_animation: \\\"Plant_3\\\"\\n" 1833 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1834 | "blend_mode: BLEND_MODE_ALPHA\\n" 1835 | "\"\n" 1836 | " position {\n" 1837 | " x: 990.0\n" 1838 | " y: -35.0\n" 1839 | " z: 0.1\n" 1840 | " }\n" 1841 | " rotation {\n" 1842 | " x: 0.0\n" 1843 | " y: 0.0\n" 1844 | " z: 0.0\n" 1845 | " w: 1.0\n" 1846 | " }\n" 1847 | "}\n" 1848 | "embedded_components {\n" 1849 | " id: \"sprite10\"\n" 1850 | " type: \"sprite\"\n" 1851 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1852 | "default_animation: \\\"Plant_3\\\"\\n" 1853 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1854 | "blend_mode: BLEND_MODE_ALPHA\\n" 1855 | "\"\n" 1856 | " position {\n" 1857 | " x: 2367.0\n" 1858 | " y: -67.0\n" 1859 | " z: 1.0\n" 1860 | " }\n" 1861 | " rotation {\n" 1862 | " x: 0.0\n" 1863 | " y: 0.0\n" 1864 | " z: 0.0\n" 1865 | " w: 1.0\n" 1866 | " }\n" 1867 | "}\n" 1868 | "embedded_components {\n" 1869 | " id: \"sprite11\"\n" 1870 | " type: \"sprite\"\n" 1871 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 1872 | "default_animation: \\\"Plant_3\\\"\\n" 1873 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 1874 | "blend_mode: BLEND_MODE_ALPHA\\n" 1875 | "\"\n" 1876 | " position {\n" 1877 | " x: 3900.0\n" 1878 | " y: -39.0\n" 1879 | " z: 0.1\n" 1880 | " }\n" 1881 | " rotation {\n" 1882 | " x: 0.0\n" 1883 | " y: 0.0\n" 1884 | " z: 0.0\n" 1885 | " w: 1.0\n" 1886 | " }\n" 1887 | "}\n" 1888 | "" 1889 | position { 1890 | x: -49.0 1891 | y: -179.0 1892 | z: -0.1 1893 | } 1894 | rotation { 1895 | x: 0.0 1896 | y: 0.0 1897 | z: 0.0 1898 | w: 1.0 1899 | } 1900 | scale3 { 1901 | x: 1.0 1902 | y: 1.0 1903 | z: 1.0 1904 | } 1905 | } 1906 | embedded_instances { 1907 | id: "platforms" 1908 | data: "embedded_components {\n" 1909 | " id: \"c_ground\"\n" 1910 | " type: \"collisionobject\"\n" 1911 | " data: \"collision_shape: \\\"\\\"\\n" 1912 | "type: COLLISION_OBJECT_TYPE_STATIC\\n" 1913 | "mass: 0.0\\n" 1914 | "friction: 0.0\\n" 1915 | "restitution: 0.0\\n" 1916 | "group: \\\"ground\\\"\\n" 1917 | "mask: \\\"player\\\"\\n" 1918 | "embedded_collision_shape {\\n" 1919 | " shapes {\\n" 1920 | " shape_type: TYPE_BOX\\n" 1921 | " position {\\n" 1922 | " x: 2101.0\\n" 1923 | " y: -85.0\\n" 1924 | " z: 0.0\\n" 1925 | " }\\n" 1926 | " rotation {\\n" 1927 | " x: 0.0\\n" 1928 | " y: 0.0\\n" 1929 | " z: 0.0\\n" 1930 | " w: 1.0\\n" 1931 | " }\\n" 1932 | " index: 0\\n" 1933 | " count: 3\\n" 1934 | " }\\n" 1935 | " data: 2850.0\\n" 1936 | " data: 150.0\\n" 1937 | " data: 10.0\\n" 1938 | "}\\n" 1939 | "linear_damping: 0.0\\n" 1940 | "angular_damping: 0.0\\n" 1941 | "locked_rotation: false\\n" 1942 | "bullet: false\\n" 1943 | "\"\n" 1944 | " position {\n" 1945 | " x: 0.0\n" 1946 | " y: 0.0\n" 1947 | " z: 0.0\n" 1948 | " }\n" 1949 | " rotation {\n" 1950 | " x: 0.0\n" 1951 | " y: 0.0\n" 1952 | " z: 0.0\n" 1953 | " w: 1.0\n" 1954 | " }\n" 1955 | "}\n" 1956 | "embedded_components {\n" 1957 | " id: \"c_walls\"\n" 1958 | " type: \"collisionobject\"\n" 1959 | " data: \"collision_shape: \\\"\\\"\\n" 1960 | "type: COLLISION_OBJECT_TYPE_STATIC\\n" 1961 | "mass: 0.0\\n" 1962 | "friction: 0.0\\n" 1963 | "restitution: 0.0\\n" 1964 | "group: \\\"ground\\\"\\n" 1965 | "mask: \\\"player\\\"\\n" 1966 | "embedded_collision_shape {\\n" 1967 | " shapes {\\n" 1968 | " shape_type: TYPE_BOX\\n" 1969 | " position {\\n" 1970 | " x: -602.0\\n" 1971 | " y: 365.0\\n" 1972 | " z: 0.0\\n" 1973 | " }\\n" 1974 | " rotation {\\n" 1975 | " x: 0.0\\n" 1976 | " y: 0.0\\n" 1977 | " z: 0.0\\n" 1978 | " w: 1.0\\n" 1979 | " }\\n" 1980 | " index: 0\\n" 1981 | " count: 3\\n" 1982 | " }\\n" 1983 | " shapes {\\n" 1984 | " shape_type: TYPE_BOX\\n" 1985 | " position {\\n" 1986 | " x: 4771.0\\n" 1987 | " y: 365.0\\n" 1988 | " z: 0.0\\n" 1989 | " }\\n" 1990 | " rotation {\\n" 1991 | " x: 0.0\\n" 1992 | " y: 0.0\\n" 1993 | " z: 0.0\\n" 1994 | " w: 1.0\\n" 1995 | " }\\n" 1996 | " index: 3\\n" 1997 | " count: 3\\n" 1998 | " }\\n" 1999 | " data: 150.0\\n" 2000 | " data: 300.0\\n" 2001 | " data: 10.0\\n" 2002 | " data: 150.0\\n" 2003 | " data: 300.0\\n" 2004 | " data: 10.0\\n" 2005 | "}\\n" 2006 | "linear_damping: 0.0\\n" 2007 | "angular_damping: 0.0\\n" 2008 | "locked_rotation: false\\n" 2009 | "bullet: false\\n" 2010 | "\"\n" 2011 | " position {\n" 2012 | " x: 0.0\n" 2013 | " y: 0.0\n" 2014 | " z: 0.0\n" 2015 | " }\n" 2016 | " rotation {\n" 2017 | " x: 0.0\n" 2018 | " y: 0.0\n" 2019 | " z: 0.0\n" 2020 | " w: 1.0\n" 2021 | " }\n" 2022 | "}\n" 2023 | "embedded_components {\n" 2024 | " id: \"sprite\"\n" 2025 | " type: \"sprite\"\n" 2026 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2027 | "default_animation: \\\"Platform_1\\\"\\n" 2028 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2029 | "blend_mode: BLEND_MODE_ALPHA\\n" 2030 | "\"\n" 2031 | " position {\n" 2032 | " x: 0.0\n" 2033 | " y: 0.0\n" 2034 | " z: 0.0\n" 2035 | " }\n" 2036 | " rotation {\n" 2037 | " x: 0.0\n" 2038 | " y: 0.0\n" 2039 | " z: 0.0\n" 2040 | " w: 1.0\n" 2041 | " }\n" 2042 | "}\n" 2043 | "embedded_components {\n" 2044 | " id: \"sprite1\"\n" 2045 | " type: \"sprite\"\n" 2046 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2047 | "default_animation: \\\"Platform_2\\\"\\n" 2048 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2049 | "blend_mode: BLEND_MODE_ALPHA\\n" 2050 | "\"\n" 2051 | " position {\n" 2052 | " x: 624.0\n" 2053 | " y: 0.0\n" 2054 | " z: 0.0\n" 2055 | " }\n" 2056 | " rotation {\n" 2057 | " x: 0.0\n" 2058 | " y: 0.0\n" 2059 | " z: 0.0\n" 2060 | " w: 1.0\n" 2061 | " }\n" 2062 | "}\n" 2063 | "embedded_components {\n" 2064 | " id: \"sprite2\"\n" 2065 | " type: \"sprite\"\n" 2066 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2067 | "default_animation: \\\"Platform_1\\\"\\n" 2068 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2069 | "blend_mode: BLEND_MODE_ALPHA\\n" 2070 | "\"\n" 2071 | " position {\n" 2072 | " x: -624.0\n" 2073 | " y: 0.0\n" 2074 | " z: 0.0\n" 2075 | " }\n" 2076 | " rotation {\n" 2077 | " x: 0.0\n" 2078 | " y: 0.0\n" 2079 | " z: 0.0\n" 2080 | " w: 1.0\n" 2081 | " }\n" 2082 | "}\n" 2083 | "embedded_components {\n" 2084 | " id: \"sprite3\"\n" 2085 | " type: \"sprite\"\n" 2086 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2087 | "default_animation: \\\"Platform_1\\\"\\n" 2088 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2089 | "blend_mode: BLEND_MODE_ALPHA\\n" 2090 | "\"\n" 2091 | " position {\n" 2092 | " x: 1247.0\n" 2093 | " y: 0.0\n" 2094 | " z: 0.0\n" 2095 | " }\n" 2096 | " rotation {\n" 2097 | " x: 0.0\n" 2098 | " y: 0.0\n" 2099 | " z: 0.0\n" 2100 | " w: 1.0\n" 2101 | " }\n" 2102 | "}\n" 2103 | "embedded_components {\n" 2104 | " id: \"sprite4\"\n" 2105 | " type: \"sprite\"\n" 2106 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2107 | "default_animation: \\\"Platform_2\\\"\\n" 2108 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2109 | "blend_mode: BLEND_MODE_ALPHA\\n" 2110 | "\"\n" 2111 | " position {\n" 2112 | " x: 1871.0\n" 2113 | " y: 0.0\n" 2114 | " z: 0.0\n" 2115 | " }\n" 2116 | " rotation {\n" 2117 | " x: 0.0\n" 2118 | " y: 0.0\n" 2119 | " z: 0.0\n" 2120 | " w: 1.0\n" 2121 | " }\n" 2122 | "}\n" 2123 | "embedded_components {\n" 2124 | " id: \"sprite5\"\n" 2125 | " type: \"sprite\"\n" 2126 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2127 | "default_animation: \\\"Platform_1\\\"\\n" 2128 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2129 | "blend_mode: BLEND_MODE_ALPHA\\n" 2130 | "\"\n" 2131 | " position {\n" 2132 | " x: 2495.0\n" 2133 | " y: 0.0\n" 2134 | " z: 0.0\n" 2135 | " }\n" 2136 | " rotation {\n" 2137 | " x: 0.0\n" 2138 | " y: 0.0\n" 2139 | " z: 0.0\n" 2140 | " w: 1.0\n" 2141 | " }\n" 2142 | "}\n" 2143 | "embedded_components {\n" 2144 | " id: \"sprite6\"\n" 2145 | " type: \"sprite\"\n" 2146 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2147 | "default_animation: \\\"Platform_2\\\"\\n" 2148 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2149 | "blend_mode: BLEND_MODE_ALPHA\\n" 2150 | "\"\n" 2151 | " position {\n" 2152 | " x: 3119.0\n" 2153 | " y: 0.0\n" 2154 | " z: 0.0\n" 2155 | " }\n" 2156 | " rotation {\n" 2157 | " x: 0.0\n" 2158 | " y: 0.0\n" 2159 | " z: 0.0\n" 2160 | " w: 1.0\n" 2161 | " }\n" 2162 | "}\n" 2163 | "embedded_components {\n" 2164 | " id: \"sprite7\"\n" 2165 | " type: \"sprite\"\n" 2166 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2167 | "default_animation: \\\"Platform_1\\\"\\n" 2168 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2169 | "blend_mode: BLEND_MODE_ALPHA\\n" 2170 | "\"\n" 2171 | " position {\n" 2172 | " x: 3744.0\n" 2173 | " y: 0.0\n" 2174 | " z: 0.0\n" 2175 | " }\n" 2176 | " rotation {\n" 2177 | " x: 0.0\n" 2178 | " y: 0.0\n" 2179 | " z: 0.0\n" 2180 | " w: 1.0\n" 2181 | " }\n" 2182 | "}\n" 2183 | "embedded_components {\n" 2184 | " id: \"sprite8\"\n" 2185 | " type: \"sprite\"\n" 2186 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2187 | "default_animation: \\\"Platform_1\\\"\\n" 2188 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2189 | "blend_mode: BLEND_MODE_ALPHA\\n" 2190 | "\"\n" 2191 | " position {\n" 2192 | " x: 4368.0\n" 2193 | " y: 0.0\n" 2194 | " z: 0.0\n" 2195 | " }\n" 2196 | " rotation {\n" 2197 | " x: 0.0\n" 2198 | " y: 0.0\n" 2199 | " z: 0.0\n" 2200 | " w: 1.0\n" 2201 | " }\n" 2202 | "}\n" 2203 | "embedded_components {\n" 2204 | " id: \"sprite9\"\n" 2205 | " type: \"sprite\"\n" 2206 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2207 | "default_animation: \\\"Platform_2\\\"\\n" 2208 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2209 | "blend_mode: BLEND_MODE_ALPHA\\n" 2210 | "\"\n" 2211 | " position {\n" 2212 | " x: 4992.0\n" 2213 | " y: 0.0\n" 2214 | " z: 0.0\n" 2215 | " }\n" 2216 | " rotation {\n" 2217 | " x: 0.0\n" 2218 | " y: 0.0\n" 2219 | " z: 0.0\n" 2220 | " w: 1.0\n" 2221 | " }\n" 2222 | "}\n" 2223 | "embedded_components {\n" 2224 | " id: \"wall\"\n" 2225 | " type: \"sprite\"\n" 2226 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2227 | "default_animation: \\\"Hills_wall\\\"\\n" 2228 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2229 | "blend_mode: BLEND_MODE_ALPHA\\n" 2230 | "\"\n" 2231 | " position {\n" 2232 | " x: -1040.0\n" 2233 | " y: 114.0\n" 2234 | " z: 0.03\n" 2235 | " }\n" 2236 | " rotation {\n" 2237 | " x: 0.0\n" 2238 | " y: 0.0\n" 2239 | " z: 0.0\n" 2240 | " w: 1.0\n" 2241 | " }\n" 2242 | "}\n" 2243 | "embedded_components {\n" 2244 | " id: \"wall1\"\n" 2245 | " type: \"sprite\"\n" 2246 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2247 | "default_animation: \\\"Hills_wall\\\"\\n" 2248 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2249 | "blend_mode: BLEND_MODE_ALPHA\\n" 2250 | "\"\n" 2251 | " position {\n" 2252 | " x: -567.0\n" 2253 | " y: 323.0\n" 2254 | " z: 0.03\n" 2255 | " }\n" 2256 | " rotation {\n" 2257 | " x: 0.0\n" 2258 | " y: 0.0\n" 2259 | " z: 0.0\n" 2260 | " w: 1.0\n" 2261 | " }\n" 2262 | "}\n" 2263 | "embedded_components {\n" 2264 | " id: \"wall2\"\n" 2265 | " type: \"sprite\"\n" 2266 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2267 | "default_animation: \\\"Hills_wall\\\"\\n" 2268 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2269 | "blend_mode: BLEND_MODE_ALPHA\\n" 2270 | "\"\n" 2271 | " position {\n" 2272 | " x: 4764.0\n" 2273 | " y: 323.0\n" 2274 | " z: 0.03\n" 2275 | " }\n" 2276 | " rotation {\n" 2277 | " x: 0.0\n" 2278 | " y: 0.0\n" 2279 | " z: 0.0\n" 2280 | " w: 1.0\n" 2281 | " }\n" 2282 | "}\n" 2283 | "" 2284 | position { 2285 | x: 0.0 2286 | y: -335.0 2287 | z: -1.0 2288 | } 2289 | rotation { 2290 | x: 0.0 2291 | y: 0.0 2292 | z: 0.0 2293 | w: 1.0 2294 | } 2295 | scale3 { 2296 | x: 1.0 2297 | y: 1.0 2298 | z: 1.0 2299 | } 2300 | } 2301 | embedded_instances { 2302 | id: "group_1" 2303 | data: "embedded_components {\n" 2304 | " id: \"sprite\"\n" 2305 | " type: \"sprite\"\n" 2306 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2307 | "default_animation: \\\"Cloud_1\\\"\\n" 2308 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2309 | "blend_mode: BLEND_MODE_ALPHA\\n" 2310 | "\"\n" 2311 | " position {\n" 2312 | " x: 1003.0\n" 2313 | " y: 46.0\n" 2314 | " z: -94.0\n" 2315 | " }\n" 2316 | " rotation {\n" 2317 | " x: 0.0\n" 2318 | " y: 0.0\n" 2319 | " z: 0.0\n" 2320 | " w: 1.0\n" 2321 | " }\n" 2322 | "}\n" 2323 | "embedded_components {\n" 2324 | " id: \"sprite1\"\n" 2325 | " type: \"sprite\"\n" 2326 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2327 | "default_animation: \\\"Cloud_2\\\"\\n" 2328 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2329 | "blend_mode: BLEND_MODE_ALPHA\\n" 2330 | "\"\n" 2331 | " position {\n" 2332 | " x: 1382.0\n" 2333 | " y: -26.0\n" 2334 | " z: -30.0\n" 2335 | " }\n" 2336 | " rotation {\n" 2337 | " x: 0.0\n" 2338 | " y: 0.0\n" 2339 | " z: 0.0\n" 2340 | " w: 1.0\n" 2341 | " }\n" 2342 | "}\n" 2343 | "embedded_components {\n" 2344 | " id: \"sprite2\"\n" 2345 | " type: \"sprite\"\n" 2346 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2347 | "default_animation: \\\"Cloud_3\\\"\\n" 2348 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2349 | "blend_mode: BLEND_MODE_ALPHA\\n" 2350 | "\"\n" 2351 | " position {\n" 2352 | " x: 1732.0\n" 2353 | " y: 178.0\n" 2354 | " z: 13.0\n" 2355 | " }\n" 2356 | " rotation {\n" 2357 | " x: 0.0\n" 2358 | " y: 0.0\n" 2359 | " z: 0.0\n" 2360 | " w: 1.0\n" 2361 | " }\n" 2362 | "}\n" 2363 | "embedded_components {\n" 2364 | " id: \"sprite3\"\n" 2365 | " type: \"sprite\"\n" 2366 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2367 | "default_animation: \\\"Cloud_4\\\"\\n" 2368 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2369 | "blend_mode: BLEND_MODE_ALPHA\\n" 2370 | "\"\n" 2371 | " position {\n" 2372 | " x: 2135.0\n" 2373 | " y: -17.0\n" 2374 | " z: 11.0\n" 2375 | " }\n" 2376 | " rotation {\n" 2377 | " x: 0.0\n" 2378 | " y: 0.0\n" 2379 | " z: 0.0\n" 2380 | " w: 1.0\n" 2381 | " }\n" 2382 | "}\n" 2383 | "embedded_components {\n" 2384 | " id: \"sprite4\"\n" 2385 | " type: \"sprite\"\n" 2386 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2387 | "default_animation: \\\"Cloud_2\\\"\\n" 2388 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2389 | "blend_mode: BLEND_MODE_ALPHA\\n" 2390 | "\"\n" 2391 | " position {\n" 2392 | " x: 453.0\n" 2393 | " y: 20.0\n" 2394 | " z: -30.0\n" 2395 | " }\n" 2396 | " rotation {\n" 2397 | " x: 0.0\n" 2398 | " y: 0.0\n" 2399 | " z: 0.0\n" 2400 | " w: 1.0\n" 2401 | " }\n" 2402 | "}\n" 2403 | "embedded_components {\n" 2404 | " id: \"sprite5\"\n" 2405 | " type: \"sprite\"\n" 2406 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2407 | "default_animation: \\\"Cloud_3\\\"\\n" 2408 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2409 | "blend_mode: BLEND_MODE_ALPHA\\n" 2410 | "\"\n" 2411 | " position {\n" 2412 | " x: 127.0\n" 2413 | " y: 130.0\n" 2414 | " z: 13.0\n" 2415 | " }\n" 2416 | " rotation {\n" 2417 | " x: 0.0\n" 2418 | " y: 0.0\n" 2419 | " z: 0.0\n" 2420 | " w: 1.0\n" 2421 | " }\n" 2422 | "}\n" 2423 | "embedded_components {\n" 2424 | " id: \"sprite6\"\n" 2425 | " type: \"sprite\"\n" 2426 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2427 | "default_animation: \\\"Cloud_1\\\"\\n" 2428 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2429 | "blend_mode: BLEND_MODE_ALPHA\\n" 2430 | "\"\n" 2431 | " position {\n" 2432 | " x: 2796.0\n" 2433 | " y: 87.0\n" 2434 | " z: 57.0\n" 2435 | " }\n" 2436 | " rotation {\n" 2437 | " x: 0.0\n" 2438 | " y: 0.0\n" 2439 | " z: 0.0\n" 2440 | " w: 1.0\n" 2441 | " }\n" 2442 | "}\n" 2443 | "embedded_components {\n" 2444 | " id: \"sprite7\"\n" 2445 | " type: \"sprite\"\n" 2446 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2447 | "default_animation: \\\"Cloud_1\\\"\\n" 2448 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2449 | "blend_mode: BLEND_MODE_ALPHA\\n" 2450 | "\"\n" 2451 | " position {\n" 2452 | " x: 4124.0\n" 2453 | " y: 49.0\n" 2454 | " z: 83.0\n" 2455 | " }\n" 2456 | " rotation {\n" 2457 | " x: 0.0\n" 2458 | " y: 0.0\n" 2459 | " z: 0.0\n" 2460 | " w: 1.0\n" 2461 | " }\n" 2462 | "}\n" 2463 | "embedded_components {\n" 2464 | " id: \"sprite8\"\n" 2465 | " type: \"sprite\"\n" 2466 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2467 | "default_animation: \\\"Cloud_2\\\"\\n" 2468 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2469 | "blend_mode: BLEND_MODE_ALPHA\\n" 2470 | "\"\n" 2471 | " position {\n" 2472 | " x: 3436.0\n" 2473 | " y: -86.0\n" 2474 | " z: 141.0\n" 2475 | " }\n" 2476 | " rotation {\n" 2477 | " x: 0.0\n" 2478 | " y: 0.0\n" 2479 | " z: 0.0\n" 2480 | " w: 1.0\n" 2481 | " }\n" 2482 | "}\n" 2483 | "embedded_components {\n" 2484 | " id: \"collisionobject\"\n" 2485 | " type: \"collisionobject\"\n" 2486 | " data: \"collision_shape: \\\"\\\"\\n" 2487 | "type: COLLISION_OBJECT_TYPE_KINEMATIC\\n" 2488 | "mass: 0.0\\n" 2489 | "friction: 0.0\\n" 2490 | "restitution: 0.0\\n" 2491 | "group: \\\"cloud\\\"\\n" 2492 | "mask: \\\"reset\\\"\\n" 2493 | "embedded_collision_shape {\\n" 2494 | " shapes {\\n" 2495 | " shape_type: TYPE_BOX\\n" 2496 | " position {\\n" 2497 | " x: 0.0\\n" 2498 | " y: 0.0\\n" 2499 | " z: 0.0\\n" 2500 | " }\\n" 2501 | " rotation {\\n" 2502 | " x: 0.0\\n" 2503 | " y: 0.0\\n" 2504 | " z: 0.0\\n" 2505 | " w: 1.0\\n" 2506 | " }\\n" 2507 | " index: 0\\n" 2508 | " count: 3\\n" 2509 | " }\\n" 2510 | " data: 10.0\\n" 2511 | " data: 10.0\\n" 2512 | " data: 10.0\\n" 2513 | "}\\n" 2514 | "linear_damping: 0.0\\n" 2515 | "angular_damping: 0.0\\n" 2516 | "locked_rotation: true\\n" 2517 | "bullet: false\\n" 2518 | "\"\n" 2519 | " position {\n" 2520 | " x: 0.0\n" 2521 | " y: 0.0\n" 2522 | " z: 0.0\n" 2523 | " }\n" 2524 | " rotation {\n" 2525 | " x: 0.0\n" 2526 | " y: 0.0\n" 2527 | " z: 0.0\n" 2528 | " w: 1.0\n" 2529 | " }\n" 2530 | "}\n" 2531 | "" 2532 | position { 2533 | x: -1146.0 2534 | y: 0.0 2535 | z: 0.0 2536 | } 2537 | rotation { 2538 | x: 0.0 2539 | y: 0.0 2540 | z: 0.0 2541 | w: 1.0 2542 | } 2543 | scale3 { 2544 | x: 1.0 2545 | y: 1.0 2546 | z: 1.0 2547 | } 2548 | } 2549 | embedded_instances { 2550 | id: "group_2" 2551 | data: "embedded_components {\n" 2552 | " id: \"sprite9\"\n" 2553 | " type: \"sprite\"\n" 2554 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2555 | "default_animation: \\\"Cloud_2\\\"\\n" 2556 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2557 | "blend_mode: BLEND_MODE_ALPHA\\n" 2558 | "\"\n" 2559 | " position {\n" 2560 | " x: 506.0\n" 2561 | " y: 23.0\n" 2562 | " z: -30.0\n" 2563 | " }\n" 2564 | " rotation {\n" 2565 | " x: 0.0\n" 2566 | " y: 0.0\n" 2567 | " z: 0.0\n" 2568 | " w: 1.0\n" 2569 | " }\n" 2570 | "}\n" 2571 | "embedded_components {\n" 2572 | " id: \"sprite10\"\n" 2573 | " type: \"sprite\"\n" 2574 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2575 | "default_animation: \\\"Cloud_4\\\"\\n" 2576 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2577 | "blend_mode: BLEND_MODE_ALPHA\\n" 2578 | "\"\n" 2579 | " position {\n" 2580 | " x: 100.0\n" 2581 | " y: -17.0\n" 2582 | " z: 132.0\n" 2583 | " }\n" 2584 | " rotation {\n" 2585 | " x: 0.0\n" 2586 | " y: 0.0\n" 2587 | " z: 0.0\n" 2588 | " w: 1.0\n" 2589 | " }\n" 2590 | "}\n" 2591 | "embedded_components {\n" 2592 | " id: \"sprite11\"\n" 2593 | " type: \"sprite\"\n" 2594 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2595 | "default_animation: \\\"Cloud_4\\\"\\n" 2596 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2597 | "blend_mode: BLEND_MODE_ALPHA\\n" 2598 | "\"\n" 2599 | " position {\n" 2600 | " x: 2007.0\n" 2601 | " y: -17.0\n" 2602 | " z: 11.0\n" 2603 | " }\n" 2604 | " rotation {\n" 2605 | " x: 0.0\n" 2606 | " y: 0.0\n" 2607 | " z: 0.0\n" 2608 | " w: 1.0\n" 2609 | " }\n" 2610 | "}\n" 2611 | "embedded_components {\n" 2612 | " id: \"sprite12\"\n" 2613 | " type: \"sprite\"\n" 2614 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2615 | "default_animation: \\\"Cloud_2\\\"\\n" 2616 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2617 | "blend_mode: BLEND_MODE_ALPHA\\n" 2618 | "\"\n" 2619 | " position {\n" 2620 | " x: 1431.0\n" 2621 | " y: -45.0\n" 2622 | " z: 176.0\n" 2623 | " }\n" 2624 | " rotation {\n" 2625 | " x: 0.0\n" 2626 | " y: 0.0\n" 2627 | " z: 0.0\n" 2628 | " w: 1.0\n" 2629 | " }\n" 2630 | "}\n" 2631 | "embedded_components {\n" 2632 | " id: \"sprite13\"\n" 2633 | " type: \"sprite\"\n" 2634 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2635 | "default_animation: \\\"Cloud_3\\\"\\n" 2636 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2637 | "blend_mode: BLEND_MODE_ALPHA\\n" 2638 | "\"\n" 2639 | " position {\n" 2640 | " x: 1077.0\n" 2641 | " y: 101.0\n" 2642 | " z: 13.0\n" 2643 | " }\n" 2644 | " rotation {\n" 2645 | " x: 0.0\n" 2646 | " y: 0.0\n" 2647 | " z: 0.0\n" 2648 | " w: 1.0\n" 2649 | " }\n" 2650 | "}\n" 2651 | "embedded_components {\n" 2652 | " id: \"sprite14\"\n" 2653 | " type: \"sprite\"\n" 2654 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2655 | "default_animation: \\\"Cloud_3\\\"\\n" 2656 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2657 | "blend_mode: BLEND_MODE_ALPHA\\n" 2658 | "\"\n" 2659 | " position {\n" 2660 | " x: 2313.0\n" 2661 | " y: 155.0\n" 2662 | " z: 13.0\n" 2663 | " }\n" 2664 | " rotation {\n" 2665 | " x: 0.0\n" 2666 | " y: 0.0\n" 2667 | " z: 0.0\n" 2668 | " w: 1.0\n" 2669 | " }\n" 2670 | "}\n" 2671 | "embedded_components {\n" 2672 | " id: \"sprite15\"\n" 2673 | " type: \"sprite\"\n" 2674 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2675 | "default_animation: \\\"Cloud_2\\\"\\n" 2676 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2677 | "blend_mode: BLEND_MODE_ALPHA\\n" 2678 | "\"\n" 2679 | " position {\n" 2680 | " x: 2738.0\n" 2681 | " y: -53.0\n" 2682 | " z: -30.0\n" 2683 | " }\n" 2684 | " rotation {\n" 2685 | " x: 0.0\n" 2686 | " y: 0.0\n" 2687 | " z: 0.0\n" 2688 | " w: 1.0\n" 2689 | " }\n" 2690 | "}\n" 2691 | "embedded_components {\n" 2692 | " id: \"sprite16\"\n" 2693 | " type: \"sprite\"\n" 2694 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2695 | "default_animation: \\\"Cloud_1\\\"\\n" 2696 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2697 | "blend_mode: BLEND_MODE_ALPHA\\n" 2698 | "\"\n" 2699 | " position {\n" 2700 | " x: 3162.0\n" 2701 | " y: 34.0\n" 2702 | " z: 122.0\n" 2703 | " }\n" 2704 | " rotation {\n" 2705 | " x: 0.0\n" 2706 | " y: 0.0\n" 2707 | " z: 0.0\n" 2708 | " w: 1.0\n" 2709 | " }\n" 2710 | "}\n" 2711 | "embedded_components {\n" 2712 | " id: \"collisionobject\"\n" 2713 | " type: \"collisionobject\"\n" 2714 | " data: \"collision_shape: \\\"\\\"\\n" 2715 | "type: COLLISION_OBJECT_TYPE_KINEMATIC\\n" 2716 | "mass: 0.0\\n" 2717 | "friction: 0.0\\n" 2718 | "restitution: 0.0\\n" 2719 | "group: \\\"cloud\\\"\\n" 2720 | "mask: \\\"reset\\\"\\n" 2721 | "embedded_collision_shape {\\n" 2722 | " shapes {\\n" 2723 | " shape_type: TYPE_BOX\\n" 2724 | " position {\\n" 2725 | " x: 0.0\\n" 2726 | " y: 0.0\\n" 2727 | " z: 0.0\\n" 2728 | " }\\n" 2729 | " rotation {\\n" 2730 | " x: 0.0\\n" 2731 | " y: 0.0\\n" 2732 | " z: 0.0\\n" 2733 | " w: 1.0\\n" 2734 | " }\\n" 2735 | " index: 0\\n" 2736 | " count: 3\\n" 2737 | " }\\n" 2738 | " data: 10.0\\n" 2739 | " data: 10.0\\n" 2740 | " data: 10.0\\n" 2741 | "}\\n" 2742 | "linear_damping: 0.0\\n" 2743 | "angular_damping: 0.0\\n" 2744 | "locked_rotation: true\\n" 2745 | "bullet: false\\n" 2746 | "\"\n" 2747 | " position {\n" 2748 | " x: 0.0\n" 2749 | " y: 0.0\n" 2750 | " z: 0.0\n" 2751 | " }\n" 2752 | " rotation {\n" 2753 | " x: 0.0\n" 2754 | " y: 0.0\n" 2755 | " z: 0.0\n" 2756 | " w: 1.0\n" 2757 | " }\n" 2758 | "}\n" 2759 | "" 2760 | position { 2761 | x: 3389.0 2762 | y: 0.0 2763 | z: 0.0 2764 | } 2765 | rotation { 2766 | x: 0.0 2767 | y: 0.0 2768 | z: 0.0 2769 | w: 1.0 2770 | } 2771 | scale3 { 2772 | x: 1.0 2773 | y: 1.0 2774 | z: 1.0 2775 | } 2776 | } 2777 | embedded_instances { 2778 | id: "group_3" 2779 | data: "embedded_components {\n" 2780 | " id: \"sprite17\"\n" 2781 | " type: \"sprite\"\n" 2782 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2783 | "default_animation: \\\"Cloud_2\\\"\\n" 2784 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2785 | "blend_mode: BLEND_MODE_ALPHA\\n" 2786 | "\"\n" 2787 | " position {\n" 2788 | " x: 1382.0\n" 2789 | " y: -26.0\n" 2790 | " z: -30.0\n" 2791 | " }\n" 2792 | " rotation {\n" 2793 | " x: 0.0\n" 2794 | " y: 0.0\n" 2795 | " z: 0.0\n" 2796 | " w: 1.0\n" 2797 | " }\n" 2798 | "}\n" 2799 | "embedded_components {\n" 2800 | " id: \"sprite18\"\n" 2801 | " type: \"sprite\"\n" 2802 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2803 | "default_animation: \\\"Cloud_3\\\"\\n" 2804 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2805 | "blend_mode: BLEND_MODE_ALPHA\\n" 2806 | "\"\n" 2807 | " position {\n" 2808 | " x: 1732.0\n" 2809 | " y: 178.0\n" 2810 | " z: 13.0\n" 2811 | " }\n" 2812 | " rotation {\n" 2813 | " x: 0.0\n" 2814 | " y: 0.0\n" 2815 | " z: 0.0\n" 2816 | " w: 1.0\n" 2817 | " }\n" 2818 | "}\n" 2819 | "embedded_components {\n" 2820 | " id: \"sprite19\"\n" 2821 | " type: \"sprite\"\n" 2822 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2823 | "default_animation: \\\"Cloud_4\\\"\\n" 2824 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2825 | "blend_mode: BLEND_MODE_ALPHA\\n" 2826 | "\"\n" 2827 | " position {\n" 2828 | " x: 2135.0\n" 2829 | " y: -17.0\n" 2830 | " z: 11.0\n" 2831 | " }\n" 2832 | " rotation {\n" 2833 | " x: 0.0\n" 2834 | " y: 0.0\n" 2835 | " z: 0.0\n" 2836 | " w: 1.0\n" 2837 | " }\n" 2838 | "}\n" 2839 | "embedded_components {\n" 2840 | " id: \"sprite20\"\n" 2841 | " type: \"sprite\"\n" 2842 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2843 | "default_animation: \\\"Cloud_2\\\"\\n" 2844 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2845 | "blend_mode: BLEND_MODE_ALPHA\\n" 2846 | "\"\n" 2847 | " position {\n" 2848 | " x: 453.0\n" 2849 | " y: 20.0\n" 2850 | " z: -30.0\n" 2851 | " }\n" 2852 | " rotation {\n" 2853 | " x: 0.0\n" 2854 | " y: 0.0\n" 2855 | " z: 0.0\n" 2856 | " w: 1.0\n" 2857 | " }\n" 2858 | "}\n" 2859 | "embedded_components {\n" 2860 | " id: \"sprite21\"\n" 2861 | " type: \"sprite\"\n" 2862 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2863 | "default_animation: \\\"Cloud_3\\\"\\n" 2864 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2865 | "blend_mode: BLEND_MODE_ALPHA\\n" 2866 | "\"\n" 2867 | " position {\n" 2868 | " x: 127.0\n" 2869 | " y: 130.0\n" 2870 | " z: 13.0\n" 2871 | " }\n" 2872 | " rotation {\n" 2873 | " x: 0.0\n" 2874 | " y: 0.0\n" 2875 | " z: 0.0\n" 2876 | " w: 1.0\n" 2877 | " }\n" 2878 | "}\n" 2879 | "embedded_components {\n" 2880 | " id: \"sprite22\"\n" 2881 | " type: \"sprite\"\n" 2882 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2883 | "default_animation: \\\"Cloud_1\\\"\\n" 2884 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2885 | "blend_mode: BLEND_MODE_ALPHA\\n" 2886 | "\"\n" 2887 | " position {\n" 2888 | " x: 2796.0\n" 2889 | " y: 87.0\n" 2890 | " z: 122.0\n" 2891 | " }\n" 2892 | " rotation {\n" 2893 | " x: 0.0\n" 2894 | " y: 0.0\n" 2895 | " z: 0.0\n" 2896 | " w: 1.0\n" 2897 | " }\n" 2898 | "}\n" 2899 | "embedded_components {\n" 2900 | " id: \"sprite23\"\n" 2901 | " type: \"sprite\"\n" 2902 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2903 | "default_animation: \\\"Cloud_1\\\"\\n" 2904 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2905 | "blend_mode: BLEND_MODE_ALPHA\\n" 2906 | "\"\n" 2907 | " position {\n" 2908 | " x: 3799.0\n" 2909 | " y: 49.0\n" 2910 | " z: 136.0\n" 2911 | " }\n" 2912 | " rotation {\n" 2913 | " x: 0.0\n" 2914 | " y: 0.0\n" 2915 | " z: 0.0\n" 2916 | " w: 1.0\n" 2917 | " }\n" 2918 | "}\n" 2919 | "embedded_components {\n" 2920 | " id: \"collisionobject\"\n" 2921 | " type: \"collisionobject\"\n" 2922 | " data: \"collision_shape: \\\"\\\"\\n" 2923 | "type: COLLISION_OBJECT_TYPE_TRIGGER\\n" 2924 | "mass: 0.0\\n" 2925 | "friction: 0.0\\n" 2926 | "restitution: 0.0\\n" 2927 | "group: \\\"cloud\\\"\\n" 2928 | "mask: \\\"reset\\\"\\n" 2929 | "embedded_collision_shape {\\n" 2930 | " shapes {\\n" 2931 | " shape_type: TYPE_BOX\\n" 2932 | " position {\\n" 2933 | " x: 0.0\\n" 2934 | " y: 0.0\\n" 2935 | " z: 0.0\\n" 2936 | " }\\n" 2937 | " rotation {\\n" 2938 | " x: 0.0\\n" 2939 | " y: 0.0\\n" 2940 | " z: 0.0\\n" 2941 | " w: 1.0\\n" 2942 | " }\\n" 2943 | " index: 0\\n" 2944 | " count: 3\\n" 2945 | " }\\n" 2946 | " data: 10.0\\n" 2947 | " data: 10.0\\n" 2948 | " data: 10.0\\n" 2949 | "}\\n" 2950 | "linear_damping: 0.0\\n" 2951 | "angular_damping: 0.0\\n" 2952 | "locked_rotation: false\\n" 2953 | "bullet: false\\n" 2954 | "\"\n" 2955 | " position {\n" 2956 | " x: 0.0\n" 2957 | " y: 0.0\n" 2958 | " z: 0.0\n" 2959 | " }\n" 2960 | " rotation {\n" 2961 | " x: 0.0\n" 2962 | " y: 0.0\n" 2963 | " z: 0.0\n" 2964 | " w: 1.0\n" 2965 | " }\n" 2966 | "}\n" 2967 | "" 2968 | position { 2969 | x: 7355.0 2970 | y: 0.0 2971 | z: 0.0 2972 | } 2973 | rotation { 2974 | x: 0.0 2975 | y: 0.0 2976 | z: 0.0 2977 | w: 1.0 2978 | } 2979 | scale3 { 2980 | x: 1.0 2981 | y: 1.0 2982 | z: 1.0 2983 | } 2984 | } 2985 | embedded_instances { 2986 | id: "group_4" 2987 | data: "embedded_components {\n" 2988 | " id: \"sprite\"\n" 2989 | " type: \"sprite\"\n" 2990 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 2991 | "default_animation: \\\"Cloud_bg_1\\\"\\n" 2992 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 2993 | "blend_mode: BLEND_MODE_ALPHA\\n" 2994 | "\"\n" 2995 | " position {\n" 2996 | " x: 607.0\n" 2997 | " y: 65.0\n" 2998 | " z: -44.0\n" 2999 | " }\n" 3000 | " rotation {\n" 3001 | " x: 0.0\n" 3002 | " y: 0.0\n" 3003 | " z: 0.0\n" 3004 | " w: 1.0\n" 3005 | " }\n" 3006 | "}\n" 3007 | "embedded_components {\n" 3008 | " id: \"sprite1\"\n" 3009 | " type: \"sprite\"\n" 3010 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3011 | "default_animation: \\\"Cloud_bg_2\\\"\\n" 3012 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3013 | "blend_mode: BLEND_MODE_ALPHA\\n" 3014 | "\"\n" 3015 | " position {\n" 3016 | " x: 94.0\n" 3017 | " y: 161.0\n" 3018 | " z: 51.0\n" 3019 | " }\n" 3020 | " rotation {\n" 3021 | " x: 0.0\n" 3022 | " y: 0.0\n" 3023 | " z: 0.0\n" 3024 | " w: 1.0\n" 3025 | " }\n" 3026 | "}\n" 3027 | "embedded_components {\n" 3028 | " id: \"sprite2\"\n" 3029 | " type: \"sprite\"\n" 3030 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3031 | "default_animation: \\\"Cloud_bg_3\\\"\\n" 3032 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3033 | "blend_mode: BLEND_MODE_ALPHA\\n" 3034 | "\"\n" 3035 | " position {\n" 3036 | " x: 966.0\n" 3037 | " y: 249.0\n" 3038 | " z: 124.0\n" 3039 | " }\n" 3040 | " rotation {\n" 3041 | " x: 0.0\n" 3042 | " y: 0.0\n" 3043 | " z: 0.0\n" 3044 | " w: 1.0\n" 3045 | " }\n" 3046 | "}\n" 3047 | "embedded_components {\n" 3048 | " id: \"sprite3\"\n" 3049 | " type: \"sprite\"\n" 3050 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3051 | "default_animation: \\\"Cloud_bg_1\\\"\\n" 3052 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3053 | "blend_mode: BLEND_MODE_ALPHA\\n" 3054 | "\"\n" 3055 | " position {\n" 3056 | " x: 2008.0\n" 3057 | " y: 217.0\n" 3058 | " z: -44.0\n" 3059 | " }\n" 3060 | " rotation {\n" 3061 | " x: 0.0\n" 3062 | " y: 0.0\n" 3063 | " z: 0.0\n" 3064 | " w: 1.0\n" 3065 | " }\n" 3066 | "}\n" 3067 | "embedded_components {\n" 3068 | " id: \"sprite4\"\n" 3069 | " type: \"sprite\"\n" 3070 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3071 | "default_animation: \\\"Cloud_bg_1\\\"\\n" 3072 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3073 | "blend_mode: BLEND_MODE_ALPHA\\n" 3074 | "\"\n" 3075 | " position {\n" 3076 | " x: 3122.0\n" 3077 | " y: 134.0\n" 3078 | " z: -44.0\n" 3079 | " }\n" 3080 | " rotation {\n" 3081 | " x: 0.0\n" 3082 | " y: 0.0\n" 3083 | " z: 0.0\n" 3084 | " w: 1.0\n" 3085 | " }\n" 3086 | "}\n" 3087 | "embedded_components {\n" 3088 | " id: \"sprite10\"\n" 3089 | " type: \"sprite\"\n" 3090 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3091 | "default_animation: \\\"Cloud_bg_3\\\"\\n" 3092 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3093 | "blend_mode: BLEND_MODE_ALPHA\\n" 3094 | "\"\n" 3095 | " position {\n" 3096 | " x: 2287.0\n" 3097 | " y: 76.0\n" 3098 | " z: 124.0\n" 3099 | " }\n" 3100 | " rotation {\n" 3101 | " x: 0.0\n" 3102 | " y: 0.0\n" 3103 | " z: 0.0\n" 3104 | " w: 1.0\n" 3105 | " }\n" 3106 | "}\n" 3107 | "embedded_components {\n" 3108 | " id: \"sprite11\"\n" 3109 | " type: \"sprite\"\n" 3110 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3111 | "default_animation: \\\"Cloud_bg_3\\\"\\n" 3112 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3113 | "blend_mode: BLEND_MODE_ALPHA\\n" 3114 | "\"\n" 3115 | " position {\n" 3116 | " x: 3368.0\n" 3117 | " y: 177.0\n" 3118 | " z: 124.0\n" 3119 | " }\n" 3120 | " rotation {\n" 3121 | " x: 0.0\n" 3122 | " y: 0.0\n" 3123 | " z: 0.0\n" 3124 | " w: 1.0\n" 3125 | " }\n" 3126 | "}\n" 3127 | "embedded_components {\n" 3128 | " id: \"sprite16\"\n" 3129 | " type: \"sprite\"\n" 3130 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3131 | "default_animation: \\\"Cloud_bg_2\\\"\\n" 3132 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3133 | "blend_mode: BLEND_MODE_ALPHA\\n" 3134 | "\"\n" 3135 | " position {\n" 3136 | " x: 2551.0\n" 3137 | " y: 178.0\n" 3138 | " z: 51.0\n" 3139 | " }\n" 3140 | " rotation {\n" 3141 | " x: 0.0\n" 3142 | " y: 0.0\n" 3143 | " z: 0.0\n" 3144 | " w: 1.0\n" 3145 | " }\n" 3146 | "}\n" 3147 | "embedded_components {\n" 3148 | " id: \"sprite20\"\n" 3149 | " type: \"sprite\"\n" 3150 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3151 | "default_animation: \\\"Cloud_bg_2\\\"\\n" 3152 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3153 | "blend_mode: BLEND_MODE_ALPHA\\n" 3154 | "\"\n" 3155 | " position {\n" 3156 | " x: 3624.0\n" 3157 | " y: 261.0\n" 3158 | " z: 51.0\n" 3159 | " }\n" 3160 | " rotation {\n" 3161 | " x: 0.0\n" 3162 | " y: 0.0\n" 3163 | " z: 0.0\n" 3164 | " w: 1.0\n" 3165 | " }\n" 3166 | "}\n" 3167 | "embedded_components {\n" 3168 | " id: \"collisionobject\"\n" 3169 | " type: \"collisionobject\"\n" 3170 | " data: \"collision_shape: \\\"\\\"\\n" 3171 | "type: COLLISION_OBJECT_TYPE_TRIGGER\\n" 3172 | "mass: 0.0\\n" 3173 | "friction: 0.0\\n" 3174 | "restitution: 0.0\\n" 3175 | "group: \\\"cloud\\\"\\n" 3176 | "mask: \\\"reset\\\"\\n" 3177 | "embedded_collision_shape {\\n" 3178 | " shapes {\\n" 3179 | " shape_type: TYPE_BOX\\n" 3180 | " position {\\n" 3181 | " x: 0.0\\n" 3182 | " y: 0.0\\n" 3183 | " z: 0.0\\n" 3184 | " }\\n" 3185 | " rotation {\\n" 3186 | " x: 0.0\\n" 3187 | " y: 0.0\\n" 3188 | " z: 0.0\\n" 3189 | " w: 1.0\\n" 3190 | " }\\n" 3191 | " index: 0\\n" 3192 | " count: 3\\n" 3193 | " }\\n" 3194 | " data: 10.0\\n" 3195 | " data: 10.0\\n" 3196 | " data: 10.0\\n" 3197 | "}\\n" 3198 | "linear_damping: 0.0\\n" 3199 | "angular_damping: 0.0\\n" 3200 | "locked_rotation: false\\n" 3201 | "bullet: false\\n" 3202 | "\"\n" 3203 | " position {\n" 3204 | " x: 0.0\n" 3205 | " y: 0.0\n" 3206 | " z: 0.0\n" 3207 | " }\n" 3208 | " rotation {\n" 3209 | " x: 0.0\n" 3210 | " y: 0.0\n" 3211 | " z: 0.0\n" 3212 | " w: 1.0\n" 3213 | " }\n" 3214 | "}\n" 3215 | "" 3216 | position { 3217 | x: -1419.0 3218 | y: 0.0 3219 | z: 0.0 3220 | } 3221 | rotation { 3222 | x: 0.0 3223 | y: 0.0 3224 | z: 0.0 3225 | w: 1.0 3226 | } 3227 | scale3 { 3228 | x: 1.0 3229 | y: 1.0 3230 | z: 1.0 3231 | } 3232 | } 3233 | embedded_instances { 3234 | id: "group_5" 3235 | data: "embedded_components {\n" 3236 | " id: \"sprite5\"\n" 3237 | " type: \"sprite\"\n" 3238 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3239 | "default_animation: \\\"Cloud_bg_1\\\"\\n" 3240 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3241 | "blend_mode: BLEND_MODE_ALPHA\\n" 3242 | "\"\n" 3243 | " position {\n" 3244 | " x: 103.0\n" 3245 | " y: 318.0\n" 3246 | " z: -44.0\n" 3247 | " }\n" 3248 | " rotation {\n" 3249 | " x: 0.0\n" 3250 | " y: 0.0\n" 3251 | " z: 0.0\n" 3252 | " w: 1.0\n" 3253 | " }\n" 3254 | "}\n" 3255 | "embedded_components {\n" 3256 | " id: \"sprite6\"\n" 3257 | " type: \"sprite\"\n" 3258 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3259 | "default_animation: \\\"Cloud_bg_1\\\"\\n" 3260 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3261 | "blend_mode: BLEND_MODE_ALPHA\\n" 3262 | "\"\n" 3263 | " position {\n" 3264 | " x: 1033.0\n" 3265 | " y: 209.0\n" 3266 | " z: -44.0\n" 3267 | " }\n" 3268 | " rotation {\n" 3269 | " x: 0.0\n" 3270 | " y: 0.0\n" 3271 | " z: 0.0\n" 3272 | " w: 1.0\n" 3273 | " }\n" 3274 | "}\n" 3275 | "embedded_components {\n" 3276 | " id: \"sprite7\"\n" 3277 | " type: \"sprite\"\n" 3278 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3279 | "default_animation: \\\"Cloud_bg_1\\\"\\n" 3280 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3281 | "blend_mode: BLEND_MODE_ALPHA\\n" 3282 | "\"\n" 3283 | " position {\n" 3284 | " x: 2196.0\n" 3285 | " y: 318.0\n" 3286 | " z: -44.0\n" 3287 | " }\n" 3288 | " rotation {\n" 3289 | " x: 0.0\n" 3290 | " y: 0.0\n" 3291 | " z: 0.0\n" 3292 | " w: 1.0\n" 3293 | " }\n" 3294 | "}\n" 3295 | "embedded_components {\n" 3296 | " id: \"sprite8\"\n" 3297 | " type: \"sprite\"\n" 3298 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3299 | "default_animation: \\\"Cloud_bg_1\\\"\\n" 3300 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3301 | "blend_mode: BLEND_MODE_ALPHA\\n" 3302 | "\"\n" 3303 | " position {\n" 3304 | " x: 3160.0\n" 3305 | " y: 222.0\n" 3306 | " z: -44.0\n" 3307 | " }\n" 3308 | " rotation {\n" 3309 | " x: 0.0\n" 3310 | " y: 0.0\n" 3311 | " z: 0.0\n" 3312 | " w: 1.0\n" 3313 | " }\n" 3314 | "}\n" 3315 | "embedded_components {\n" 3316 | " id: \"sprite9\"\n" 3317 | " type: \"sprite\"\n" 3318 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3319 | "default_animation: \\\"Cloud_bg_1\\\"\\n" 3320 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3321 | "blend_mode: BLEND_MODE_ALPHA\\n" 3322 | "\"\n" 3323 | " position {\n" 3324 | " x: 4008.0\n" 3325 | " y: 310.0\n" 3326 | " z: -44.0\n" 3327 | " }\n" 3328 | " rotation {\n" 3329 | " x: 0.0\n" 3330 | " y: 0.0\n" 3331 | " z: 0.0\n" 3332 | " w: 1.0\n" 3333 | " }\n" 3334 | "}\n" 3335 | "embedded_components {\n" 3336 | " id: \"sprite12\"\n" 3337 | " type: \"sprite\"\n" 3338 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3339 | "default_animation: \\\"Cloud_bg_3\\\"\\n" 3340 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3341 | "blend_mode: BLEND_MODE_ALPHA\\n" 3342 | "\"\n" 3343 | " position {\n" 3344 | " x: 632.0\n" 3345 | " y: 153.0\n" 3346 | " z: 124.0\n" 3347 | " }\n" 3348 | " rotation {\n" 3349 | " x: 0.0\n" 3350 | " y: 0.0\n" 3351 | " z: 0.0\n" 3352 | " w: 1.0\n" 3353 | " }\n" 3354 | "}\n" 3355 | "embedded_components {\n" 3356 | " id: \"sprite13\"\n" 3357 | " type: \"sprite\"\n" 3358 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3359 | "default_animation: \\\"Cloud_bg_3\\\"\\n" 3360 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3361 | "blend_mode: BLEND_MODE_ALPHA\\n" 3362 | "\"\n" 3363 | " position {\n" 3364 | " x: 2025.0\n" 3365 | " y: 268.0\n" 3366 | " z: 124.0\n" 3367 | " }\n" 3368 | " rotation {\n" 3369 | " x: 0.0\n" 3370 | " y: 0.0\n" 3371 | " z: 0.0\n" 3372 | " w: 1.0\n" 3373 | " }\n" 3374 | "}\n" 3375 | "embedded_components {\n" 3376 | " id: \"sprite14\"\n" 3377 | " type: \"sprite\"\n" 3378 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3379 | "default_animation: \\\"Cloud_bg_3\\\"\\n" 3380 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3381 | "blend_mode: BLEND_MODE_ALPHA\\n" 3382 | "\"\n" 3383 | " position {\n" 3384 | " x: 3357.0\n" 3385 | " y: 185.0\n" 3386 | " z: 124.0\n" 3387 | " }\n" 3388 | " rotation {\n" 3389 | " x: 0.0\n" 3390 | " y: 0.0\n" 3391 | " z: 0.0\n" 3392 | " w: 1.0\n" 3393 | " }\n" 3394 | "}\n" 3395 | "embedded_components {\n" 3396 | " id: \"sprite15\"\n" 3397 | " type: \"sprite\"\n" 3398 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3399 | "default_animation: \\\"Cloud_bg_3\\\"\\n" 3400 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3401 | "blend_mode: BLEND_MODE_ALPHA\\n" 3402 | "\"\n" 3403 | " position {\n" 3404 | " x: 3835.0\n" 3405 | " y: 185.0\n" 3406 | " z: 124.0\n" 3407 | " }\n" 3408 | " rotation {\n" 3409 | " x: 0.0\n" 3410 | " y: 0.0\n" 3411 | " z: 0.0\n" 3412 | " w: 1.0\n" 3413 | " }\n" 3414 | "}\n" 3415 | "embedded_components {\n" 3416 | " id: \"sprite17\"\n" 3417 | " type: \"sprite\"\n" 3418 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3419 | "default_animation: \\\"Cloud_bg_2\\\"\\n" 3420 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3421 | "blend_mode: BLEND_MODE_ALPHA\\n" 3422 | "\"\n" 3423 | " position {\n" 3424 | " x: 395.0\n" 3425 | " y: 97.0\n" 3426 | " z: 51.0\n" 3427 | " }\n" 3428 | " rotation {\n" 3429 | " x: 0.0\n" 3430 | " y: 0.0\n" 3431 | " z: 0.0\n" 3432 | " w: 1.0\n" 3433 | " }\n" 3434 | "}\n" 3435 | "embedded_components {\n" 3436 | " id: \"sprite18\"\n" 3437 | " type: \"sprite\"\n" 3438 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3439 | "default_animation: \\\"Cloud_bg_2\\\"\\n" 3440 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3441 | "blend_mode: BLEND_MODE_ALPHA\\n" 3442 | "\"\n" 3443 | " position {\n" 3444 | " x: 1861.0\n" 3445 | " y: 159.0\n" 3446 | " z: 51.0\n" 3447 | " }\n" 3448 | " rotation {\n" 3449 | " x: 0.0\n" 3450 | " y: 0.0\n" 3451 | " z: 0.0\n" 3452 | " w: 1.0\n" 3453 | " }\n" 3454 | "}\n" 3455 | "embedded_components {\n" 3456 | " id: \"sprite19\"\n" 3457 | " type: \"sprite\"\n" 3458 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3459 | "default_animation: \\\"Cloud_bg_2\\\"\\n" 3460 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3461 | "blend_mode: BLEND_MODE_ALPHA\\n" 3462 | "\"\n" 3463 | " position {\n" 3464 | " x: 4382.0\n" 3465 | " y: 159.0\n" 3466 | " z: 51.0\n" 3467 | " }\n" 3468 | " rotation {\n" 3469 | " x: 0.0\n" 3470 | " y: 0.0\n" 3471 | " z: 0.0\n" 3472 | " w: 1.0\n" 3473 | " }\n" 3474 | "}\n" 3475 | "embedded_components {\n" 3476 | " id: \"collisionobject\"\n" 3477 | " type: \"collisionobject\"\n" 3478 | " data: \"collision_shape: \\\"\\\"\\n" 3479 | "type: COLLISION_OBJECT_TYPE_TRIGGER\\n" 3480 | "mass: 0.0\\n" 3481 | "friction: 0.0\\n" 3482 | "restitution: 0.0\\n" 3483 | "group: \\\"cloud\\\"\\n" 3484 | "mask: \\\"reset\\\"\\n" 3485 | "embedded_collision_shape {\\n" 3486 | " shapes {\\n" 3487 | " shape_type: TYPE_BOX\\n" 3488 | " position {\\n" 3489 | " x: 0.0\\n" 3490 | " y: 0.0\\n" 3491 | " z: 0.0\\n" 3492 | " }\\n" 3493 | " rotation {\\n" 3494 | " x: 0.0\\n" 3495 | " y: 0.0\\n" 3496 | " z: 0.0\\n" 3497 | " w: 1.0\\n" 3498 | " }\\n" 3499 | " index: 0\\n" 3500 | " count: 3\\n" 3501 | " }\\n" 3502 | " data: 10.0\\n" 3503 | " data: 10.0\\n" 3504 | " data: 10.0\\n" 3505 | "}\\n" 3506 | "linear_damping: 0.0\\n" 3507 | "angular_damping: 0.0\\n" 3508 | "locked_rotation: false\\n" 3509 | "bullet: false\\n" 3510 | "\"\n" 3511 | " position {\n" 3512 | " x: 0.0\n" 3513 | " y: 0.0\n" 3514 | " z: 0.0\n" 3515 | " }\n" 3516 | " rotation {\n" 3517 | " x: 0.0\n" 3518 | " y: 0.0\n" 3519 | " z: 0.0\n" 3520 | " w: 1.0\n" 3521 | " }\n" 3522 | "}\n" 3523 | "" 3524 | position { 3525 | x: 2585.0 3526 | y: 0.0 3527 | z: 0.0 3528 | } 3529 | rotation { 3530 | x: 0.0 3531 | y: 0.0 3532 | z: 0.0 3533 | w: 1.0 3534 | } 3535 | scale3 { 3536 | x: 1.0 3537 | y: 1.0 3538 | z: 1.0 3539 | } 3540 | } 3541 | embedded_instances { 3542 | id: "group_6" 3543 | data: "embedded_components {\n" 3544 | " id: \"sprite21\"\n" 3545 | " type: \"sprite\"\n" 3546 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3547 | "default_animation: \\\"Cloud_bg_3\\\"\\n" 3548 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3549 | "blend_mode: BLEND_MODE_ALPHA\\n" 3550 | "\"\n" 3551 | " position {\n" 3552 | " x: 2865.0\n" 3553 | " y: 177.0\n" 3554 | " z: 124.0\n" 3555 | " }\n" 3556 | " rotation {\n" 3557 | " x: 0.0\n" 3558 | " y: 0.0\n" 3559 | " z: 0.0\n" 3560 | " w: 1.0\n" 3561 | " }\n" 3562 | "}\n" 3563 | "embedded_components {\n" 3564 | " id: \"sprite23\"\n" 3565 | " type: \"sprite\"\n" 3566 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3567 | "default_animation: \\\"Cloud_bg_1\\\"\\n" 3568 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3569 | "blend_mode: BLEND_MODE_ALPHA\\n" 3570 | "\"\n" 3571 | " position {\n" 3572 | " x: 1505.0\n" 3573 | " y: 217.0\n" 3574 | " z: -44.0\n" 3575 | " }\n" 3576 | " rotation {\n" 3577 | " x: 0.0\n" 3578 | " y: 0.0\n" 3579 | " z: 0.0\n" 3580 | " w: 1.0\n" 3581 | " }\n" 3582 | "}\n" 3583 | "embedded_components {\n" 3584 | " id: \"sprite26\"\n" 3585 | " type: \"sprite\"\n" 3586 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3587 | "default_animation: \\\"Cloud_bg_3\\\"\\n" 3588 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3589 | "blend_mode: BLEND_MODE_ALPHA\\n" 3590 | "\"\n" 3591 | " position {\n" 3592 | " x: 1784.0\n" 3593 | " y: 76.0\n" 3594 | " z: 124.0\n" 3595 | " }\n" 3596 | " rotation {\n" 3597 | " x: 0.0\n" 3598 | " y: 0.0\n" 3599 | " z: 0.0\n" 3600 | " w: 1.0\n" 3601 | " }\n" 3602 | "}\n" 3603 | "embedded_components {\n" 3604 | " id: \"sprite27\"\n" 3605 | " type: \"sprite\"\n" 3606 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3607 | "default_animation: \\\"Cloud_bg_3\\\"\\n" 3608 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3609 | "blend_mode: BLEND_MODE_ALPHA\\n" 3610 | "\"\n" 3611 | " position {\n" 3612 | " x: 463.0\n" 3613 | " y: 249.0\n" 3614 | " z: 124.0\n" 3615 | " }\n" 3616 | " rotation {\n" 3617 | " x: 0.0\n" 3618 | " y: 0.0\n" 3619 | " z: 0.0\n" 3620 | " w: 1.0\n" 3621 | " }\n" 3622 | "}\n" 3623 | "embedded_components {\n" 3624 | " id: \"sprite29\"\n" 3625 | " type: \"sprite\"\n" 3626 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3627 | "default_animation: \\\"Cloud_bg_1\\\"\\n" 3628 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3629 | "blend_mode: BLEND_MODE_ALPHA\\n" 3630 | "\"\n" 3631 | " position {\n" 3632 | " x: 3521.0\n" 3633 | " y: 318.0\n" 3634 | " z: -44.0\n" 3635 | " }\n" 3636 | " rotation {\n" 3637 | " x: 0.0\n" 3638 | " y: 0.0\n" 3639 | " z: 0.0\n" 3640 | " w: 1.0\n" 3641 | " }\n" 3642 | "}\n" 3643 | "embedded_components {\n" 3644 | " id: \"sprite30\"\n" 3645 | " type: \"sprite\"\n" 3646 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3647 | "default_animation: \\\"Cloud_bg_1\\\"\\n" 3648 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3649 | "blend_mode: BLEND_MODE_ALPHA\\n" 3650 | "\"\n" 3651 | " position {\n" 3652 | " x: 104.0\n" 3653 | " y: 65.0\n" 3654 | " z: -44.0\n" 3655 | " }\n" 3656 | " rotation {\n" 3657 | " x: 0.0\n" 3658 | " y: 0.0\n" 3659 | " z: 0.0\n" 3660 | " w: 1.0\n" 3661 | " }\n" 3662 | "}\n" 3663 | "embedded_components {\n" 3664 | " id: \"sprite31\"\n" 3665 | " type: \"sprite\"\n" 3666 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3667 | "default_animation: \\\"Cloud_bg_3\\\"\\n" 3668 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3669 | "blend_mode: BLEND_MODE_ALPHA\\n" 3670 | "\"\n" 3671 | " position {\n" 3672 | " x: 4050.0\n" 3673 | " y: 153.0\n" 3674 | " z: 124.0\n" 3675 | " }\n" 3676 | " rotation {\n" 3677 | " x: 0.0\n" 3678 | " y: 0.0\n" 3679 | " z: 0.0\n" 3680 | " w: 1.0\n" 3681 | " }\n" 3682 | "}\n" 3683 | "embedded_components {\n" 3684 | " id: \"sprite34\"\n" 3685 | " type: \"sprite\"\n" 3686 | " data: \"tile_set: \\\"/assets/misc/sprites.atlas\\\"\\n" 3687 | "default_animation: \\\"Cloud_bg_2\\\"\\n" 3688 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 3689 | "blend_mode: BLEND_MODE_ALPHA\\n" 3690 | "\"\n" 3691 | " position {\n" 3692 | " x: 3121.0\n" 3693 | " y: 261.0\n" 3694 | " z: 51.0\n" 3695 | " }\n" 3696 | " rotation {\n" 3697 | " x: 0.0\n" 3698 | " y: 0.0\n" 3699 | " z: 0.0\n" 3700 | " w: 1.0\n" 3701 | " }\n" 3702 | "}\n" 3703 | "embedded_components {\n" 3704 | " id: \"collisionobject\"\n" 3705 | " type: \"collisionobject\"\n" 3706 | " data: \"collision_shape: \\\"\\\"\\n" 3707 | "type: COLLISION_OBJECT_TYPE_TRIGGER\\n" 3708 | "mass: 0.0\\n" 3709 | "friction: 0.0\\n" 3710 | "restitution: 0.0\\n" 3711 | "group: \\\"cloud\\\"\\n" 3712 | "mask: \\\"reset\\\"\\n" 3713 | "embedded_collision_shape {\\n" 3714 | " shapes {\\n" 3715 | " shape_type: TYPE_BOX\\n" 3716 | " position {\\n" 3717 | " x: 0.0\\n" 3718 | " y: 0.0\\n" 3719 | " z: 0.0\\n" 3720 | " }\\n" 3721 | " rotation {\\n" 3722 | " x: 0.0\\n" 3723 | " y: 0.0\\n" 3724 | " z: 0.0\\n" 3725 | " w: 1.0\\n" 3726 | " }\\n" 3727 | " index: 0\\n" 3728 | " count: 3\\n" 3729 | " }\\n" 3730 | " data: 10.0\\n" 3731 | " data: 10.0\\n" 3732 | " data: 10.0\\n" 3733 | "}\\n" 3734 | "linear_damping: 0.0\\n" 3735 | "angular_damping: 0.0\\n" 3736 | "locked_rotation: false\\n" 3737 | "bullet: false\\n" 3738 | "\"\n" 3739 | " position {\n" 3740 | " x: 0.0\n" 3741 | " y: 0.0\n" 3742 | " z: 0.0\n" 3743 | " }\n" 3744 | " rotation {\n" 3745 | " x: 0.0\n" 3746 | " y: 0.0\n" 3747 | " z: 0.0\n" 3748 | " w: 1.0\n" 3749 | " }\n" 3750 | "}\n" 3751 | "" 3752 | position { 3753 | x: 7331.0 3754 | y: 0.0 3755 | z: 0.0 3756 | } 3757 | rotation { 3758 | x: 0.0 3759 | y: 0.0 3760 | z: 0.0 3761 | w: 1.0 3762 | } 3763 | scale3 { 3764 | x: 1.0 3765 | y: 1.0 3766 | z: 1.0 3767 | } 3768 | } 3769 | embedded_instances { 3770 | id: "reciever" 3771 | data: "components {\n" 3772 | " id: \"scene_manage\"\n" 3773 | " component: \"/assets/script/scene_manage.script\"\n" 3774 | " position {\n" 3775 | " x: 0.0\n" 3776 | " y: 0.0\n" 3777 | " z: 0.0\n" 3778 | " }\n" 3779 | " rotation {\n" 3780 | " x: 0.0\n" 3781 | " y: 0.0\n" 3782 | " z: 0.0\n" 3783 | " w: 1.0\n" 3784 | " }\n" 3785 | " property_decls {\n" 3786 | " }\n" 3787 | "}\n" 3788 | "embedded_components {\n" 3789 | " id: \"collisionobject\"\n" 3790 | " type: \"collisionobject\"\n" 3791 | " data: \"collision_shape: \\\"\\\"\\n" 3792 | "type: COLLISION_OBJECT_TYPE_TRIGGER\\n" 3793 | "mass: 0.0\\n" 3794 | "friction: 0.0\\n" 3795 | "restitution: 0.0\\n" 3796 | "group: \\\"reset\\\"\\n" 3797 | "mask: \\\"cloud\\\"\\n" 3798 | "embedded_collision_shape {\\n" 3799 | " shapes {\\n" 3800 | " shape_type: TYPE_BOX\\n" 3801 | " position {\\n" 3802 | " x: 0.0\\n" 3803 | " y: 0.0\\n" 3804 | " z: 0.0\\n" 3805 | " }\\n" 3806 | " rotation {\\n" 3807 | " x: 0.0\\n" 3808 | " y: 0.0\\n" 3809 | " z: 0.0\\n" 3810 | " w: 1.0\\n" 3811 | " }\\n" 3812 | " index: 0\\n" 3813 | " count: 3\\n" 3814 | " }\\n" 3815 | " data: 100.0\\n" 3816 | " data: 300.0\\n" 3817 | " data: 10.0\\n" 3818 | "}\\n" 3819 | "linear_damping: 0.0\\n" 3820 | "angular_damping: 0.0\\n" 3821 | "locked_rotation: false\\n" 3822 | "bullet: false\\n" 3823 | "\"\n" 3824 | " position {\n" 3825 | " x: 0.0\n" 3826 | " y: 0.0\n" 3827 | " z: 0.0\n" 3828 | " }\n" 3829 | " rotation {\n" 3830 | " x: 0.0\n" 3831 | " y: 0.0\n" 3832 | " z: 0.0\n" 3833 | " w: 1.0\n" 3834 | " }\n" 3835 | "}\n" 3836 | "" 3837 | position { 3838 | x: -6100.0 3839 | y: 173.0 3840 | z: 0.0 3841 | } 3842 | rotation { 3843 | x: 0.0 3844 | y: 0.0 3845 | z: 0.0 3846 | w: 1.0 3847 | } 3848 | scale3 { 3849 | x: 1.0 3850 | y: 1.0 3851 | z: 1.0 3852 | } 3853 | } 3854 | -------------------------------------------------------------------------------- /render/3D.render: -------------------------------------------------------------------------------- 1 | script: "/render/3D.render_script" 2 | -------------------------------------------------------------------------------- /render/3D.render_script: -------------------------------------------------------------------------------- 1 | -- 2 | -- projection that centers content with maintained aspect ratio and optional zoom 3 | -- 4 | local function fixed_projection(near, far, zoom) 5 | local projected_width = render.get_window_width() / (zoom or 1) 6 | local projected_height = render.get_window_height() / (zoom or 1) 7 | local xoffset = -(projected_width - render.get_width()) / 2 8 | local yoffset = -(projected_height - render.get_height()) / 2 9 | return vmath.matrix4_orthographic(xoffset, xoffset + projected_width, yoffset, yoffset + projected_height, near, far) 10 | end 11 | -- 12 | -- projection that centers and fits content with maintained aspect ratio 13 | -- 14 | local function fixed_fit_projection(near, far) 15 | local width = render.get_width() 16 | local height = render.get_height() 17 | local window_width = render.get_window_width() 18 | local window_height = render.get_window_height() 19 | local zoom = math.min(window_width / width, window_height / height) 20 | return fixed_projection(near, far, zoom) 21 | end 22 | -- 23 | -- projection that stretches content 24 | -- 25 | local function stretch_projection(near, far) 26 | return vmath.matrix4_orthographic(0, render.get_width(), 0, render.get_height(), near, far) 27 | end 28 | 29 | local function get_projection(self) 30 | return self.projection_fn(self.near, self.far, self.zoom) 31 | end 32 | 33 | function init(self) 34 | self.tile_pred = render.predicate({"tile"}) 35 | self.gui_pred = render.predicate({"gui"}) 36 | self.particle_pred = render.predicate({"particle"}) 37 | self.model_pred = render.predicate({"model"}) 38 | 39 | self.clear_color = vmath.vector4(0, 0, 0, 0) 40 | self.clear_color.x = sys.get_config("render.clear_color_red", 0) 41 | self.clear_color.y = sys.get_config("render.clear_color_green", 0) 42 | self.clear_color.z = sys.get_config("render.clear_color_blue", 0) 43 | self.clear_color.w = sys.get_config("render.clear_color_alpha", 0) 44 | 45 | self.view = vmath.matrix4() 46 | 47 | self.near = -1 48 | self.far = 1 49 | self.projection_fn = stretch_projection 50 | end 51 | 52 | function update(self) 53 | local window_width = render.get_window_width() 54 | local window_height = render.get_window_height() 55 | if window_width == 0 or window_height == 0 then 56 | return 57 | end 58 | local proj = get_projection(self) 59 | local frustum_component = proj * self.view 60 | 61 | render.set_depth_mask(true) 62 | render.set_stencil_mask(0xff) 63 | render.clear({[render.BUFFER_COLOR_BIT] = self.clear_color, [render.BUFFER_DEPTH_BIT] = 1, [render.BUFFER_STENCIL_BIT] = 0}) 64 | 65 | render.set_viewport(0, 0, window_width, window_height) 66 | render.set_view(self.view) 67 | render.set_projection(proj) 68 | 69 | -- render models 70 | -- 71 | render.set_blend_func(render.BLEND_SRC_ALPHA, render.BLEND_ONE_MINUS_SRC_ALPHA) 72 | render.enable_state(render.STATE_BLEND) 73 | render.enable_state(render.STATE_STENCIL_TEST) 74 | render.enable_state(render.STATE_DEPTH_TEST) 75 | render.set_depth_mask(true) 76 | render.draw(self.model_pred, {frustum = frustum_component}) 77 | render.set_depth_mask(false) 78 | render.disable_state(render.STATE_DEPTH_TEST) 79 | render.disable_state(render.STATE_STENCIL_TEST) 80 | 81 | -- render sprites, label, particles 82 | -- 83 | 84 | render.enable_state(render.STATE_DEPTH_TEST) 85 | render.enable_state(render.STATE_STENCIL_TEST) 86 | render.draw(self.tile_pred, {frustum = frustum_component}) 87 | render.draw(self.particle_pred, {frustum = frustum_component}) 88 | render.disable_state(render.STATE_STENCIL_TEST) 89 | render.disable_state(render.STATE_DEPTH_TEST) 90 | 91 | -- debug 92 | render.draw_debug3d() 93 | 94 | -- render GUI 95 | -- 96 | local view_gui = vmath.matrix4() 97 | local proj_gui = vmath.matrix4_orthographic(0, window_width, 0, window_height, -1, 1) 98 | local frustum_gui = proj_gui * view_gui 99 | 100 | render.set_view(view_gui) 101 | render.set_projection(proj_gui) 102 | 103 | render.enable_state(render.STATE_STENCIL_TEST) 104 | render.draw(self.gui_pred, {frustum = frustum_gui}) 105 | render.disable_state(render.STATE_STENCIL_TEST) 106 | render.disable_state(render.STATE_BLEND) 107 | end 108 | 109 | function on_message(self, message_id, message) 110 | if message_id == hash("clear_color") then 111 | self.clear_color = message.color 112 | elseif message_id == hash("set_view_projection") then 113 | self.view = message.view 114 | self.projection = message.projection 115 | elseif message_id == hash("use_camera_projection") then 116 | self.projection_fn = function() return self.projection or vmath.matrix4() end 117 | elseif message_id == hash("use_stretch_projection") then 118 | self.near = message.near or -1 119 | self.far = message.far or 1 120 | self.projection_fn = stretch_projection 121 | elseif message_id == hash("use_fixed_projection") then 122 | self.near = message.near or -1 123 | self.far = message.far or 1 124 | self.zoom = message.zoom or 1 125 | self.projection_fn = fixed_projection 126 | elseif message_id == hash("use_fixed_fit_projection") then 127 | self.near = message.near or -1 128 | self.far = message.far or 1 129 | self.projection_fn = fixed_fit_projection 130 | end 131 | end 132 | --------------------------------------------------------------------------------