Move and Animate a 3rd Person Character in Unity3D

Animate your characters movement smoothly in 8 directions with the Unity3D mecanim system and blend trees. I'll show you the steps, how to get and setup the animations, give you a character you can test it on, and show you all the code you need to build your own 8 direction character movement system in Unity3D.
Download the Robot: game.courses/robot-and-blaste...
Join the Stream Build a Full Game - • FULL 3D Shooter in uni...
Join the Group: unity3d.group
Patreon: / unity3dcollege
Check out the Programmer Course: game.courses/programmer/

Пікірлер: 115

  • @hoax-games
    @hoax-games3 жыл бұрын

    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 жыл бұрын

    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
    @petrosaslanidis3 жыл бұрын

    I like that Jason explain every line of code.

  • @Roundbeargames
    @Roundbeargames3 жыл бұрын

    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!

  • @bovineox1111
    @bovineox1111 Жыл бұрын

    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.

  • @quietackshon
    @quietackshon3 жыл бұрын

    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
    @Husmanmusic2 жыл бұрын

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

  • @phirewind
    @phirewind3 жыл бұрын

    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 KZread'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.

  • @pwnzor89
    @pwnzor893 жыл бұрын

    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

    2 жыл бұрын

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

  • @montanas_code
    @montanas_code3 жыл бұрын

    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 !

  • @DePistolero
    @DePistolero3 жыл бұрын

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

  • @androvisuals6863
    @androvisuals68633 жыл бұрын

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

  • @Brian-vs9sd
    @Brian-vs9sd3 жыл бұрын

    I'm really enjoying all this content Jason.

  • @AllDayBikes
    @AllDayBikes3 жыл бұрын

    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

  • @PointToBlank89
    @PointToBlank892 жыл бұрын

    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.

  • @gzayorvus3195
    @gzayorvus31953 жыл бұрын

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

  • @mezzanine510
    @mezzanine5102 жыл бұрын

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

  • @gabrielplourde6791
    @gabrielplourde67913 жыл бұрын

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

  • @Unity3dCollege

    @Unity3dCollege

    3 жыл бұрын

    Not at all :)

  • @SentinelaGames
    @SentinelaGames3 жыл бұрын

    Thank you very much, knowledge is always welcome.

  • @azgan123
    @azgan1233 жыл бұрын

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

  • @bounames
    @bounames3 жыл бұрын

    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?

  • @dragoneye2640
    @dragoneye26403 жыл бұрын

    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

    3 жыл бұрын

    saved me lots of time in future by saying this!

  • @creaturecove7544
    @creaturecove75443 жыл бұрын

    Great info, thank you.

  • @5252emre
    @5252emre3 жыл бұрын

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

  • @frankf1667
    @frankf16672 жыл бұрын

    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?

  • @random_precision_software
    @random_precision_software3 жыл бұрын

    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!?

  • @poochy661
    @poochy6612 жыл бұрын

    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

  • @LuRybz
    @LuRybz3 жыл бұрын

    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?

  • @webunlocked
    @webunlocked3 жыл бұрын

    Really great content!

  • @among4684
    @among46843 жыл бұрын

    SO HELPFULLL THX!!!!

  • @tejasbele1456
    @tejasbele14562 жыл бұрын

    Thank yo so much You really saved me : )

  • @5252emre
    @5252emre3 жыл бұрын

    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

  • @lefterisk1872
    @lefterisk18722 жыл бұрын

    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.

  • @amac333
    @amac3333 жыл бұрын

    great vid, thanks.

  • @nGAGE0nline
    @nGAGE0nline3 жыл бұрын

    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)

  • @levayv
    @levayv Жыл бұрын

    Thanks a lot for "Lock" feature

  • @levayv

    @levayv

    Жыл бұрын

    21:06

  • @Director414
    @Director41411 ай бұрын

    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?

  • @raingamedev702
    @raingamedev7023 жыл бұрын

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

  • @gower1973
    @gower19733 жыл бұрын

    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?

  • @SantinoDeluxe
    @SantinoDeluxe3 жыл бұрын

    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

  • @NguyenHoangPhuong-qf6xb
    @NguyenHoangPhuong-qf6xb2 жыл бұрын

    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)

  • @michaelwilson8461
    @michaelwilson84613 жыл бұрын

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

  • @djProduct2008
    @djProduct20083 жыл бұрын

    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 жыл бұрын

    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 жыл бұрын

    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 жыл бұрын

    @@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 жыл бұрын

    @@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.

  • @SpawnCampGames
    @SpawnCampGames3 жыл бұрын

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

  • @unityalexdev
    @unityalexdev Жыл бұрын

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

  • @Thesupperals
    @Thesupperals3 жыл бұрын

    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.

  • @neothespankplank5839
    @neothespankplank58392 жыл бұрын

    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

  • @reiydl3771
    @reiydl37713 жыл бұрын

    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?

  • @Bynaree
    @Bynaree3 жыл бұрын

    Thanks

  • @nocultist7050
    @nocultist70503 жыл бұрын

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

  • @bluestrawberry1225
    @bluestrawberry12252 жыл бұрын

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

  • @bonse2000
    @bonse2000 Жыл бұрын

    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

  • @macleodgordon
    @macleodgordon3 жыл бұрын

    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? :(

  • @kemshura1566
    @kemshura15663 жыл бұрын

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

  • @spacemonkey2377
    @spacemonkey23773 жыл бұрын

    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

    3 жыл бұрын

    Only for tutorial videos. Still love rider :)

  • @spacemonkey2377

    @spacemonkey2377

    3 жыл бұрын

    Awesome. Keep up the great content ;-)

  • @Shadowjones
    @Shadowjones Жыл бұрын

    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.

  • @neozoid7009
    @neozoid7009 Жыл бұрын

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

  • @sajidgame1321
    @sajidgame13213 жыл бұрын

    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 ?

  • @davidcalderwood5540

    @davidcalderwood5540

    3 жыл бұрын

    Look into Scriptable Objects

  • @sajidgame1321

    @sajidgame1321

    3 жыл бұрын

    @@davidcalderwood5540 thank you

  • @justsomeone64
    @justsomeone643 жыл бұрын

    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 😅

  • @gorkemvids4839
    @gorkemvids48393 жыл бұрын

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

  • @KroneDev
    @KroneDev Жыл бұрын

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

  • @halivudestevez2
    @halivudestevez2 Жыл бұрын

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

  • @surgesteelshot8617
    @surgesteelshot8617 Жыл бұрын

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

  • @durgayadav3075
    @durgayadav30753 жыл бұрын

    Aswome I. Wanted to learn it

  • @MegaForrestfire
    @MegaForrestfire3 жыл бұрын

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

  • @telmonks
    @telmonks2 жыл бұрын

    should it be _hitInfo ?

  • @mrCreepsy
    @mrCreepsy3 жыл бұрын

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

  • @videowatcher8874

    @videowatcher8874

    3 жыл бұрын

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

  • @kerbalette156
    @kerbalette1563 жыл бұрын

    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

  • @idkidc1885
    @idkidc18853 жыл бұрын

    pls make another tuturial making him shoot and kill enemys

  • @neozoid7009
    @neozoid7009 Жыл бұрын

    are you using root animation :??

  • @ZwaneMakki
    @ZwaneMakki2 жыл бұрын

    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!

  • @telmonks
    @telmonks2 жыл бұрын

    What was your camera setup?

  • @Giluby

    @Giluby

    2 жыл бұрын

    Did you find out ?

  • @telmonks

    @telmonks

    2 жыл бұрын

    @@Giluby not yet.

  • @Giluby

    @Giluby

    2 жыл бұрын

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

  • @bouchini_yt8922
    @bouchini_yt89222 жыл бұрын

    nice coffe cup

  • @tmoneygamestudio
    @tmoneygamestudio3 жыл бұрын

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

  • @jobbydude
    @jobbydude3 жыл бұрын

    I came here for the aim part :P

  • @hplovecraftmacncheese
    @hplovecraftmacncheese Жыл бұрын

    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
    @systembreaker48643 жыл бұрын

    I gave 1000th view

  • @EmadPone
    @EmadPone3 жыл бұрын

    Can I have an email, I want to email you

  • @aaronfuraus9765
    @aaronfuraus97653 жыл бұрын

    forget the like button???

  • @mochakane9201
    @mochakane92013 жыл бұрын

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

  • @xXxPhipsxXx14

    @xXxPhipsxXx14

    3 жыл бұрын

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

  • @krzysztofjarzyna4225
    @krzysztofjarzyna42253 жыл бұрын

    First!

  • @counterflipzz7084
    @counterflipzz70842 жыл бұрын

    4:00 you cant even fucking see what is says

  • @dopplegangerdavid
    @dopplegangerdavid Жыл бұрын

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

  • @openherewinchesterroadchan2070
    @openherewinchesterroadchan2070 Жыл бұрын

    зачем орать

  • @neozoid7009
    @neozoid7009 Жыл бұрын

    what a mesh up video 👎 didn't like it

  • @skizooooooooo
    @skizooooooooo3 жыл бұрын

    Awesome! Thanks a bunch :D