FIRST PERSON MOVEMENT in 10 MINUTES - Unity Tutorial

Sdílet
Vložit
  • čas přidán 6. 02. 2022
  • FIRST PERSON MOVEMENT in 10 MINUTES - Unity Tutorial
    In this video I'm going to show you how to code full first person rigidbody movement. You can use this character controller as final movement for your game or build things like dashing, wallrunning or sliding on top of it.
    If this tutorial has helped you in any way, I would really appreciate it if you leave a like in return. And you can also subscribe to this channel if you want to see more tutorials like this one.
    Links:
    ➤ DOWNLOAD the SCRIPT: www.mediafire.com/file/1b7mf5...
    ➤ DOWNLOAD the PROJECT (in the free-code-dave channel): / discord
    ➤ DON'T CLICK: bit.ly/2VcrDZt
    ➡️ Get Access to my full MOVEMENT LAB!➡️
    ➤ Trailer: • MOVEMENT LAB - Unity P...
    🏹 Get Access to my RANGED COMBAT LAB!🏹
    ➤ Trailer: • RANGED COMBAT LAB - Un...
    Other interesting videos :D
    ➤ THROWING Grenades, Knives and Other Objects - Unity Tutorial): • THROWING Grenades, Kni...
    ➤ FULL 3D ENEMY AI in 6 MINUTES! || Unity Tutorial: • FULL 3D ENEMY AI in 6 ...
    Support me on Patreon:
    ➤ / davegamedevelopment
    #UnityMovement #FirstPersonMovement #UnityTutorial

Komentáře • 2,7K

  • @pikapikalis
    @pikapikalis Před rokem +1315

    This tutorial was great but one small problem. I couldn't get the capsule to jump until I compared my script side by side with your script and noticed that in the video you do not say to add the following line to Start()
    readyToJump = true;
    You might consider updating your description so people know. I spent awhile trying to figure it out comparing everything I did from the video before I gave up and looked at your script.
    edit: this was a year ago, still getting thanks to this day. never expected to get this much support, thank you all for the 1k likes. means alot. good luck on your movement systems everyone!

    • @mentallyunprepared8635
      @mentallyunprepared8635 Před rokem +23

      yeah I noticed it too and was so confused, why it didn't jump, thanks for the heads up

    • @aidanhawley3981
      @aidanhawley3981 Před rokem +16

      You helped me alot thank you.😘

    • @whitehook5450
      @whitehook5450 Před rokem +18

      Hey, I added this, but I still cannot get the capsule to Jump, even tried with the movement script in the description, still doesn't work, do you have any solutions? Everything else works just fine.

    • @dadenbenoit3159
      @dadenbenoit3159 Před rokem +2

      Had the same issue. But great tutorial!

    • @pikapikalis
      @pikapikalis Před rokem +1

      @@whitehook5450 do you have your ground layer set to, "whatIsGround"?

  • @davegamedevelopment
    @davegamedevelopment  Před rokem +6

    If you need help with any of the code shown, just visit the "coding-help" channel on my discord server :D
    Also you can find many more movement tutorials on my channel in the "Tutorials!" playlist - I really hope they help you on your further GameDev journey!
    And in case you're interested in getting access to my full MOVEMENT LAB, where I combined all of the movement abilities shown in the tutorials and some more, check out the trailer:
    ➡ MLab Trailer: czcams.com/video/9_Q9UxK7VF8/video.html
    Also, since I know lot's of you are interested in ranged combat as well - I can gladly announce that I'm about to release my RANGED COMBAT LAB as well:
    🏹 RcLab Trailer: czcams.com/video/j2YplilHjCA/video.html
    Thanks so much for watching, hope this tutorial has helped you!

  • @jehriko7525
    @jehriko7525 Před rokem +27

    Thanks a bunch! For someone like me who's absolutely new to programming in unity I'm appreciative that this is low-level enough for me to able to understand why each piece of code is being inputted.

    • @Kwakky69
      @Kwakky69 Před 9 měsíci +2

      i dont even know how to make a script for the cam

    • @Sushanththeartist
      @Sushanththeartist Před měsícem +1

      @@Kwakky69 i dont even know where to put the script

  • @Alejandro_Berra
    @Alejandro_Berra Před rokem +5

    I was doing my own FPS controller without any guidance and everything was alright but some weird camera jitter so I decided to check how everyone was tackling the camera. I never thought of having it outside the hierarchy of the player. Now I have 0 problems amazing idea!

  • @Hietakissa
    @Hietakissa Před 2 lety +370

    for anyone struggling with the player sticking to walls; Make a Physic Material with little to no dynamic friction (I used a value of 0.1 with Friction Combine at Minimum) and assign it to the player's Collider. You can experiment with different friction values to find what works best for your game

    • @mlgjman1837
      @mlgjman1837 Před rokem

      for me I needed to apply it to the slopes as well

    • @Hietakissa
      @Hietakissa Před rokem +2

      @@mlgjman1837 how do you mean? If you set the Friction Combine to minimum it will use the smaller value of the 2 colliding objects, so it should be enough to just apply it to the player directly.
      Unless you are talking about some other problem.

    • @Carl-Randomness
      @Carl-Randomness Před rokem +11

      Am i too dumb to understand this

    • @Hietakissa
      @Hietakissa Před rokem +2

      @@Carl-Randomness the player is sticking to the walls because of friction, the friction is too high for the player to keep their momentum so they get stuck.
      By making the player have less friction they can slide across the wall

    • @Carl-Randomness
      @Carl-Randomness Před rokem +3

      @@Hietakissa Oh thanks

  • @Seestral
    @Seestral Před 2 lety +23

    Just found your channel. Thanks for all the tutorials you're doing and keep it up!

  • @jacksmith7139
    @jacksmith7139 Před rokem +17

    Thanks a lot Dave, appreciate the fact you're providing this content, and consolidating it to only 10 minutes so we can crunch through it. Its a good way to work.
    All the best!

  • @Inferim
    @Inferim Před 4 měsíci +3

    Your methods are so simple! I've ran into multiple problems with syncing the camera with an object that has a character controller before. Similarly, I had to do mental gymnastics just to figure out how to move the player based on the camera's perspective. Having an object whose only function is to keep track of orientation saves a lot of mental work and is definitely a game changer. I need to think like that more! Glad to have found this tutorial. Great stuff man!

    • @dnrspdr03canadian95
      @dnrspdr03canadian95 Před 23 dny

      i gotta ask, i for some reason have copied the exact code and my character doesn't move, im rather new to this and just started learning today, is there something im missing thats just common sense?

  • @liamwhillier3334
    @liamwhillier3334 Před rokem +30

    This was an Amazing guide, and it helped a lot with my first game!

  • @szialoo9674
    @szialoo9674 Před 2 lety +264

    You sound alot like brackeys

  • @Sputterbugz
    @Sputterbugz Před rokem +1

    this is the best movement tutorial ive been able to find since Brackeys, thank you :)

  • @christophermohite537
    @christophermohite537 Před 9 měsíci +60

    For anyone having trouble with the Jump function : we just have to set readyToJump to true when we begin (its not shown in the video)

    • @creativeumar10
      @creativeumar10 Před 9 měsíci

    • @Snek5981
      @Snek5981 Před 8 měsíci +1

      thank you I was so confused on why my jumping wasn't working!

    • @benneeds_a_name7398
      @benneeds_a_name7398 Před 4 měsíci

      Thank you!
      I wish I saw this comment before spending half an hour figuring that out!
      People really gotta like and comment on this comment so it gets higher in his comment section so others can find it faster!

    • @user-kg1ok9tw9f
      @user-kg1ok9tw9f Před 2 měsíci

      thank you so much, this comment help me so much

    • @Fl00rless
      @Fl00rless Před 2 měsíci

      Thanks for the help, I could not figure it out lol

  • @cboyslim5490
    @cboyslim5490 Před 2 lety +6

    this is the first time i've ever finished a unity tutorial lol hell yeah motivated af now

  • @thxr9766
    @thxr9766 Před 2 lety +122

    if you have a problem with the ground check then just add an empty game object at the bottom of the player then write this:
    grounded = Physics.CheckSphere(groundCheck.position, groundDistance, whatIsGround);
    with these as variables:
    public Transform groundCheck;
    public float groundDistance = 0.4f;
    public LayerMask whatIsGround;
    bool grounded;
    i got this from brackey's fps tutorial btw and it seems to work nicely with this script.

    • @davegamedevelopment
      @davegamedevelopment  Před 2 lety +19

      Yeah that works just fine, thanks for helping others out!

    • @thxr9766
      @thxr9766 Před 2 lety +9

      @@davegamedevelopment np dude! i love helping people out!

    • @user-hk8fs9yo2k
      @user-hk8fs9yo2k Před 2 lety +3

      i love you, man :D

    • @thxr9766
      @thxr9766 Před 2 lety

      @cuitotech no you don't have to you can just put it in the playermovement script in the same place where he put his ground check

    • @ezzir7003
      @ezzir7003 Před 2 lety

      Thanks dude , very cool.

  • @Tye_gameDev
    @Tye_gameDev Před měsícem

    I looked at over 10 videos, but this... this is just the best. Keep up the great work!

  • @GaryParkin
    @GaryParkin Před 9 měsíci +2

    Thank you so much for the tutorial. Even after a year it's helping folks like me. And what's best is you already made the next video and I can go watch it.

    • @xuanki1
      @xuanki1 Před 8 měsíci

      Did you make it so the camera works? I swear I did everything in this video, and everything works but the camera doesn't.

    • @GaryParkin
      @GaryParkin Před 8 měsíci

      @@xuanki1Yes, the thing to remember is the mouse movement is connected to the camera, not the body. I've watched one where the guy had the camera stationary and the player needed to bend down to see. that's bogus and can't work in a real game.

  • @ThePianoPlayerOfficial
    @ThePianoPlayerOfficial Před 2 lety +4

    After some time, i finally found a useful tutorial on detailed fps controller, thank you so much for this tutorial

  • @unleasheddevil1698
    @unleasheddevil1698 Před 2 lety +4

    oh your finally back after 1 year
    pls continue making content your doing good
    Thanks.

  • @theMinecraftman87
    @theMinecraftman87 Před rokem +3

    Good enough guide. Got me 90% of the way there. Nice product. smooth realistic movement.

  • @Amke4432
    @Amke4432 Před rokem +9

    I appreciate how there’s no ads, thanks.

  • @_ace55
    @_ace55 Před 2 lety +227

    For anyone that has stuttering / jittering issues with their camera: There are 2 options how you can fix it
    • Remove the "* Time.deltaTime" from the PlayerCam Class where getting the input
    • Replace the "* Time.deltaTime" in the PlayerCam class with "* Time.fixedDeltaTime"

    • @consultingprestig2096
      @consultingprestig2096 Před 2 lety +4

      I would like to know why it is not the same? The math is the same though, right?

    • @_ace55
      @_ace55 Před 2 lety +2

      @@consultingprestig2096 I dont know the exact difference but I think the Input handler by unity already does the frame indenpendence stuff for you, so you dont need the time.deltaTime

    • @consultingprestig2096
      @consultingprestig2096 Před 2 lety +18

      @@_ace55 Ok thank you. I also have another question; Every time I work on a project and I come back to it later there are always mistakes... I wonder if it's on their part to demotivate us from creating games... And let rockstar and all those known to keep the place of number 1? .. I say that because I don't understand how is it, with all the assets already done, that there are no games similar to GTA or Call of duty... Because these games are too loaded with server...

    • @_ace55
      @_ace55 Před 2 lety +23

      @@consultingprestig2096 I can't tell if youre joking

    • @davegamedevelopment
      @davegamedevelopment  Před 2 lety +66

      @Consulting Prestig That's the first Unity conspiracy theory I've heard so far xD

  • @noodletree
    @noodletree Před 2 lety +3

    great videos, I'm using this tutorial to check I didn't create my player controller in an unscalable way and its helped a lot. Thanks for the video chief.

  • @Yukiikakkoi
    @Yukiikakkoi Před rokem +4

    This is very good I just started coding in unity and I understand the code very well with this!

  • @BILGI_PASA
    @BILGI_PASA Před rokem +1

    Thank you DAVE, this video helped me really much.

  • @jcd9456
    @jcd9456 Před 2 lety +10

    Thank you very much for the code! I got to test each part on my own after watching your full vid. When following other youtubers as they code (Cuz code not provided) I always ended up messing the copy so I can't test it properly. Thank you once again!

  • @thefunnybuddy4138
    @thefunnybuddy4138 Před 2 lety +16

    I played dying Light 2. I don't like how the controller feels. So now I'm trying to understand how movement, vaulting, etc. works. Then make an obstacle course, code in the movement and tune it until it feels fun.

  • @yojan69
    @yojan69 Před rokem

    love you, thanks for doing such amazing tutorials man

  • @ExamProChannel
    @ExamProChannel Před rokem +158

    I followed this to the letter, and I had jumping like I was on the moon. I did solve it myself by downloading the original source files and I found that the global value for the Gravity's Y value is set to -30. For a default project it set to -9, so this is an omission in the video. You can find this setting under Edit -> Project Settings and just make sure its set to -30 and you'll be back on earth lol.

    • @nemorururur
      @nemorururur Před rokem

      i changed it to 30 and the jump height didnt change

    • @jaxisplayingtoday
      @jaxisplayingtoday Před rokem

      @@nemorururur change it to -30

    • @olly-o3810
      @olly-o3810 Před rokem

      I got the opposite i jump .1mm off the ground

    • @d4rkwells688
      @d4rkwells688 Před rokem

      @@olly-o3810 I depends on the scale of ur object too. If ur player is really big you'll have to scale up ur jumpForce

    • @colecancode
      @colecancode Před rokem +3

      you fucking legend. was having this same problem

  • @thunderx3005
    @thunderx3005 Před 2 lety +6

    Thank You bro I needed this 💪🏾

  • @bradleygallavin7378
    @bradleygallavin7378 Před 2 lety +4

    Thanks for this, just what I was looking for!

  • @danielmckellar3861
    @danielmckellar3861 Před 2 měsíci

    man you probably wont see this but you have no idea how helpful these videos are. thank you so much!

    • @DaveSucker
      @DaveSucker Před 2 měsíci

      are you a developer if you are i can give you any unity project or asset that is on my chanel for a very cheap price that we end up with after bargaining there is no one on youtube doing this and it would be with proofs and have a refund policy to if you have a better excuse

  • @razamondo
    @razamondo Před rokem +31

    If you are still having trouble with "penguin sliding" after adding drag double check the position of your capsule in your player holder, if like me you moved the capsule at some point to align things it moves the starting point of the raycast with it, so make sure your capsule has 0,0,0 for position.
    For me my capsule was 0,2,0 and as such my raycast was starting lower then my player. I found this out by starting the game, then hitting esc to free my mouse then change to scene view, I then selected my player holder and unchecked "use gravity" to allow me to drag my player holder up while looking at 'Drag' in the Rigidbody and after my player was hovering ~1 unit in the air my Drag jumped from 0 to 5 which is what my GroundDrag was set to at the time

  • @polix9999.2
    @polix9999.2 Před 2 lety +4

    i Cant wait for the next tutorial broo !!❤️

  • @libbycb
    @libbycb Před 6 měsíci +11

    thanks for the tutorial!!
    if yall can't jump you can put "readyToJump = true;" in Start() or just when you create the variable initialise it to true ("bool readyToJump = true;").
    if ur jumps are huge and fall slowly, i found that increasing the rigidbody's mass in Unity helped, I liked 1.6 but tweak it for yourself. also tweak the jumpForce, i'm at 10.

    • @igoraugun1471
      @igoraugun1471 Před 2 měsíci +3

      Man, you just fixed my problem which I've been struggling with for 2 hours, tysm

    • @yuko_xzx
      @yuko_xzx Před 11 dny

      i have the same problem but i dont get what your saying can you give me help there was 2 ready to jump = the first one was false and the second was true i changed the first one to true nothing happened i tried copy pasting ("bool readyToJump = true;") under but there was an error so i deleted it

    • @aritrabose8h852
      @aritrabose8h852 Před dnem

      @@yuko_xzx go to your Start() function. See where you can find the any code with the following words "void Start". Then inside the curly braces, write " readyToJump = true; " hopefully that helps.

  • @ramlakhanyadav4951
    @ramlakhanyadav4951 Před rokem

    Fantastic video. Thank you Michael, You have inspired to get into soft editing and videos soft design too.

  • @claudiosilvalira5672
    @claudiosilvalira5672 Před rokem +1

    THANK YOU SO MUCH THIS WAS EXTREMELY HELPFUL :D

  • @byte-sized-tech
    @byte-sized-tech Před 2 lety +24

    This man is the new brackeys no cap. Seriously though, amazing tutorials.

    • @davegamedevelopment
      @davegamedevelopment  Před 2 lety +4

      Thanks a lot, that's about the highest compliment you could give me :D

    • @Mr_BlueBanana
      @Mr_BlueBanana Před 2 lety +2

      @@davegamedevelopment you even sound like brackeys. I sense potential

    • @Inferim
      @Inferim Před 4 měsíci

      That said, I can imagine a DGD branding for merch!

  • @ricekeks
    @ricekeks Před rokem +38

    For people who struggle with jumping and the drag not being applied to their movement.
    Check if "grounded" is always false despite being on the ground. If you have set up everything accordingly it might be the issue that the raycast is starting at the same height (player-position at 0, 0, 0 in my case) at which the ground is placed as I am using a nested player object (collider and graphics as child objects). In that case the raycast may "skip" through the ground hitbox and as such "grounded" will never be set to true. Tldr: you can not jump and the "groundDrag" will never be applied.
    To fix this: On the Physics.Raycast() - modifiy it to give it an elevated starting position, so it starts inside the player object (a so called skin width).
    For example: grounded = Physics.Raycast(transform.position + new Vector3(0, 0.05f, 0), Vector3.down, playerHeight * 0.5f + 0.3f, whatIsGround);
    // make sure to set the player object and its children to another layer than "whatIsGround"
    Here I get the current position from the player by transform.position as demonstrated in the video and code but then I immediately add 0.05f up the Y-axis which makes it start slightly inside the player and always above the ground so it should never "skip" through it. You can also use a variable for this to avoid hardcoding the value. After this it worked perfectly fine for me and I hope it helps some of you as well 👍

    • @ThunderGuy77-
      @ThunderGuy77- Před rokem

      Thank you so much, I couldn't figure out why my jump wasn't working and grounded never was true! Life saver fr

    • @zcraggynews9742
      @zcraggynews9742 Před rokem

      thank u so much

    • @zcraggynews9742
      @zcraggynews9742 Před rokem

      i was crying

    • @SacWebDeveloper
      @SacWebDeveloper Před 5 měsíci

      Debugged for 30 minutes and found this issue too since I figured the player position should be at the feet when I made the capsules.

    • @wonkanese
      @wonkanese Před 4 měsíci

      still doesnt work did everything

  • @yasser_gg2276
    @yasser_gg2276 Před 5 měsíci +1

    its amaaazing bro its just a very clear and easy tutorial THANKS KEEP GOING 😄💖

  • @takeshisingchat980
    @takeshisingchat980 Před rokem

    BROOO thankyou so much, this really helped and the tutorial was really easy to use as well :)

  • @imfaded3105
    @imfaded3105 Před 2 lety +5

    Great tutorial 🙌🏻🔥

  • @kenan-nynor
    @kenan-nynor Před 10 měsíci +14

    Here is (maybe) why you cant get your jump working how you want it to be:
    Go to edit -> Project Setting -> Physics and set the Gravity Y value to -30
    I had it set to -9.81 on default but Dave is using -30 in his video (if you want to have the movement just like in the video)

  • @Elveneco17
    @Elveneco17 Před rokem

    I just watched ur video now and it was wat av been looking for bro..... thanks champ

  • @feelfreetofee
    @feelfreetofee Před rokem

    Thank you very much, your explanations made me understand some basic concepts!

  • @sergiomarcelinovilchezmend5174

    Thank you for your complete and comprehensive training. Very good!

  • @rpc6882
    @rpc6882 Před 2 lety +10

    Thank you so much for breaking all this down. Please keep up the good work.

  • @Mr.slowed501
    @Mr.slowed501 Před rokem

    Your explanation is very clean and clear Thx

  • @FergiesHuman
    @FergiesHuman Před 13 dny

    I don't often thumbs-up videos but this one deserved a big one

  • @Pixelatic0733
    @Pixelatic0733 Před 2 lety +3

    you are on fire bro
    nice tutorials and you got a subscriber right away

  • @soksopanha7348
    @soksopanha7348 Před 2 lety +3

    The speed control help alot man, thank so much.

    • @davegamedevelopment
      @davegamedevelopment  Před 2 lety +2

      No problem, glad I could help!

    • @jafizz6505
      @jafizz6505 Před 2 měsíci

      @@davegamedevelopmentI need help the speed check has and error and says vector 3 can not be float

  • @brayangames5062
    @brayangames5062 Před rokem +1

    Thank you, I watched many videos and none worked because it bugs, but your script worked
    +1 sub

  • @rachapongwatana3868
    @rachapongwatana3868 Před rokem

    Thank you so much for your awesome tutorial.

  • @keyboardsmoosh
    @keyboardsmoosh Před rokem +6

    I followed the steps up until air control and jumping and when i press play i cannot move my character. I downloaded the movement script from the Desc. and i have applied and completed the player camera and camera movement scripts.

  • @Aragos207
    @Aragos207 Před rokem +6

    If your player is sticking to walls add a physics material to the player mesh collider and set the physics materials settings to 0,0,0 minimum, and minimum. Hope this helps!

  • @coderaven1107
    @coderaven1107 Před 10 měsíci

    Love your tuts 😁😍🤩

  • @nicolasstanciu7545
    @nicolasstanciu7545 Před rokem

    wow thank you so much. no joke it is now so much easier and u explained it really good.

  • @willb7484
    @willb7484 Před 2 lety +22

    Tip: If you player is sticking to walls, create a Physics Material and set all friction to 0 and then apply that to your walls

    • @gazior3712
      @gazior3712 Před 2 lety

      Where is Physics Material? I can't find it :( I found only Physics Material 2D

    • @willb7484
      @willb7484 Před 2 lety

      @Juka not sure why this didn't cross my mind too. Good suggestion

    • @Diamond-yn4nu
      @Diamond-yn4nu Před rokem

      I will try it thanks

    • @Diamond-yn4nu
      @Diamond-yn4nu Před rokem

      I added it to the blayer capsule colider

  • @PABLOIS369
    @PABLOIS369 Před 2 lety +95

    Couple of things, first off. thank you for making this video, it helped a lot!
    Second, I couldnt jump.
    Tried to check if i was grounded and played with the variables for awhile, but I had some issues finding out if i was grounded and the consol log was really confusing so i used this code in the Update() section :
    Debug.Log(grounded);
    if (Input.GetKey(jumpKey))
    Debug.Log(jumpKey);
    it helped me confirm real time if i was grounded or not so i could alter the varibles until i was actually grounded, and if the game was registering me pressing space bar.
    However i was unable to jump because I initially did not have "readyToJump" set to true.
    I fixed this adding this code to Start() section
    ResetJump();

  • @user-to8jr8cy2d
    @user-to8jr8cy2d Před rokem

    Great tutorial! Super easy to understand!

  • @TomA-ei6tq
    @TomA-ei6tq Před 2 měsíci

    Amazing Tutorial! Thanks!

  • @JATEK0S
    @JATEK0S Před 2 lety +265

    intro 0:00
    camera 0:27
    movement 3:22
    drag & speed control 5:16
    jumping & air control 7:27

  • @snipermonkey427
    @snipermonkey427 Před 2 lety +69

    This man puts out high-quality, easy to follow, informative videos. Absolutely love it. Can’t believe you don’t have 1 mil+ subs

    • @davegamedevelopment
      @davegamedevelopment  Před 2 lety +10

      Thank you so much! :D

    • @u_r_fool
      @u_r_fool Před 2 lety +4

      Ya

    • @JaydacapTV
      @JaydacapTV Před 2 lety

      @@davegamedevelopment The First Person part works but for some reason my camera changes positions on game start. The camera changes to being under my terrain plz help.

    • @opafritzsche
      @opafritzsche Před 2 lety

      @@davegamedevelopment brillant!

    • @Gunami.
      @Gunami. Před rokem

      @@JaydacapTV download the script

  • @ketaminemike3308
    @ketaminemike3308 Před měsícem

    This is awesome man, thank you

  • @crossie6136
    @crossie6136 Před rokem

    when i typed in soft soft tutorial i did not expect it to be tNice tutorials good thank you so much aaaaaaa

  • @donajello
    @donajello Před 2 lety +100

    Anyone having trouble with the "penguin sliding" even after adding the drag and all, try moving your environment/whatever has whatIsGround layer down on the Y by -0.7. If your Player empty starts are 0,0,0 the Groundcheck does something weird and doesn't recognize that you're on the ground (at least on my end)

    • @arcadetitan
      @arcadetitan Před 2 lety +5

      This did not work for me, what can I do?

    • @adriandeveraaa
      @adriandeveraaa Před 2 lety +3

      you need to extend your raycast length check. if your ground is -0.7 below your character then it wont pass. playerHeight * 0.5f means it is checking a ray length of 0.7 which may not include the -0.7 you are at. Try increasing it by changin it playerHeight * 0.5f + 0.3f for a total of 0.8f length to intersect the floor

    • @donajello
      @donajello Před 2 lety +1

      @HyDay it wasn’t an issue with the script, it was an issue with the objects in the scene? downloading the script from the description did not and would not have solved this problem.

    • @donajello
      @donajello Před 2 lety +2

      @HyDay no worries pal- yes you’re correct in saying that downloading the project straight from the creator WOULD solve this problem, but i personally wouldn’t find it all too gratifying. i’m still really early in learning Unity but i find trial and error is a better learning method than copy and paste haha

    • @supersentaimexicano1967
      @supersentaimexicano1967 Před rokem

      @@damurlive Thanks D'mur. I just have now a new problem since I can double Jump, and even jump just before I touch the ground

  • @w0rkhop555
    @w0rkhop555 Před rokem +15

    Ik this vid is older but following this tutorial i found 1 major flaw and was wondering if anyone had a fix for it, when you hold jump, the raycast at your feet extends slightly below the collider, so you jump before you even touch the ground, this also affects crouching on slopes if you jump while crouched on a slope you will float in the air, i tried reducing the raycast distance for ground detection but that made it impossible to use slopes cause they were too far away, considering best solution is to have a sphere below player that is not only slightly lower to the ground but also slightly larger than the width of the player collider so it could work on slopes

    • @ManjCactus
      @ManjCactus Před rokem +2

      I dont know if i m too late but here is a video that explain is grounded in details, and talk about slops at the end and how to fix it
      czcams.com/video/j41UHuA1bLM/video.html
      if i understood correctly you detect the vector of what your walking on and know if its a slop
      gl man

    • @SuperGamePlayOfficial
      @SuperGamePlayOfficial Před rokem

      might be a bit,late but in the method Update we check if whe are grounded just decreas 0.3f to like 0.1f this wil remove your problem
      you could also make a new float for example float groundDistance give it a value of 0.1f like this
      float groundDistance = 0.1f;
      in Update instead of doing 0.5f + 0.3f we are gonna do 0.5f + groundDistance
      this way you could easily assign a value in the unity inspector. i hope this helped

    • @w0rkhop555
      @w0rkhop555 Před rokem

      @@SuperGamePlayOfficial shortnening the height of the cast doesnt fix the issue only makes it harder to see but i ended up finding a solution and i redid my ground detect entirely

    • @SuperGamePlayOfficial
      @SuperGamePlayOfficial Před rokem

      @@w0rkhop555 thats great to hear, let me guese are you using a physics.checksphere?

    • @w0rkhop555
      @w0rkhop555 Před rokem

      @@SuperGamePlayOfficial that and a combination of other raycasts for stuff like slopes and such, i have something to align the player to the ground for a few frames which is unoticable so when they hold jump they jump the same height every time

  • @andriagoshadze
    @andriagoshadze Před rokem +1

    bro you are so amazing!

  • @tamhuynh8019
    @tamhuynh8019 Před rokem

    Hi Dave... thanks for an amazing tutorial

  • @asstra_s
    @asstra_s Před 2 lety +6

    This is perfect. I hope you upload everything you showed at the beginning.

  • @question2779
    @question2779 Před rokem +27

    for people who didn´t understand this part (1:38), the yRotation is the Axes that gonne rotation, and gonne encrease and dencrease using the xMouse, who will recive the value according the mouse movement, if you don´t understand yet, the yRotation, is a line on the Y axes and if you imagine a object rotation on the Y axes, you gonna see that the object gonna rotate on X coordinates Axes

    • @sillyninja65
      @sillyninja65 Před rokem +16

      cant really understand the comment tbh

    • @xDarki002x
      @xDarki002x Před rokem +1

      Thank you, that was helpfull. I think i got it now xD

    • @kubagrotowski
      @kubagrotowski Před rokem

      bro i dont understand the comment

    • @swiggityswagman
      @swiggityswagman Před 11 měsíci +6

      In case someone needs this in clearer English: the X axis of the camera is up and down, while the Y axis is left and right. When you add to the X axis of the camera, it moves up -- but the mouse y axis is "inverted", and moving the mouse up in this scenario would move the camera down. So you subtract instead of add, to make the directions match up. Since horizontal rotation is already matched, you just add. This works for both directions (i.e left AND right) since left is just a negative reference while right is a positive one. So for the x axis of your mouse, left = -, right = +, stationary = 0. The same concept applies to the vertical rotation, but can be a little confusing from the subtraction.

  • @ewthat
    @ewthat Před rokem

    I needed this I switched from ue5 to unity cuz it seems more practical in some ways but I still didn't master the coding still learning so yeah thanks man

  • @siddharthshah2274
    @siddharthshah2274 Před 5 měsíci +1

    Good video, amazing help. Thank you.

  • @noirlavender6409
    @noirlavender6409 Před rokem +3

    The moment i change from a capsule to a player model i couldnt jump anymore, adding ResetJump(); on start helped with making the capsue jump but not other models, even if i added the collider to the model (capuse collider) the 'fix' was to add the capsule collider directly to the Player, not the PlayerObj, for some reason that worked

  • @atomictortoise
    @atomictortoise Před 9 měsíci +17

    for anyone struggling with the camera being outside of the player, make sure that the camera holder and the player cam objects are at the same coordinate
    anyone struggling with the player not jumping, add readyToJump = true; to Start() and make sure the player starts while touching the ground

  • @lumberapple8820
    @lumberapple8820 Před 11 měsíci

    You are a godsend, Subbed!

  • @wolfsmith9342
    @wolfsmith9342 Před 2 lety +6

    Thank you very much . This is a REALLY smooth controller I really hope ep2 will come soon . bty do you know how to make air strafing and ramp slid like Demoknight Trimping in TF2 and CSGO.

    • @davegamedevelopment
      @davegamedevelopment  Před 2 lety +4

      Thanks, glad you like it!
      I know the mechanics you're talking about but never really tried coding them. Try googling for "Csgo Air straving Code", but you need to be quite good at vector maths for this :D

  • @mayankkoli2300
    @mayankkoli2300 Před 2 lety +6

    if anyone is having a problem that their player jumps too high and falls too slowly go to Project Settings -> Physics and sety the y value to something even lower i found -30 worked darn good for me

    • @scrooloose4473
      @scrooloose4473 Před 2 lety +3

      Thanks! I had fun flying all over the place tho :)

    • @croeusjawad9744
      @croeusjawad9744 Před rokem

      For me, -20 worked much better

    • @firefoxcyan7564
      @firefoxcyan7564 Před rokem

      Instead of changing the gravity of the entire game just add the fall multiplier to the specific rigidbody you want to change

  • @abu0082
    @abu0082 Před rokem

    This guy is on another league, HE UNDERSTANDS QUATERNIONS!!

  • @gui.pimentas
    @gui.pimentas Před rokem

    Wow what an acNice tutorialevent! Best of luck for the rest of your future, I’m looking forward to being able to invest when I turn 21 in November!

  • @Toon444
    @Toon444 Před měsícem +3

    If anyone is having trouble with having really floaty jumps where you fall really slowly, here's how to fix it:
    Go to Edit -> Project settings -> Physics -> Gravity Y and change this Y value to something even smaller (for me -29.43 works pretty well, which is 3*(-9.81) so three times the normal gravity)
    You're welcome!

  • @Mus1im__Goat
    @Mus1im__Goat Před 2 lety +3

    thanks you so much this was sooo helpful but I had a problem with jumping

    • @davegamedevelopment
      @davegamedevelopment  Před 2 lety +3

      Glad I could help! Did you manage to fix the problem? If not, you can download the project file over my discord server and copy the exact setup, then everything should work :D

    • @Mus1im__Goat
      @Mus1im__Goat Před 2 lety +2

      @@davegamedevelopment oh thx, every thing is now fine :D

  • @Stardustyplayz
    @Stardustyplayz Před 4 měsíci

    THIS IS SOOO GOOD!!!

  • @dpereirax
    @dpereirax Před rokem

    Loved it!

  • @Maxatal
    @Maxatal Před 2 lety +3

    Great! Do you know how to emulate the step offset found in character controllers so the player can walk up small steps?

    • @davegamedevelopment
      @davegamedevelopment  Před 2 lety +1

      It's a bit tricky, but I'll Cover it sometime soon :D

    • @croeusjawad9744
      @croeusjawad9744 Před rokem +2

      Try putting two empty gameObjects.
      one at the feet and on at the knee.
      don't ask me how to find the knee and the feet of the capsule, just do it your self. Then copy this script:
      Rigidbody rigidBody;
      [SerializeField] GameObject knee;
      [SerializeField] GameObject feet;
      [SerializeField] float stepHeight = 0.3f;
      [SerializeField] float stepSmooth = 2f;
      private void Awake()
      {
      rigidBody = GetComponent();
      knee.transform.position = new Vector3(knee.transform.position.x, stepHeight, knee.transform.position.z);
      }

      private void FixedUpdate()
      {
      stepClimb();
      }
      void stepClimb()
      {
      RaycastHit hitLower;
      if (Physics.Raycast(feet.transform.position, transform.TransformDirection(Vector3.forward), out hitLower, 0.1f))
      {
      RaycastHit hitUpper;
      if (!Physics.Raycast(knee.transform.position, transform.TransformDirection(Vector3.forward), out hitUpper, 0.2f))
      {
      rigidBody.position -= new Vector3(0f, -stepSmooth * Time.deltaTime, 0f);
      }
      }
      RaycastHit hitLower45;
      if (Physics.Raycast(feet.transform.position, transform.TransformDirection(1.5f,0,1), out hitLower45, 0.1f))
      {
      RaycastHit hitUpper45;
      if (!Physics.Raycast(knee.transform.position, transform.TransformDirection(1.5f,0,1), out hitUpper45, 0.2f))
      {
      rigidBody.position -= new Vector3(0f, -stepSmooth * Time.deltaTime, 0f);
      }
      }
      RaycastHit hitLowerMinus45;
      if (Physics.Raycast(feet.transform.position, transform.TransformDirection(-1.5f,0,1), out hitLowerMinus45, 0.1f))
      {
      RaycastHit hitUpperMinus45;
      if (!Physics.Raycast(knee.transform.position, transform.TransformDirection(-1.5f,0,1), out hitUpperMinus45, 0.2f))
      {
      rigidBody.position -= new Vector3(0f, -stepSmooth * Time.deltaTime, 0f);
      }
      }
      }

  • @mochimann
    @mochimann Před rokem +3

    Hello! I'm following your tutorial but for some reason every time I press play the camera moves above the player and stays above the player instead of inside them. Any Ideas of why this could happen?

    • @GDSuperNoni
      @GDSuperNoni Před rokem +2

      I got the same issue, and I fixed It by making sure that the PlayerCam was At the same spot as the CameraHolder, I think you might have put it above it, and that's what's causing the issue, because the script will move CameraHolder to the CameraPos, and PlayerCam's position will always stay relative to CameraHolder's position, so if you put it above it, the camera will end up above the player !
      I hope this will help :)

  • @TakaShitake-rt8bz
    @TakaShitake-rt8bz Před 9 měsíci

    but honestly I do want to eventually make a hockey/ice-skating game so the part up to 4:54 is pure gold. Now at least I got a nice head-start on that. Amazing tutorials. Subscribed. Can't wait for more

  • @talismanskulls2857
    @talismanskulls2857 Před rokem

    Hey Dave. Great little tutorial. Unfortunately I could not adapt it to fit my current script but do keep making tutorials :). PS Happy Belated New Year

  • @user-fv6nc7qi2x
    @user-fv6nc7qi2x Před rokem +7

    why does his jumping feel so natural but mine feels like im floating around in the air for a bit, is there a way to fix this?

    • @geekycrafter3709
      @geekycrafter3709 Před 4 měsíci +1

      i know its 1 year late, but i found its because the project files he's using has gravity set to -30. When i downloaded the project files and opened stuff to find out my errors, that's what i found. Edit ----> Project Settings ----> Physics ----> Top row, Gravity, set Y value from -9.81 to -30.

    • @user-fv6nc7qi2x
      @user-fv6nc7qi2x Před 4 měsíci

      @@geekycrafter3709 thanks for that lol, ive stopped doing unity, doing ai stuff now. ngl wouldnt that mess up the behavior of rigidbodies, anyways

  • @gabxvyan
    @gabxvyan Před 2 lety +4

    "A transform for the player's orientation"
    I died at that moment

    • @davegamedevelopment
      @davegamedevelopment  Před 2 lety +1

      Haha I guess you need to watch some basic tutorials on Unity Variables First :D

  • @dansim3876
    @dansim3876 Před rokem

    after hours... i finally solved my problem and can go to sleep now.... thank you!

  • @VikMen-ug5hv
    @VikMen-ug5hv Před 8 dny

    Great tutorial it helped me so much

  • @JSO18
    @JSO18 Před rokem +5

    why is your jump so much more snappy/quick than mine is? Did you alter some gravity value? If so, how? Does it have to be done through a script or is there an option in the editor to change it?

    • @JSO18
      @JSO18 Před rokem

      I ended up turning off rigidbody gravity and using a script to add a custom gravity force, but I would still like to know if there is a better way to do this.

    • @davegamedevelopment
      @davegamedevelopment  Před rokem +5

      Go to Project Settings -> Physics -> Gravity and set it to something like 0, -30, 0 :D

    • @JSO18
      @JSO18 Před rokem

      @@davegamedevelopment thank you so much, my artificial gravity force was working but was a little more annoying to work with, this is exactly what I was looking for.

    • @PlantPot118
      @PlantPot118 Před rokem

      @@davegamedevelopment That doesn't work for me.

  • @M_arco
    @M_arco Před rokem +4

    I suddenly have a problem that I'm unable to move. This happened after I dragged my player to a new spawn position, any idea how to fix this? :(
    Edit : i fixed it you just download the code in the desc and it will work

  • @tamvo5557
    @tamvo5557 Před rokem

    many thanks DAVE

  • @martinjensen4563
    @martinjensen4563 Před 8 měsíci

    Just wanna thank you i am in a group projekt and the guy that was supposed to make the code didn't do any work so I had to do it in two days with no codig experience so just wanna thank you for saving my projekt

  • @iceb5743
    @iceb5743 Před 2 lety +5

    Great Tutorial your videos always help me! It worked on looking around, but I’ve done everything you did for the x and y movement and I still can’t seem to move? Any idea why?

    • @davegamedevelopment
      @davegamedevelopment  Před 2 lety +3

      Did you create the whatIsGround layermask? :D

    • @iceb5743
      @iceb5743 Před 2 lety

      No, I didn’t realize that was needed. Thanks!

    • @iceb5743
      @iceb5743 Před 2 lety +2

      I got the movement to work, but I don’t move in the direction I’m facing, I move where the camera is pointing in scene (even if I’m facing backwards and I hit w I’ll go backwards)?

    • @davegamedevelopment
      @davegamedevelopment  Před 2 lety +4

      @@iceb5743 That's how this controller works, but it's easy to change, just put your player graphic into the orientation Objekt (everything in there will rotate with the camera)

    • @iceb5743
      @iceb5743 Před 2 lety +1

      Thanks a lot!

  • @user-bw7uu1xo5n
    @user-bw7uu1xo5n Před 4 měsíci

    Dude, You are the best!!

  • @owenfranke7857
    @owenfranke7857 Před rokem

    🔥 Thank you!!

  • @sillyninja65
    @sillyninja65 Před rokem +7

    to invert controls add a - in your sensY (up) before your integer.
    i.e:
    SensX : 200
    SensY: -200

    • @xwalfie
      @xwalfie Před rokem

      this is helpful but useless so without offense im going to spell out some facts: i dont get why developers like to add inverted controls like BRO WHO TF USES IT

    • @yes-420
      @yes-420 Před rokem +2

      @@xwalfie People that like inverted controls

    • @xwalfie
      @xwalfie Před rokem

      @@yes-420 shut your house door down up left right

  • @pridful6103
    @pridful6103 Před 2 lety +11

    Thank you so much the movement is very smooth.
    For the jump i had an issue where it didnt work although the script had no error
    I fixed that with putting resetJump() in Start()
    After that i realised i could keep jumping higher and higher if i held Space
    It has to do with this code : grounded = Physics.Raycast(transform.position, Vector3.down, playerHeight * 0.5f + 0.2f, whatIsGround);
    Change the "playerHeight * xf" depending on your playerHeight both the variable and the playerObject
    Hope this helps :)

    • @imrealgigachad
      @imrealgigachad Před 2 lety

      Thank you so much for saving my time :D

    • @SpiritualSteve
      @SpiritualSteve Před 2 lety

      i dont understand. What do i change?

    • @imrealgigachad
      @imrealgigachad Před 2 lety

      @@SpiritualSteve you should make the changes in the player movement script

    • @ache7795
      @ache7795 Před 2 lety

      @pridful it says that "xf" does not exist in current context how do i fix it?

    • @imrealgigachad
      @imrealgigachad Před 2 lety

      @@ache7795 copy your original code andmake this, if code get error, paste it old code