Geometry ⎢ 3D effect platformer

Instructions: ★★★★★ Geometry ⎢2.5D platformer ★★★★★\n\nControl :\n-Directional arrow to move\n-Mobile friendly\n\n★★★★★ Credit ★★★★★ \n\nGame made by :\n\n@974_Baguette\n\nGame tested by :\n\n@scratcheur974\n@nath_appadoo\n@membre_du_groupe_94\n\n★★★★★ Advert ★★★★★ \n\nSee the new game by @scratcheur974 !\n\nReverse-A plateformer \nhttps://scratch.mit.edu/projects/506023040/\n\nSee the new game by @974_Baguette !\n\nJetpack Platformer V.2.0\nhttps://scratch.mit.edu/projects/377795063\n–––––––––––––––––––––––––––––––––––––––––––\n\n★★★★★ Geometry ⎢2.5D platformer ★★★★★\n\nContrôler :\n-Flèche directionnelle pour se déplacer\n-Jouable sur mobile\n\n★★★★★ Crédit ★★★★★\n\nJeu réalisé par:\n\n@ 974_Baguette\n\nJeu testé par:\n\n@scratcheur974\n@nath_appadoo\n@membre_du_groupe_94\n\n★★★★★ Annonce ★★★★★\n\nDécouvrez le nouveau jeu de @scratcheur974 !\n\nReverse-A plateformer \nhttps://scratch.mit.edu/projects/506023040/\n\nDécouvrez le nouveau jeu de @974_Baguette\n\nJetpack Platformer V.2.0\nhttps://scratch.mit.edu/projects/377795063\n\n#platformer #3D #me #game #engine #amazing #cloud #speedrun #jeux

@Stage\n\nwhen [space v] key pressed\nif <(username) = [974_Baguette]> then\n    change [levels : v] by (1)\n    broadcast (Reset v)\nend\nwait until <not <key (space v) pressed?>>\n\nwhen flag clicked\nset [cam x v] to [0]\nset [cam y v] to [50]\nforever\n    if <(username) = [974_Baguette]> then\n        change [cam x v] by ((<key (d v) pressed?> - <key (q v) pressed?>) * (10))\n        change [cam y v] by ((<key (z v) pressed?> - <key (s v) pressed?>) * (10))\n    else\n        set [cam x v] to [0]\n        set [cam y v] to [50]\n    end\nend\n\nwhen flag clicked\nforever\n    play sound [Amadeus - Future world v] until done\nend\n\n@Joueur\n\nwhen flag clicked\nhide\nReset\nset drag mode [draggable v]\nforever\n    go to x: ((0) - (mouse x)) y: ((0) - (mouse y))\n    if <<<<(mouse x) < [163]> and <(mouse x) > [-163]>> and <<(mouse y) < [110]> and <(mouse y) > [-86]>>> and <mouse down?>> then\n        broadcast (Start v)\n    end\nend\n\ndefine Mouvement y\nswitch costume to (hit box v)\nif <not <touching (terrain v)?>> then\n    change [vitesse y v] by (-2)\n    if <(Vitesse y) < [-20]> then\n        set [vitesse y v] to [-20]\n    end\nend\nchange y by (Vitesse y)\nif <touching (terrain v)?> then\n    if <(Vitesse y) < [0]> then\n        set [vitesse y v] to [0]\n        repeat until <not <touching (terrain v)?>>\n            change y by (1)\n        end\n    else\n        set [vitesse y v] to [-1]\n        repeat until <not <touching (terrain v)?>>\n            change y by (-1)\n        end\n    end\nend\nif <<key (up arrow v) pressed?> and <(Vitesse y) = [0]>> then\n    set [vitesse y v] to [21]\nend\nswitch costume to (joueur2 v)\n\ndefine Mouvement x (vitesse x)\nswitch costume to (hit box v)\nif <<key (left arrow v) pressed?> or <key (right arrow v) pressed?>> then\n    set [vitesse x v] to ((vitesse x) * (<key (right arrow v) pressed?> - <key (left arrow v) pressed?>))\nelse\n    set [vitesse x v] to ((Vitesse x) - ((Vitesse x) / (7)))\nend\nchange x by (Vitesse x)\nrepeat (8)\n    if <touching (terrain v)?> then\n        change y by (2)\n    else\n        switch costume to (joueur2 v)\n        stop [this script v]\n    end\nend\nchange x by ((0) - (Vitesse x))\nchange y by (-16)\nswitch costume to (joueur2 v)\n\ndefine Reset\nbroadcast (Reset v)\nset [ghost v] effect to (30)\nset [vitesse y v] to [0]\nset [vitesse x v] to [0]\n\ndefine Tick\nMouvement y\nMouvement x [8]\npoint in direction (Vitesse x)\nif <<(y position) < [-179]> or <touching (lave / piques v)?>> then\n    glide (0.5) secs to x: (-220) y: (-100)\n    Reset\nend\nif <(x position) > [235]> then\n    change [levels : v] by (1)\n    broadcast (Reset v)\n    glide (0.5) secs to x: (-220) y: (-100)\n    Reset\nend\n\nwhen I receive [start v]\nshow\nstop [other scripts in sprite v]\nforever\n    Tick\nend\n\nset [☁ record du monde v] to [1000]\n\nset [transparence v] to [85]\n\nforever\n    go to x: ((0) - (mouse x)) y: ((0) - (mouse y))\nend\n\n@Terrain\n\nwhen flag clicked\nswitch costume to (0 v)\nset [ghost v] effect to (Transparence)\nset [levels : v] to [0]\n\nwhen I receive [start v]\ngo to x: (0) y: (0)\nshow\nset size to (100) %\nforever\n    set [ghost v] effect to (Transparence)\n    switch costume to (Levels :)\n    go to [back v] layer\nend\n\nwhen I receive [start v]\nset [levels : v] to [1]\n\n@Lave / piques\n\nset [transparence v] to [80]\n\nwhen I receive [start v]\ngo to x: (0) y: (0)\nshow\nset size to (100) %\nforever\n    set [ghost v] effect to (Transparence)\n    switch costume to (Levels :)\n    go to [back v] layer\nend\n\nwhen flag clicked\nhide\n\n@Jump boost\n\nwhen I receive [start v]\ngo to x: (0) y: (0)\nshow\nset size to (100) %\nforever\n    set [ghost v] effect to (Transparence)\n    switch costume to (Levels :)\n    go to [back v] layer\n    if <touching (joueur v)?> then\n        set [vitesse y v] to [31]\n    end\nend\n\nwhen flag clicked\nhide\n\n@Terrain3D\n\nwhen I start as a clone\nforever\n    set x to (((([x position v] of [joueur v]) + (Cam x)) * ((100) - (size))) / (50))\n    set y to (((([y position v] of [joueur v]) + (Cam y)) * ((100) - (size))) / (50))\n    go [forward v] ((size) - (100)) layers\nend\n\nwhen I receive [reset v]\nbroadcast (Suppr clone v) and wait\ngo to x: (0) y: (0)\nswitch costume to (Levels :)\nset size to (105) %\nshow\nCloner\nhide\n\nwhen I receive [suppr clone v]\ndelete this clone\n\ndefine Cloner\nset [ghost v] effect to (50)\ncreate clone of (_myself_ v)\nset [ghost v] effect to (Transparence)\nrepeat (11)\n    create clone of (_myself_ v)\n    change size by (-1)\n    if <(size) = [100]> then\n        change size by (-1)\n    end\nend\nset [ghost v] effect to (50)\ncreate clone of (_myself_ v)\n\nif <<<touching (joueur v)?> or <touching (joueur3d v)?>> and <(size) < [100]>> then\n    go to [back v] layer\nelse\n    go to [front v] layer\nend\n\nwhen I receive [start v]\nswitch costume to (1 v)\n\n@Joueur3D2\n\ndefine Cloner\nset [ghost v] effect to (50)\nswitch costume to (joueur2 v)\ncreate clone of (_myself_ v)\nswitch costume to (joueur v)\nrepeat (5)\n    change size by (-1)\n    create clone of (_myself_ v)\n    if <(size) = [101]> then\n        change size by (-1)\n    end\nend\nswitch costume to (joueur2 v)\ncreate clone of (_myself_ v)\n\nwhen I start as a clone\nforever\n    set x to ((((([x position v] of [joueur v]) + ((Cam x) - (([x position v] of [joueur v]) / (2)))) * ((100) - (size))) / (50)) + ([x position v] of [joueur v]))\n    set y to ((((([y position v] of [joueur v]) + ((Cam y) - (([y position v] of [joueur v]) / (2)))) * ((100) - (size))) / (50)) + ([y position v] of [joueur v]))\n    go [backward v] ((100) - (size)) layers\nend\n\nwhen I receive [start v]\ngo to x: (0) y: (0)\nset size to (102) %\nshow\nCloner\nhide\n\n@Sprite1\n\nwhen flag clicked\nhide\nDécode\nset [record : v] to (join (join (☁ Record du monde) [ sec]) (join [ by ] (Codé)))\nwait until <not <mouse down?>>\nrepeat until <<key (any v) pressed?> or <mouse down?>>\n    reset timer\n    set [time : v] to [0]\nend\nrepeat until <(Levels :) = [15]>\n    set [time : v] to ((round ((timer) * (10))) / (10))\nend\nif <(Time :) < (☁ Record du monde)> then\n    set [☁ record du monde v] to (Time :)\n    set [lettre v] to [1]\n    set [☁ nom du joueur v] to []\n    repeat (length of (username))\n        set [☁ nom du joueur v] to (join (☁ Nom du joueur) (item # of (letter (Lettre) of (username)) in [code v]))\n        change [lettre v] by (1)\n    end\n    set [record : v] to (join (join (☁ Record du monde) [ sec]) (join [ by ] (username)))\nend\n\ndefine Décode\nset [codé v] to []\nset [lettre v] to [1]\nrepeat ((length of (☁ Nom du joueur)) / (2))\n    set [codé v] to (join (Codé) (item (join (letter (((Lettre) * (2)) - (1)) of (☁ Nom du joueur)) (letter ((Lettre) * (2)) of (☁ Nom du joueur))) of [code v]))\n    change [lettre v] by (1)\nend\n\n@Sprite2\n\nwhen I receive [start v]\nhide\nforever\n    set [ghost v] effect to (Transparence)\n    go to [back v] layer\n    show\n    if <mouse down?> then\n        go to (mouse-pointer v)\n        repeat until <not <mouse down?>>\n            point towards (mouse-pointer v)\n            if <(distance to [mouse-pointer v]) > [20]> then\n                if <<(direction) > [20]> and <(direction) < [180]>> then\n                    set [vitesse x v] to ((distance to [mouse-pointer v]) - (20))\n                    if <(Vitesse x) > [8]> then\n                        set [vitesse x v] to [8]\n                    end\n                end\n                if <<(direction) > [-180]> and <(direction) < [-20]>> then\n                    set [vitesse x v] to ((0) - ((distance to [mouse-pointer v]) - (20)))\n                    if <(Vitesse x) < [-8]> then\n                        set [vitesse x v] to [-8]\n                    end\n                end\n                if <<<(direction) > [-70]> and <(direction) < [70]>> and <(Vitesse y) = [0]>> then\n                    set [vitesse y v] to [21]\n                end\n            end\n        end\n    else\n        hide\n    end\nend\n\n