Creating a STAMINA SYSTEM in Unity | Unity UI

Поділитися
Вставка
  • Опубліковано 20 сер 2021
  • In this Unity tutorial I show you how to create a stamina system by designing and implementing the UI, stamina bar, scripting with the default FPS Controller and controlling sprinting, speed, jumping and more!
    🔥 INSANE UNITY SAVINGS 🔥
    🕹️Unity New Year Sale (Exp: 11 Jan 22): bit.ly/UnityNewYear21Sale
    🕹️Check out all the Humble Bundle Deals: bit.ly/HumbleBundleDeals
    🎁 Get OVER 115 Scripts, Projects and premium content on my PATREON HERE:
    bit.ly/SpeedTutorPatreon
    💬Join the Community Discord:
    / discord
    💰BIG DISCOUNTS on my website, for my UNITY ASSETS:
    (Use the code "speedtutor-yt-5" for an additional 5% off)
    www.speed-tutor.com
    💝 Make a donation to the channel:
    www.paypal.me/speedtutor
    ·························································································
    ⚡Get Access to Scripts, Projects and Premium Content:
    🠺 Patreon: bit.ly/SpeedTutorPatreon
    ⬇️ Check Out My Puzzle Assets - Unity Asset Store: bit.ly/SpeedTutorAssetStore
    🧩 Adventure Puzzle Kit: bit.ly/adventurepuzzlekit
    🧩 Safe Unlock System: bit.ly/safeunlocksystem
    🧩 Chess Puzzle System: bit.ly/chesspuzzlesystem
    🧩 Examine System: bit.ly/examinesystem
    🧩 Generator System: bit.ly/generatorsystem
    🧩 Keypad System: bit.ly/keypadsystem
    🧩 Gas Mask System: bit.ly/gasmasksystem
    🧩 Flashlight System: bit.ly/flashlightsystem
    🧩 Note & Letter System: bit.ly/letternotesystem
    🧩 Themed Key System: bit.ly/themedkeysystem
    🧩 Padlock System: bit.ly/padlocksystem
    🧩 Phone System: bit.ly/phonecallsystem
    🧩 Lever Puzzle System: bit.ly/leverpuzzlesystem
    ⬇️Model Packs:
    🧩 PBR Themed Key Model Pack: bit.ly/themedkeymodelpack
    🧩 PBR Chess Piece - Key & Fuse Model Pack: bit.ly/chesskeyfusemodelpack
    ························································································
    ▼ Connect with me:
    ⭐| Become a Patron: bit.ly/SpeedTutorPatreon
    💬| Discord: / discord
    🐦| Twitter: / speedtutor
    📱 | Facebook: / speedtutoruk
    🖥 | Website: www.speed-tutor.com
    ·······················································································
    #unity3d #unityui #stamina

КОМЕНТАРІ • 142

  • @SpeedTutor
    @SpeedTutor  2 роки тому +3

    I can't run for this long either! Is that a bad thing? :P
    🕹️Unity New Year Sale (Exp: 11 Jan 22): bit.ly/UnityNewYear21Sale
    🕹️Check out all the Humble Bundle Deals: bit.ly/HumbleBundleDeals
    🎁 Get OVER 115 Scripts, Projects on my PATREON HERE:
    bit.ly/SpeedTutorPatreon

  • @saymongames1337
    @saymongames1337 2 роки тому +4

    This is so cool! Thx !

    • @SpeedTutor
      @SpeedTutor  2 роки тому +1

      That's not a problem at all! :)

  • @ZenoFar853
    @ZenoFar853 Рік тому +1

    Best explains ever thanks alot

    • @SpeedTutor
      @SpeedTutor  Рік тому

      I really appreciate that, thanks for watching my dude! :D

  • @isengokay5483
    @isengokay5483 2 роки тому +1

    Thank you so much @SpeedTutor

  • @brokenbackisbad9049
    @brokenbackisbad9049 2 роки тому +3

    this tutorial could come in handy in making my game thx so much

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      I hope so, thanks for coming along to watch! :D

  • @supersentaimexicano1967
    @supersentaimexicano1967 Рік тому +6

    Hey Great Tutorial, with some few tweaks I was able to implement this script into my 2D Game. Good job!

    • @SpeedTutor
      @SpeedTutor  Рік тому

      Amazing! I'm glad it was helpful! :D Best of luck with your game.

  • @brandonjacksoon
    @brandonjacksoon 2 роки тому +3

    Cool, thank you dude!

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      No problem at all, glad to have you here! :D

  • @gmangman123
    @gmangman123 2 роки тому +1

    thank you!

    • @SpeedTutor
      @SpeedTutor  2 роки тому +1

      You're welcome! Thanks man! :D

  • @tikikong384
    @tikikong384 Рік тому +2

    thank you! it works for my 2D game. i had to add a boolean "canSprint" because if my stamina was regenerating after complete exhaustion i could still hold the sprint key and the slider would not fill up while doing that but i also did not move faster. now it works fine :D

    • @SpeedTutor
      @SpeedTutor  Рік тому +1

      Great work! :D Best of luck with your project too!

  • @HelloHi-tr6vc
    @HelloHi-tr6vc Рік тому

    Hello so I love your video, it had all the things I needed for a stamina bar but I am using the new input system and I'm not sure how to like fix it up so that it references the new input system than the old one.

  • @reinstern9686
    @reinstern9686 2 роки тому +7

    This is the only tutorial I could found that hide the bar and only is visible during sprint. Thank you

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      Haha, I'm glad you found this helpful. Thanks for coming to watch! :)

  • @r9ymond
    @r9ymond 2 роки тому +1

    thanks

  • @infatok9230
    @infatok9230 6 місяців тому +1

    hi, its good tutorial, but i have a problem:
    NullReferenceException: Object reference not set to an instance of an object
    StaminaController.StaminaJump() in this string "playerController.PlayerJump();"
    and this
    NullReferenceException: Object reference not set to an instance of an object
    StaminaController.Update() in this string "playerController.SetRunSpeed(normalRunSpeed);"

  • @GamesNStuffOfficial
    @GamesNStuffOfficial Рік тому

    for some reason the speed changes to sprinting speed after I get back my stamina after I run out of it

  • @yugbhagat6531
    @yugbhagat6531 2 роки тому +2

    them :Should we bow?
    Me: Yeah he is a king.

  • @sundee7371
    @sundee7371 11 місяців тому

    SpeedTutor dude when I keep my Stamina Regenerating, sometimes it hits until 99 and I can't able to sprint anymore, it creates a bug.

  • @Friedrise
    @Friedrise Рік тому +1

    (45,34): error CS0246: The type or namespace name 'StaminaController' could not be found (are you missing a using directive or an assembly reference?)

    • @SpeedTutor
      @SpeedTutor  Рік тому

      Is your script name the same as your class name?

  • @Nin10doLetsPlay
    @Nin10doLetsPlay 2 роки тому +3

    Hi! How do I make it so that the Stamina only recharges when I'm not moving?

    • @SpeedTutor
      @SpeedTutor  2 роки тому +3

      You could check if the character is grounded and you're not pressing any input, then regenerate! :)

    • @Nin10doLetsPlay
      @Nin10doLetsPlay 2 роки тому +2

      @@SpeedTutor OK thank you so much :D

    • @antonhyverich9274
      @antonhyverich9274 2 роки тому +2

      @@SpeedTutor OK but what exactly do you need to write?

  • @mrcream9023
    @mrcream9023 2 роки тому

    how could i go about using the sprint option for this outside of the standard asset like when i hold mouse 1 it drains ? like with a weapon for example

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      Just do an Input within your update method, use .deltaTime to make it happen over time, effect a variable and make sure to takes away from your UI! :) Or whenever you click OnMouseDown, you take away one. It depends what you're doing! :)

  • @dante6582
    @dante6582 7 місяців тому +1

    Great tutorial, in case anyone else still uses this just wanted to toss in there that changing
    if (!areSprinting)
    {
    if (Stamina

    • @SpeedTutor
      @SpeedTutor  7 місяців тому +1

      Awesome, thanks for the suggestion my friend! :)

  • @mnnm1989
    @mnnm1989 Рік тому +1

    10:50 isnt just asking for "playerStamina >= jumpCost" the same? What is that calculation doing or am i missing something?

    • @SpeedTutor
      @SpeedTutor  Рік тому

      I think you're exactly right, it was probably an oversight from me. Haha.

  • @rwy1443
    @rwy1443 2 роки тому

    Did you make this movement script in a prior tutorial? It looks amazing :D

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      That movement script is just from the standard assets, the FPS controller that has been around a long time! :)

    • @rwy1443
      @rwy1443 2 роки тому

      @@SpeedTutor thank you

    • @thatoneearthdev
      @thatoneearthdev 9 місяців тому

      where can i find it?@@SpeedTutor

    • @SpeedTutor
      @SpeedTutor  9 місяців тому

      @@thatoneearthdev Sadly it's not on the asset store anymore, you can check out my video on finding them. If you search "Standard Assets" on my channel. If not, I think they're still on my Patreon too.

    • @thatoneearthdev
      @thatoneearthdev 9 місяців тому

      yeah, just found out they dont exist anymore@@SpeedTutor

  • @vekan9328
    @vekan9328 7 місяців тому

    Assets\Standard Assets\Characters\FirstPersonCharacter\Scripts\FirstPersonControllerCustom.cs(44,34): error CS0246: The type or namespace name 'StaminaController' could not be found (are you missing a using directive or an assembly reference?)

    • @SpeedTutor
      @SpeedTutor  7 місяців тому

      Is the script name the same as the class name?

  • @frankieplayzz8382
    @frankieplayzz8382 4 місяці тому

    Does anyone know how to fix the type or namespace name UnityStandardAssets could not be found (are you missing a using directive or an assembly reference?) 5,7

    • @SpeedTutor
      @SpeedTutor  4 місяці тому

      Did you add the namespace at the top?

  • @Kookiez3
    @Kookiez3 5 місяців тому

    Hi, thankyou for the tutorial, you explain it well. :)
    One issue I have is when I press Lshift the stamina bar goes down in increments instead of smoothly, any idea why?
    Which part of the script allows the stamina to drain smoothly?

    • @SpeedTutor
      @SpeedTutor  5 місяців тому

      As far as I remember it should drain smoothly as it's using Time.deltaTime; isn't it?

    • @Kookiez3
      @Kookiez3 5 місяців тому

      @@SpeedTutor Yeah it is, Ill have a look

  • @TikyTheEspresso
    @TikyTheEspresso 10 місяців тому

    i think its a misspell from me but unity cant find the stamina controller script
    FirstPersonControllerCustom.cs(45,34): error CS0246: The type or namespace name 'StaminaController' could not be found (are you missing a using directive or an assembly reference?)

    • @SpeedTutor
      @SpeedTutor  10 місяців тому

      Did you fix it?

    • @TikyTheEspresso
      @TikyTheEspresso 10 місяців тому

      not really, the names seem to be matching yet unity still mistakes the script for a namespace
      @@SpeedTutor

    • @infamousprogrammer
      @infamousprogrammer 7 місяців тому

      @@TikyTheEspresso same were you able to fix it?

  • @LeShowDuGeek
    @LeShowDuGeek Рік тому

    I have a problem on the line 44 of the First person controller custom, it says "error CS0246: The type or namespace name "staminaController" could not be found

    • @SpeedTutor
      @SpeedTutor  Рік тому

      What code is on that line?

    • @TikyTheEspresso
      @TikyTheEspresso 10 місяців тому

      im pretty sure its the same "public StaminaController _staminaController"
      @@SpeedTutor

  • @vima9046
    @vima9046 2 роки тому

    Could you please explain how you manage the speed value? Because it's impossible understand at the end of the video since you change the speed value from the stamina script but don't explain where ans how you use it! I think is the key to understand the video! Thanks

    • @SpeedTutor
      @SpeedTutor  2 роки тому +1

      Give me the timing that I do it, I'll rewatch my video and try to explain it for you! :)

    • @vima9046
      @vima9046 2 роки тому

      @@SpeedTutor Thanks!

    • @SpeedTutor
      @SpeedTutor  2 роки тому +1

      I meant, could you tell me what time in the video you have a problem with? I'll look over it and explain? :)

  • @TW_Eu
    @TW_Eu Рік тому

    hey, once i jump once my player keeps jumping on his own nonstop without me pressing anything, any ideas why?

    • @SpeedTutor
      @SpeedTutor  Рік тому

      That's really weird, sounds more like an issue with your player controller?

  • @jamescurtis6011
    @jamescurtis6011 24 дні тому

    Hi sorry when it hits zero and run button is still being pressed it will go up but after that won't sprint or drain how can I fix that? also great video thanks

    • @SpeedTutor
      @SpeedTutor  24 дні тому

      I think someone had a solution in the comments, as I recall :)

    • @jamescurtis6011
      @jamescurtis6011 24 дні тому

      @@SpeedTutor Oh ok I will check again thanks :D

  • @private_channel
    @private_channel 2 роки тому

    So according to my First Person script, the Stamina Controller class name isn't a thing, but I put the name of my script the exact same thing as my class name
    help me please answer

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      So what's the error?

    • @private_channel
      @private_channel 2 роки тому

      I can't even access the namespace Stamina Controller in the FIrstPerson script

    • @amauryrosario9439
      @amauryrosario9439 2 роки тому

      @@private_channel I too had a problem where I couldn't find the reference of StaminaController. When he changes the name of the FirstPersonController script to FirstPersonControllerCustom, you need to make sure you are using the right one

  • @ifreedgelive2309
    @ifreedgelive2309 Рік тому

    Hello, how can I make it so that he can run not until the stamina bar reaches the end, but so that he can run when he gains a small amount?

    • @SpeedTutor
      @SpeedTutor  Рік тому +1

      Make sure that you're checking to see if there is stamina when you're pressing the key :)

    • @ifreedgelive2309
      @ifreedgelive2309 Рік тому +1

      @@SpeedTutor Thanks, I already figured it out myself, it's just to add the code there, if the stamina scale is more than 0, then he can run)

    • @SpeedTutor
      @SpeedTutor  Рік тому

      Awesome, good job! :D

    • @ifreedgelive2309
      @ifreedgelive2309 Рік тому +1

      @@SpeedTutor thanks)

  • @fatihsaglam4925
    @fatihsaglam4925 2 роки тому +1

    Hi ST. maxStamina * jumpCost / maxStamina = jumpCost ? i don't understand why we write this equation ? Couldn't we write simply playerStamina>= jumpCost ?

    • @SpeedTutor
      @SpeedTutor  2 роки тому +1

      What part of the video is this?

    • @fatihsaglam4925
      @fatihsaglam4925 2 роки тому

      @@SpeedTutor if block (time:10:43)

    • @SpeedTutor
      @SpeedTutor  2 роки тому +1

      You're right, I'm not sure why I did that! Haha. You're smarter than me! :)

    • @fatihsaglam4925
      @fatihsaglam4925 2 роки тому

      @@SpeedTutor haha u re best.) I am only carefull

  • @dragonballz3686
    @dragonballz3686 2 роки тому

    I have a doubt sir. In my game, I am having a shooting bar. Which means , If I hold the shoot button, then the shooting bar gets decreased and if the bar is at 0 then the player should stop shooting. And the shooting bar regenerates. Problem is if I press the shoot button it is decreasing but it is not stopping to shoot. It is continuously shooting after bar is at 0 while holding the button. And I solved this problem by using setactive. But after that, another problem came, that is, if I press the button, it is not shooting after the bar is 0, yeah that's fine, but the bullets are only disabled, so it is creating many disabled bullets in hierarchy. What should I do sir plz 😥😥

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      So you could check when the bullets go back up again and re-enable your actions?

    • @dragonballz3686
      @dragonballz3686 2 роки тому +1

      @@SpeedTutor oh yeah thanks for the tip sir.

  • @septickidd24
    @septickidd24 2 роки тому

    When running the code there was an error (Error CS0246 to be exact) and it said that the namespace name "UnityStandardAssets" could not be found. Is there any fix for this?

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      Did you add "Using UnityEngine.StandardAssets.FirstPerson"? I can't remember the exact name space.

    • @septickidd24
      @septickidd24 2 роки тому

      @@SpeedTutor Yes. The namespace was "UnityStandardAssets.Characters.FirstPerson"

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      You've imported the Standard Asset Character?

    • @septickidd24
      @septickidd24 2 роки тому

      @@SpeedTutor no, I didn't.

  • @unitywith_misavondo
    @unitywith_misavondo Рік тому

    why i move around (not sprinting) stamina is drained?

    • @SpeedTutor
      @SpeedTutor  Рік тому

      I'm not sure, are you sure the script is correct?

  • @GaryASMR
    @GaryASMR Рік тому

    (72,16): error CS0029: Cannot implicitly convert type 'float' to 'bool'
    (77,33): error CS0120: An object reference is required for the non-static field, method, or property 'CharacterController.velocity'
    (86,37): error CS0029: Cannot implicitly convert type 'bool' to 'float'

    • @SpeedTutor
      @SpeedTutor  Рік тому

      What lines are these on?

    • @GaryASMR
      @GaryASMR Рік тому

      @@SpeedTutor (72,16): error CS0029: Cannot implicitly convert type 'float' to 'bool'
      (77,33): error CS0120: An object reference is required for the non-static field, method, or property 'CharacterController.velocity'
      (86,37): error CS0029: Cannot implicitly convert type 'bool' to 'float'

  • @nluu111
    @nluu111 2 роки тому

    Do you have a way to apply this to a 2D game, where the movement script is all the bare minimum user made?

  • @melkerengdahl7302
    @melkerengdahl7302 2 роки тому

    does this work with my own firstpersoncontroller.

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      It would if you integrated it in a similar way but it depends how yours is programmed! :)

  • @InanimateJR
    @InanimateJR 2 роки тому

    Weird, it seems everything else works except the Stamina Bar. It doesn't seem to change when I sprint and jump. On sprinting and jumping, the bar doesn't appear when I already set the alpha of the Canvas group to 0. There isn't an error message telling me what the problem is either. Any Ideas?

    • @SpeedTutor
      @SpeedTutor  2 роки тому +1

      What about if you add a debug log to see if the part in the code fires? If not, you need to investigate why it never does :o

    • @InanimateJR
      @InanimateJR 2 роки тому

      @@SpeedTutor Thx for the fast response! I added a debug log for all of the methods and they all seemed to work just fine. However, when adding a debug log to the following code in UpdateStamina() method, the debug.log did not run (Note that my CanvasGroup Alpha = 0 and I am stationary):
      if (value == 0)
      {
      sliderCanvasGroup.alpha = 0;
      Debug.Log("Test");
      }
      My CanvasGroup's Alpha was not changed to 1 when I started sprinting and jumping around. I'm relatively new to Unity and C# so please bear with me! (Hopefully I'm not breaking any rules by sending code here)
      EDIT: It is only the Stamina Bar display that is not working.

    • @SpeedTutor
      @SpeedTutor  2 роки тому +1

      You have the if statement of value. What is "value"? Don't worry, haha. I'll try my best to help but it's tough when I only see part of the picture. Haha.

    • @InanimateJR
      @InanimateJR 2 роки тому

      @@SpeedTutor According to the video, "value" is from the UpdateStamina method:
      void UpdateStamina(int value)
      {
      staminaProgressUI.fillAmount = playerStamina / maxStamina;
      if (value == 0)
      {
      sliderCanvasGroup.alpha = 0;
      }
      else
      {
      sliderCanvasGroup.alpha = 1;
      }
      }
      EDIT: Debug.Log fires in the else portion of the code when sprinting but does not fire when stationary. The Stamina Slider bar does not appear either.

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      Ok, if that's the case. Can you change alpha value of the canvas group when you're in-game? Just from the inspector?

  • @hyuzi7825
    @hyuzi7825 2 роки тому

    i know this is a bit old but can you help me? my player stamina doesn't regen all the way to 100, it stays at 99.*(random numbers) and then i cant run anymore

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      At what level does it check when it's full?

    • @hyuzi7825
      @hyuzi7825 2 роки тому

      @@SpeedTutor i added
      if (playerStamina >= maxStamina)
      hasRegenerated = true
      but idk why it just doesnt go to 100

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      Create a debug line in that code to check if it ever goes to 100?

    • @hyuzi7825
      @hyuzi7825 2 роки тому

      @@SpeedTutor i did it sometimes it runs it sometimes it doesn't. I just did a test now and sometimes it's goes to 100% and works perfectly and sometimes it says at 99.99771 or 99. other numbers, and if stamina is not at 100 or more it doesn't set hasRegenerated to true, and then I can't run.

    • @hyuzi7825
      @hyuzi7825 2 роки тому

      @@SpeedTutor i fixed it by checking if the stamina is above 99 instead of 100

  • @cecavacd
    @cecavacd 2 роки тому

    How can I make it that when its regenerating I can sprint?

    • @SpeedTutor
      @SpeedTutor  2 роки тому +1

      Take away the check to stop the check for whether stamina is full again?

    • @cecavacd
      @cecavacd 2 роки тому

      @@SpeedTutor When I spend all of my stamina and it starts to regenerate again I can't sprint(when I try to sprint it only stops regenerating stamina) but I can jump. What line or part of code do I have to remove to disable that?

    • @amauryrosario9439
      @amauryrosario9439 2 роки тому

      @@cecavacd i think its line 63 playerController.SetRunSpeed(slowRunSpeed); If the player stamina is less than or equal to 0, the speed is set to slow

  • @H1zoneTv
    @H1zoneTv 2 роки тому

    SPEEDtutor

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      Are you trying to say this is good or bad? Haha.

    • @H1zoneTv
      @H1zoneTv 2 роки тому +2

      @@SpeedTutor The speedtutor teaching about speed!

    • @SpeedTutor
      @SpeedTutor  2 роки тому +1

      Haha, I hope it was speedy enough for you! :D

  • @alejandrobiga9746
    @alejandrobiga9746 4 місяці тому

    i cant reference the StaminaController inside the standarasset script :c

  • @Silkier
    @Silkier 2 роки тому +1

    "works with your own character controller script"
    proceeds to show a method that does not work with a normal character controller script

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      The logic applies to all types, it's just the direct implementation of affecting your players stamina, speed and so on which is very dependant to the controller.

    • @Silkier
      @Silkier 2 роки тому +1

      @@SpeedTutor sorry for being rude. I was just extremely mad at the fact that after hours of coding, this didn't work with my script

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      No worries my dude, I can understand how frustrating things are. Especially when you have to transfer the logic to something else. Believe me, I go through nightmares on a daily basis! Haha.

  • @WaterForgeStudios
    @WaterForgeStudios 2 роки тому

    Can someone PLEASE HELP it says StaminaController could not be found

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      Is the class name the same as the script name?

    • @amauryrosario9439
      @amauryrosario9439 2 роки тому

      @@SpeedTutor I believe their problem comes from changing the name of the FirstPersonController script to FirstPersonControllerCustom,

  • @kazrepair7219
    @kazrepair7219 2 роки тому

    why i can't access this (StaminaController) to (FirstPersonController) i follow every steps but still error :(

    • @SpeedTutor
      @SpeedTutor  2 роки тому

      Did you make everything public?

    • @kazrepair7219
      @kazrepair7219 2 роки тому

      @@SpeedTutor i fix it already but my problem now is when i stop the sliding bar is not increasing but in the inspector is increasing not in vision any idea bro what i missed i did every step

    • @amauryrosario9439
      @amauryrosario9439 2 роки тому

      @@kazrepair7219 It sounds like its something to do with your stamina sliders, Over in Stamina Controller script (Stamina UI Elements in the inspector), make sure the stamina progress UI is not set to the background slider.

    • @infamousprogrammer
      @infamousprogrammer 7 місяців тому

      @@kazrepair7219 how did you fix it? I can't reference the script into the FirstPersonController one

  • @mixedtrigenito
    @mixedtrigenito Рік тому +1

    this is a shit ton of code for something so simple

    • @SpeedTutor
      @SpeedTutor  Рік тому

      Haha, there might be more refined ways to do it but nothing is usually simple to make systems work. :)