Move and Animate a 3rd Person Character in Unity3D

Поділитися
Вставка
  • Опубліковано 29 лис 2024

КОМЕНТАРІ • 114

  • @hoax-games
    @hoax-games 4 роки тому +81

    Very useful video. There is one small little bug though. velocityZ and velocityX are normalized so if you move for example to the top right, the values will be both ~0.707. However in the animator the values required for the top right animation to play are set to require both values to be 1. This will never happen. This can be easily fixed by adapting the values in the animator.

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

      You can also have a normalized variable for velocity, and an un-normalized variable for input. This lets you keep track of the player's input separate from the velocity (in case you want to read inputs, but keep the player from moving, say during a cut scene, or maybe a mini-game type interaction within the game). You can also get nice movement by having your input act more as an accelerator than a direct movement, which could be useful when your game has things like ice, and you want to make the inputs apply to the movement with lower strength, to give the effect of slipping/sliding.

  • @petrosaslanidis
    @petrosaslanidis 4 роки тому +30

    I like that Jason explain every line of code.

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

    Waiting for a recall on my car today at the dealership and decided to dig into this area which I am, at best rusty at, and every video I hit on was from Jason Weimann. All super useful, doing a good job of refreshing my noggin and educating me. Thank you.

  • @Roundbeargames
    @Roundbeargames 4 роки тому +7

    brutally simple and effective! this is the best video i've seen on animating a tps character. can't wait to see the full game!

  • @pwnzor89
    @pwnzor89 4 роки тому +13

    I wish we had this a year ago, we made an 8 directional nav controller for an isometric top down game in unity with joysticks and LET ME TELL YOU WHAT, our code is wwwwaaaaayyy longer than 45 lines. haha This is extremely helpful, you never know what your next video will do for a team! thanks so much for keeping at this thing, it helps so much for those of us that didn't go to college and are figuring out what coding is. You. Rock. :)

    • @mrworldwide9172
      @mrworldwide9172 3 роки тому +3

      don't worry even those who go to college are figuring out what coding is and how things work 😂

  • @phirewind
    @phirewind 3 роки тому +1

    Just wanted to say that the fact that you and Charles don't both have at least an order of magnitude more views is an indictment on UA-cam's ability to get actual useful videos in front of budding (and aging) developers. Keep up the good work, Unity has evolved so much just in the past 2 years that I've struggled to keep up while not doing it full-time.

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

    If you are working on a mobile game with joystick and want to blend from run to walk based on stick's position, just add them to the blend tree at 0.5 and remove .normalized from Dot.

  • @quietackshon
    @quietackshon 4 роки тому +3

    Thanks for showing how to setup the animations, the code control and "how-to" blendtree.
    You mentioned "animation driven movement", as well as "root motion", are these the same, and how can they be incorporated into the game character animation work flow.
    Your tutorials are very helpful for beginner/intermediate developers.

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

    These videos are just soo great, esspecially the deeper explanations of what everything does. Thanks Jason!

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

    Thank you for this, awesome tut! One other suggestion, where you set the Root Transform Rotation, you can change Based Upon field to Original, that will inherit the original rotation from Mixamo, which works great for their animations and should re-center your model.

  • @dragoneye2640
    @dragoneye2640 4 роки тому +14

    For Mixamo animations, you can change the "Root Transform Rotation" to base upon the other option "Original"-something. I found that it adds the proper offsets automatically to the clips I imported.

    • @vyacheslav2293
      @vyacheslav2293 4 роки тому

      saved me lots of time in future by saying this!

  • @mezzanine510
    @mezzanine510 3 роки тому

    Your dot product solved my problem, thanks a ton man!

  • @AllDayBikes
    @AllDayBikes 4 роки тому +3

    This looks a lot easier than blending between states, never seen the blend tree before. Although the last time I dealt with animation within unity was a few years ago

  • @montanas_code
    @montanas_code 3 роки тому

    I wasn't finding some variant to change coordinates from one decart coord system to another rotated with center at the same position. But u know how can it simple and smart! U re awesome !

  • @djProduct2008
    @djProduct2008 4 роки тому +9

    5:28 The naming mistake is that you don't put an underscore on a local variable "direction". The underscored convention "_direction" implies that the variable is a private field of its class.

    • @fejza
      @fejza 3 роки тому +1

      Not really a mistake and personal preference. Prefixing private fields with "_" is actually against the official C# naming guidlines. But a lot of people like to do it. A lot of people don't do it.

    • @fejza
      @fejza 3 роки тому +1

      If you want to learn more about official naming guidlines here's the source: docs.microsoft.com/de-de/dotnet/standard/design-guidelines/names-of-type-members

    • @djProduct2008
      @djProduct2008 3 роки тому +1

      @@fejza Thanks, but I'm well acquainted. You've missed the point a bit. He used an underscore naming convention with a local variable, not a private field. That would communicate that the local variable was a private field to most developers. So, I'd agree either way. You're right, it's not technically a naming "mistake". At the same time, I would have serious problems with any developer suggesting underscores for local variables project-wide is a sound idea. It's poor code communication and something that should be corrected, kind of like a mistake would be.

    • @fejza
      @fejza 3 роки тому +1

      @@djProduct2008 thanks. Sorry my bad. It was late a night haha. I agree, naming local variables like that may spawn a lot of confusion. I've actually seen people doing that a couple of times as well.

    • @djProduct2008
      @djProduct2008 3 роки тому

      ​@@fejza No worries man! I'm a big fan of the Microsoft naming convention guidelines in my professional LOB work. I find them hard to adhere to with Unity C# sometimes. The first time you sit in front of a MonoBehaviour with public fields as a norm, as an experienced C# dev, and survive the shock and horror, and turn ReSharper off for a while, we realize this isn't C# Kansas anymore.
      Some concessions do have to be made in Unity with regards to naming conventions or even good practice (like public fields vs our standard approach encapsulated properties) or countless other issues in order to support the Unity Editor, design-time variables, performance reasons, etc.
      So, be careful hitting too many potentially terrified C# newbies over the head with that book of guidelines in this particular culture of C#. It's great intel, I agree, but it's only so helpful in this ecosystem.

  • @Brian-vs9sd
    @Brian-vs9sd 4 роки тому

    I'm really enjoying all this content Jason.

  • @DePistolero
    @DePistolero 4 роки тому

    Awesome, after finding out about blend tree, that is the only thing I every use to animate character great approach.

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

    Thanks a lot for "Lock" feature

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

    Great video! :) Many thanks!
    how would i modify this script to accept more nodes in the Blend Trees, the "2D Freeform Directional setting"? If I want to include running, and maybe crouching and jumping etc?

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

    7:00 I would only normalize the movement vector if magnitude > 1, since if you are using a controller, you may actually want a movement vector less than 1 for stuff like walking or in general more controlled movement

  • @gabrielplourde6791
    @gabrielplourde6791 4 роки тому +1

    So many informative videos. I hope you aren’t burning out, we need you! :D

  • @nGAGE0nline
    @nGAGE0nline 4 роки тому +3

    local variable "underscore"direction? :D
    Why would you update transform on an actor with a rigidbody?
    Also, wouldn't your diagonal animations never play at their respective full animation-speed? (you'll never have a value of (-1,1) since your Velocities are normalized? Seems like it would need to be something closer to -0.7, .0.7 for example... or maybe I'm just overthinking it)

  • @NguyenHoangPhuong-qf6xb
    @NguyenHoangPhuong-qf6xb 3 роки тому +1

    How do you make Camera follow, I use Cinemachine Cam and method AimAtMouse() completely broke up all (because of Cinemachine Virtual Camera must Follow player, but cant handle that with your method changing transform.forward)

  • @androvisuals6863
    @androvisuals6863 3 роки тому

    As always an amazing video! Thank you so much for taking the time to create such amazing tutorial content

  • @gzayorvus3195
    @gzayorvus3195 4 роки тому

    Really amazing and straight to the point, thanks a bunch!!

  • @SentinelaGames
    @SentinelaGames 3 роки тому

    Thank you very much, knowledge is always welcome.

  • @5252emre
    @5252emre 4 роки тому +3

    17:51 when i set up the transform rotation i change body rotation to original then u dont need to adjust the offset

  • @mrCreepsy
    @mrCreepsy 4 роки тому +3

    1:24 So you say we forget the Like Button then

    • @videowatcher8874
      @videowatcher8874 4 роки тому

      "P.S. Please forget the Like button"
      Gotta love it.

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

    when i move my character and rotate the camera the buttons messed up for example when i press w the player move right if i press d then player move backwards s player move left a player move forward

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

    What is the soft used for mouse click high lights ???

  • @frankf1667
    @frankf1667 3 роки тому

    This is very useful, but how do you make the character move faster (as in many games) by holding down the Shift key for example?

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

    Capsule + Rigid vs CharacterController ... always a big question

  • @webunlocked
    @webunlocked 4 роки тому

    Really great content!

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

    When I change the rotation of my character, the animations don't recognize transform.forward. It seems transform.forward is using world space and Im not sure as to why.

  • @tejasbele1456
    @tejasbele1456 3 роки тому

    Thank yo so much
    You really saved me : )

  • @creaturecove7544
    @creaturecove7544 4 роки тому

    Great info, thank you.

  • @LuRybz
    @LuRybz 3 роки тому

    Jason, one problem I ALWAYS face in my projects is the need of a Factory of Prefabs.
    Oftenly I need a reference of a prefab in some strange place. The ideal is to have an static function that could create the thing and already dealing with the prefab dependency.
    Any ideas?

  • @SantinoDeluxe
    @SantinoDeluxe 3 роки тому

    if you want to build a simulation controller where one thumbstick controls a limb (say a leg) and collision dictates movement... where would you start? what would you call that?
    i know its too high level for me but thats the direction i want to head. thanks for your help

  • @bounames
    @bounames 3 роки тому

    Hi Jason, thanks for the tutorial. Adding a small float of 0.1sec on the animator.setfloat messes up my animation events especially with those used for foot step sounds. Do you have a work around?

  • @neothespankplank5839
    @neothespankplank5839 3 роки тому

    Why does the diagonal movement work with animations? The normalized values will never be (-1, 1) for example. Is it because the values of 0.7(ish) are closer to 1 than to 0? I am kinda confused :D

  • @skizooooooooo
    @skizooooooooo 4 роки тому

    Awesome! Thanks a bunch :D

  • @amac333
    @amac333 4 роки тому

    great vid, thanks.

  • @macleodgordon
    @macleodgordon 3 роки тому

    Just downloaded the Robot using your link above, placed it on a 3d-plane, but under the Player Movement script, there is no 'Aim Layer Mask', just the variable 'Speed'. Also under Art/Robot where you chose the Idle animation. I have nothing but 'Player' under Art/Robot. Where is all this stuff you are talking about Jason? :(

  • @raingamedev702
    @raingamedev702 4 роки тому

    Hi Jason, which controller do you use to develop / play? And do you use different controllers for games and dev or just one? thanks!

  • @spacemonkey2377
    @spacemonkey2377 4 роки тому

    Thanks for the nice tutorial. I saw some time ago that you posted a video about Rider and how you loved it. I see in your recent content that you're back to VS. I'm at the end of my evaluation period for Rider and would love to have your opinion. Why did you switch back to VS? Thanks!

    • @Unity3dCollege
      @Unity3dCollege  4 роки тому +3

      Only for tutorial videos. Still love rider :)

    • @spacemonkey2377
      @spacemonkey2377 4 роки тому

      Awesome. Keep up the great content ;-)

  • @nocultist7050
    @nocultist7050 4 роки тому

    Tell my why Vertex Snapping in unity is still broken and how am I supposed to tile my 3D modular levels without seams...

  • @sajidgame1321
    @sajidgame1321 4 роки тому

    Nice tutorial, I have a qeustion, for example in main menu if I changed difficulty or music volume and I will go to other scene, is will be reset all that changes what I make it, so how I will save the changes in main menu and go to other scene with that changes I made it ?

  • @kemshura1566
    @kemshura1566 3 роки тому

    wow this is excellent could i use for comercial use please? thanks in advance

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

    is you rig in humanoid ?? because my animation there is no option for offset

  • @Thesupperals
    @Thesupperals 4 роки тому

    Could someone explain to me what it means to "bake into pose"? I don't understand more than half of the terms Unity uses and it becomes very confusing when you're coming from blender where you Bake a material into a texture.

  • @among4684
    @among4684 3 роки тому

    SO HELPFULLL THX!!!!

  • @random_precision_software
    @random_precision_software 4 роки тому

    Do you find you NEED to user the get component in start there's been time I've forgot to put them in and they worked fine!?

  • @azgan123
    @azgan123 4 роки тому

    Hey Jason, thanks for the vid. If I'm blending animations with events how do i know which event will play?

  • @michaelwilson8461
    @michaelwilson8461 3 роки тому

    Anyone know if he got around to that next video he mentioned at the end?
    Would like to see that one.

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

    Why does the title say 3rd person when it means top down or isometric?

  • @gower1973
    @gower1973 4 роки тому

    Hi Jason, on the animation preview there is a red arrow under his feet, but its not pointing straight, what is that arrow and should it point towards the blue arrow?

  • @steelshot-x
    @steelshot-x Рік тому

    can someone post the full code it doesn't let me see the whole thing.

  • @5252emre
    @5252emre 4 роки тому

    when i blend a second animation layer for the upper body its looking weird. i try to combine the pistol animations with rifle 8 way animations

  • @idkidc1885
    @idkidc1885 3 роки тому +1

    pls make another tuturial making him shoot and kill enemys

  • @SpawnCampGames
    @SpawnCampGames 4 роки тому

    did u prefer to use var direction? otherwise didnt see it

  • @ZwaneMakki
    @ZwaneMakki 3 роки тому +1

    Great tutorial. Why do tutors never do the jump! 3 years watching these tutorials and the jump animation is always left out. IS it an insider youtube joke!

  • @bluestrawberry1225
    @bluestrawberry1225 3 роки тому

    I've been trying to limit my character animation to only keyframes, is there a way to do it using a script?

  • @kerbalette156
    @kerbalette156 3 роки тому

    Any vids on the new input system? Old one is erm old

    • @Unity3dCollege
      @Unity3dCollege  3 роки тому

      Not yet. Still not sure its ready for the average yet. Setup is too complicated still without some good defaults. May do one soon anyway though

    • @kerbalette156
      @kerbalette156 3 роки тому

      Thought it had gone to ‘verified’ state

  • @MegaForrestfire
    @MegaForrestfire 4 роки тому

    Will there ever be a 2.5D character controller tutorial? Find out on the next..Dragon Ball Z..

  • @justsomeone64
    @justsomeone64 3 роки тому

    A lot of my code isn't turning the same colour as yours. It remains white
    Is this a problem? Because I have 3 errors 😅

  • @reiydl3771
    @reiydl3771 3 роки тому

    When I log into Mixamo and attempt to upload the robot, it tells me it is unable to map it. I am exporting the robot file in the Art folder as an FBX file, which is how it is shown when exporting the package. Am I doing something wrong?

  • @gorkemvids4839
    @gorkemvids4839 4 роки тому +1

    I thought you'll do animation movement with root motion.

  • @jobbydude
    @jobbydude 4 роки тому

    I came here for the aim part :P

  • @durgayadav3075
    @durgayadav3075 4 роки тому

    Aswome I. Wanted to learn it

  • @bouchini_yt8922
    @bouchini_yt8922 3 роки тому

    nice coffe cup

  • @telmonks
    @telmonks 3 роки тому

    should it be _hitInfo ?

  • @telmonks
    @telmonks 3 роки тому

    What was your camera setup?

    • @Giluby
      @Giluby 3 роки тому

      Did you find out ?

    • @telmonks
      @telmonks 3 роки тому

      @@Giluby not yet.

    • @Giluby
      @Giluby 3 роки тому

      @@telmonks I don't have smooth player movements either 😕

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

    are you using root animation :??

  • @aaronfuraus9765
    @aaronfuraus9765 3 роки тому

    forget the like button???

  • @tmoneygamestudio
    @tmoneygamestudio 4 роки тому

    did you forget to say RaycastHit where you said Physics.Raycast???

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

    who are all those people in the credits rolling at the end? Does it take a team of 400 people to make these tutorials? lol

  • @systembreaker4864
    @systembreaker4864 4 роки тому

    I gave 1000th view

  • @mochakane9201
    @mochakane9201 3 роки тому

    cannot find velocities. stays at 0 although my character is moving around

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

      Go to Window > Animation > Animation Parameters > "+" sign > And create "VelocityX" and "VelocityZ" with Float type

  • @EmadPone
    @EmadPone 4 роки тому

    Can I have an email, I want to email you

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

    I bet this guy's like 30, but he looks 55.

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

    4:00 you cant even fucking see what is says

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

    зачем орать

  • @krzysztofjarzyna4225
    @krzysztofjarzyna4225 4 роки тому

    First!

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

    what a mesh up video 👎 didn't like it