Good Platformer Tutorial

Instructions: --------------------------------Tutorial-------------------------------\n\nWelcome to the tutorial of your lifetime. Have you ever wondered how the top scratchers always have such amazing projects? Well, I'm here to teach you! In this tutorial, we will cover the basics of platformer controls. \n\nIncluding:\n\nWall Jumping? ✔\nSlope Detection? ✔\nBasic Controls? (Movement) ✔\nCollisions? \nTrails? ✔\nAnd more!\n\n--------------------------------Credits-------------------------------\n\n✨@FUNUT for the YouTube tutorial for this project.\n✨@StardustAnimation (Me)  for making this project.\n✨@Gamerlots for some ideas to add some stuff and the wall jumping script!\n✨And finally, you for viewing + Supporting.\n                                      \n                                         - ✨@StardustAnimation✨

@Stage\n\nwhen flag clicked\nbroadcast (Green Flag v)\nswitch backdrop to (sky v)\n\nwhen I receive [tutorial v]\nswitch backdrop to (sky2 v)\n\nwhen flag clicked\nforever\n    play sound [Janji - Heroes Tonight \(feat v] until done\nend\n\nwhen flag clicked\nforever\n    set volume to (Volume) %\nend\n\n@Player\n\ndefine Platform Gravity: (gravity) Jump Height: (jump height) Speed: (speed) Friction: (friction) Slope: (slope)\nchange [y velocity v] by (gravity)\nchange y by (Y Velocity)\nif <touching (level v)?> then\n    repeat until <not <touching (level v)?>>\n        change y by ((([abs v] of (Y Velocity) ) / (Y Velocity)) * (-1))\n    end\n    set [y velocity v] to (<<key (up arrow v) pressed?> and <(([abs v] of (Y Velocity) ) / (Y Velocity)) = [-1]>> * (jump height))\nend\nset [x velocity v] to (((X Velocity) + ((<key (left arrow v) pressed?> * ((speed) * (-1))) + (<key (right arrow v) pressed?> * (speed)))) * (friction))\nchange x by (X Velocity)\nset [slope v] to [0]\nrepeat until <<(Slope) = ((slope) * (-1))> or <not <touching (level v)?>>>\n    change y by (1)\n    change [slope v] by (-1)\nend\nif <touching (level v)?> then\n    change y by (Slope)\n    repeat until <not <touching (level v)?>>\n        change x by ((([abs v] of (X Velocity) ) / (X Velocity)) * (-1))\n    end\n    if <<key (up arrow v) pressed?> or <key (w v) pressed?>> then\n        set [x velocity v] to ((([abs v] of (X Velocity) ) / (X Velocity)) * (-10))\n        set [y velocity v] to [12]\n    end\nend\n\nwhen I receive [begin start lop v]\nhide\n\nwhen I receive [demo v]\nswitch costume to (player v)\ngo to x: (-50) y: (150)\nset [x velocity v] to [0]\nset [y velocity v] to [0]\nshow\nforever\n    Platform Gravity: [-1] Jump Height: [15] Speed: [3] Friction: [.7] Slope: [10]\nend\n\nwhen flag clicked\nhide\n\nwhen I receive [tutorial v]\nhide\nstop [other scripts in sprite v]\n\nwhen flag clicked\nforever\n    if <<<(X Velocity) > [1]> or <(Y Velocity) > [1]>> or <<(X Velocity) < [1]> or <(Y Velocity) < [1]>>> then\n        create clone of (_myself_ v)\n    end\nend\n\nwhen I start as a clone\nset [ghost v] effect to (0)\nset size to (100) %\nswitch costume to (trails v)\nrepeat (10)\n    change size by (-5)\n    change [ghost v] effect by (10)\nend\ndelete this clone\n\nwait (0) seconds\n\n@Level\n\nwhen flag clicked\nhide\n\nwhen I receive [demo v]\nshow\n\nwhen I receive [green flag v]\nhide\n\n@Menu\n\nwhen flag clicked\nhide\n\nwhen I receive [green flag v]\nshow\n\nwhen I receive [demo v]\nhide\n\nwhen I receive [tutorial v]\nhide\n\n@Play\n\nwhen flag clicked\nhide\n\nwhen I receive [green flag v]\nshow\nforever\n    if <touching (mouse-pointer v)?> then\n        set [brightness v] effect to (-10)\n        change size by (((110) - (size)) / (5))\n        point in direction (([sin v] of ((timer) * (1000)) ) + (90))\n    else\n        point in direction (90)\n        set [brightness v] effect to (0)\n        change size by (((100) - (size)) / (5))\n    end\nend\n\nwhen I receive [green flag v]\nforever\n    if <<touching (mouse-pointer v)?> and <mouse down?>> then\n        start sound [Mouse Click - Free Sound Effect v]\n        broadcast (Demo v)\n        hide\n    end\nend\n\nwhen I receive [tutorial v]\nhide\n\n@Tutorial\n\nwhen I receive [green flag v]\nshow\nforever\n    if <touching (mouse-pointer v)?> then\n        set [brightness v] effect to (-10)\n        change size by (((110) - (size)) / (5))\n        point in direction (([sin v] of ((timer) * (1000)) ) + (90))\n    else\n        point in direction (90)\n        set [brightness v] effect to (0)\n        change size by (((100) - (size)) / (5))\n    end\nend\n\nwhen flag clicked\nhide\n\nwhen I receive [green flag v]\nforever\n    if <<touching (mouse-pointer v)?> and <mouse down?>> then\n        start sound [Mouse Click - Free Sound Effect v]\n        broadcast (Tutorial v)\n        broadcast (Begin Start Lop v)\n        hide\n    end\nend\n\nwhen I receive [demo v]\nhide\n\nwhen I receive [back v]\nshow\n\n@Level Text\n\nwhen I receive [demo v]\nshow\n\nwhen I receive [green flag v]\nhide\n\nwhen flag clicked\nhide\n\n@Back\n\nwhen I receive [demo v]\nshow\nforever\n    if <touching (mouse-pointer v)?> then\n        set [brightness v] effect to (-10)\n        change size by (((110) - (size)) / (5))\n        point in direction (([sin v] of ((timer) * (1000)) ) + (90))\n    else\n        point in direction (90)\n        set [brightness v] effect to (0)\n        change size by (((100) - (size)) / (5))\n    end\nend\n\nwhen flag clicked\nhide\n\nwhen I receive [demo v]\nforever\n    if <<touching (mouse-pointer v)?> and <mouse down?>> then\n        start sound [Mouse Click - Free Sound Effect v]\n        broadcast (Green Flag v)\n        broadcast (Back v)\n        hide\n    end\nend\n\nwhen I receive [demo v]\nset [stopped script v] to [true]\n\nwhen I receive [tutorial v]\nset [stopped script v] to [true]\n\n@Particles\n\nwhen I start as a clone\nif <(size) < [50]> then\n    go to [back v] layer\nend\nglide (pick random (3) to (6)) secs to x: (240) y: ((y position) - (pick random (-100) to (100)))\ndelete this clone\n\nwhen I start as a clone\nshow\nforever\n    turn left (1) degrees\nend\n\nwhen flag clicked\ngo to [front v] layer\nset x to (-300)\nrepeat until <[] = [true]>\n    set [ghost v] effect to (pick random (0) to (25))\n    create clone of (_myself_ v)\n    set y to (pick random (175) to (-175))\n    turn right (pick random (1) to (90)) degrees\n    set size to (pick random (75) to (100)) %\n    wait (0.5) seconds\nend\n\n@Tranisition Thing Idk\n\nwhen I receive [begin start lop v]\nforever\n    if <<key (right arrow v) pressed?> or <key (space v) pressed?>> then\n        start sound [Low Whoosh v]\n        go to [front v] layer\n        show\n        go to x: (-500) y: (0)\n        glide (0.8) secs to x: (500) y: (0)\n        hide\n    end\n    if <key (left arrow v) pressed?> then\n        start sound [Low Whoosh2 v]\n        go to [front v] layer\n        show\n        go to x: (500) y: (0)\n        glide (0.8) secs to x: (-500) y: (0)\n        hide\n    end\nend\n\nwhen flag clicked\nhide\n\n@Slides\n\nwhen I receive [begin start lop v]\nshow\nset [costume v] to [1]\nwait until <<key (right arrow v) pressed?> or <key (space v) pressed?>>\nbroadcast (Begin Slides v)\n\nwhen flag clicked\nset [costume v] to [1]\nhide\n\nwhen I receive [begin start lop v]\nforever\n    if <<key (right arrow v) pressed?> or <key (space v) pressed?>> then\n        change [costume v] by (1)\n        wait until <not <<key (right arrow v) pressed?> or <key (space v) pressed?>>>\n    end\n    if <key (left arrow v) pressed?> then\n        change [costume v] by (-1)\n        wait until <not <key (left arrow v) pressed?>>\n    end\nend\n\nwhen flag clicked\nforever\n    switch costume to (Costume)\nend\n\n@Menu2\n\nwhen flag clicked\nforever\n    if <(Mouse Y) > [137]> then\n        show\n    else\n        hide\n    end\nend\n\nwhen flag clicked\nforever\n    set [mouse y v] to (mouse y)\nend\n\n@VolumeCo\n\nwhen flag clicked\nswitch costume to (50 v)\nforever\n    if <(Volume) = [50]> then\n        switch costume to (50 v)\n    else\n        switch costume to (0 v)\n    end\nend\n\nwhen flag clicked\nforever\n    if <(Mouse Y) > [137]> then\n        show\n    else\n        hide\n    end\nend\n\nwhen flag clicked\nset [volume v] to [50]\n\nwhen flag clicked\nforever\n    if <<<touching (mouse-pointer v)?> and <mouse down?>> or <key (m v) pressed?>> then\n        wait until <not <<<touching (mouse-pointer v)?> and <mouse down?>> or <key (m v) pressed?>>>\n        if <(Volume) = [50]> then\n            set [volume v] to [0]\n        else\n            set [volume v] to [50]\n        end\n    end\nend\n\n