How to Program in Unity: Third Person Movement Explained
Vložit
- čas přidán 1. 07. 2024
- Learn how to set up a third person camera and program our characters to move in the right direction!
This tutorial explains how we can use Unity's Free Look Camera and our own code so that our character movement is relative to the direction of the camera. By the end of the video we'll have a working third person character!
This is also the latest entry in a series of tutorials surrounding Unity's Built In Character Controller, however the script was written and video edited so that anyone can watch it and come away with the same results!
ACCESS PROJECT FILES & SUPPORT THE CHANNEL:
💛 / iheartgamedev
iHeartGameDev Merch:
💛 www.iheartgamedev.com
Like the vid? Please consider Subscribing!
💛 bit.ly/2YdIb6j
Links from Video?
Interested in learning more about the Vector math?
• Camera-Relative Moveme... ✅
Interested in learning more about Cinemachine?
• Cinemachine ✅
SOCIAL:
✦ Discord
/ discord
✦ Twitter
/ iheartgamedev
Jammo is from Mix and Jam:
🤖 Download Jammo for YOUR game:
assetstore.unity.com/packages...
⭐ And Check Out MixAndJam!
/ mixandjam
►TIMESTAMPS:
Introduction - 0:00
Getting Started with Cinemachine - 0:30
Third Person Cam Initial Set Up - 1:40
Let's get Progamming: 2:56
How the example character currently moves: 3:39
Basic example movement: 3:59
Current problem and solution visual: 4:10
Programming ConvertToCameraSpace solution: 4:31
How to Rotate a Vector: 5:35
Programming ConvertToCameraSpace solution part II: 6:07
Fixing missing Y Movement: 6:46
Fixing character rotation: 7:22
All the important changes for a better feeling camera: 8:28
FOV: 8:40
Rig settings: 9:00
Moving focus point: 9:28
Slowing down sensitivity: 10:07
End result: 10:30
Coming soon: 10:45
This is literally better than some paid courses classes.
Your channel is amazing and I have to applaud what you're doing here, well fucking done Nicky 👏(sorry if I misspelled it)
Thank you for your kind words! I hope that it helps 🙌
Better Some paid courses? Can you link them "better?
@@iHeartGameDev hello what is the name of the visual studio code theme you are using
As someone who is working on a project finding this channel is the best thing happened to me this year
Where the project at though
Thank you all for checking out the new tutorial! I'm so excited to finally share a tutorial on how to set up a third person camera and third person movement that feel good to use. It took a minute to get here and I know that a lot of you were waiting for it, so it's awesome that it is finally out! Thank you all for the support! I hope this helps you all on your gamedev journeys and I can't wait to share more 💛
Cheers!🍻
-Nicky
Can you please take it to more advance level . Like combat states, combos, sword draw and out, wall run, climb etc
Please 🙁🙏
your content is amazing , i found what i was looking for there , from boolean animation to blend trees , retargetting , third person movement etc , everything is well explained , and the videos are not too long , respect and thank you
Finally a third person tutorial. I have followed your animation tutorial and it when so well your code are very easy to understand. I will definitely watch this tutorial when it come out. Love from Vietnam 🇻🇳 .
Right when I'm actually trying to do 3rd person movement for the first time, I see this video being posted. Strange.
Thank you for making these amazing tutorials.
Looking forward to it!
Thanks for this, waiting now
Hey, thank you sooooo much for these videos! These have been super helpful to me as I've been beginning making my first game!
So informative, thanks a lot!
Thank you Nicky, this is AMAZING explanation!!! 👍
You are the best!! Thanks a lot. I am a third year student in game developpement and I discovered your channel today. You already help me a lot with my project. Awesome channel, thanks again.
Thank you Iris! Happy to have you in the discord now and an awesome new member of the community!
These tutorials are really top notch and among the highest quality here on youtube! After finishing the movement and camera series - are you also planning on tackling more complex systems such as inventory systems, item setup (scriptable objets etc.)? it is really hard to find in-depth videos on this topic!
That sounds like a lot of fun!
And thank you for the kind words!
thanks so much man
Que gran trabajo, gracias por estos videos.
Thank you for the wealth of knowledge on the subject. Really, this is a gem of a tutorial series. I know there are a lot of recommendations and you're probably already well on your way through your next one but I hope you can show how you'd handle something like sliding. Especially when you have stored momentum from moving, falling and possibly things knocking you around like enemies or explosions. I figured most of sliding out using ProjectOnPlane to get the angle and adjust the falling gravity however when I try and go down a slope at a certain angle the X for _appliedMovement is 0 or -1 because of the slope angle and I jitter at the edge of the slope. Hoping for a solution, it's got me stumped for too long now.
Great tutorial, can't wait for the rest! 👏🏻
Small question : how would you modify the controller / camera to create an Orc must die style when moving (like strafe right and left) ?
Really cool video! You should do a tutorial on procedural animation
It's just awesome
Do you think you could do a video about making backups for unity and the process of trial and error sometime? It probably wouldn't be as technical as these other videos, but I think it could be very insightful for the creative programming process.
please make the rigidbody 3dcharacter controller series
I've been moving away from the buil-in CC mostly because it limits you to the capsule-shaped colliders - which in my opinion is often a deal-breaker later in development.
Looking forward to see what you do with it!
Thanks Weckar! I think it makes sense to step away at some point too. Both the capsule shape and inability to rotate the collider can be tough to deal with. I'm not sure when it makes sense to do so though, so I'll probably leave it up to the community
You should just Kinematic Character Controller, or RIval. They are the best Kinematic Controllers out there.
@@iHeartGameDev how about creating a video on this - a hand rolled character controller which overcomes these issues, please?
@@iHeartGameDev Give Scivolo CC a try, it's free.
Fun story, I made this yesterday all by myself. (P.s. partial thanks to your videos)
Dark doom! Awesome to hear from you and great to see that you were able to get it working!!
Could you do a tutorial on an fps movement or how to reuse your series code for an fps?
Can’t wait for this one 🎉
Wow 😍
These tutorials have really helped me! But I think there are some things I don't quite understand since making the state machine. Like, how do I know if I need to make a new root state? Also, how do I make new variables that can be read in the PlayerStateMachine class? Or should all variables be written in the PlayerStateMachine class, and then use getters and setters to access them in the other classes? Thanks!
Can you give some tips on 3d combat? Nobody has a tutorial online.
Great Video!
I followed it to implement the same for my prototype but there are some problems.
I have very jittery camera movement on the Y axis (so when looking up/down), with both mouse and controller, while using the new input system with the CinemachineInputProvider. The cinemachine brain is set to SmartUpdate/FixedUpdate and my target is a rigidbody controlled using AddForce - Acceleeration in FixedUpdate(). I tried LateUpdate but then everything is jittery. It's been 3 weeks and have not solved it yet. Thoughts?
bro i just made a third person cam with my own frecking code then i see this masterpiece 😭
You probably learned a lot! I hope that this is still helpful!
Currently I want to Implement a crouch system but i dont knnow how to implement. In old input system we use
If(Input.GetButtonDown)
{
Crouch = !Crouch;
}
and we can use this boolean to use crouch just by using only one button but now i cant find a way to implement like this in new input system.When I tried to implement the current state goes to crouch state only during holding the button but I need to switch to crouch state when I click the button and switch to another state from crouch state when i click the same button.
lol working thanks
When I turned on the camera I got a error that said argument out of range must be non negative and less than the size of the collection how do I fix that
cinemachine is also great because you don't have to create extra cameras. the virtual cameras concept is genius.
the camera space conversion could be reduced down to just a couple lines of code with TransformDirection()
all workеd
I know this is a tall order, but could you please make a version of your tutorial series for unreal engine? I have been looking everywhere for resources on creating Mario Odyssey style movement! If you don't have the time to dedicate to this task, could you at least point me towards resources to help me implement Odyssey style movement in unreal engine?
What you're talking about is called a *3D Platformer*
There is a tutorial for how to make one by *Astrum Sensei* The tutorial Playlist is in the Video Description:
"Creating A 3D Platformer With Unreal Engine 4"
/watch?v=Rl7xxQhp4q8
I'd totally watch it too! These videos are a great resource
My Character is moving in a Circle around the Camera, when strafing to the left or right. What could be the Problem? I want it to move in a straight Line.
Hey guys i've had an issue where the camera relative movement works perfectly in the editor but after building the game it becomes fixed again, did anyone else have this issue? I found nothing on it on the internet and spent the whole day on it with no clue what to do...
Can you do mad max style combat system
I have no idea what's wrong with my character, but the model will only rotate with the camera sometimes and never past 90 degrees... Anyone know what's up?
Hi. I have a beginner's question. Instead of multiplying the x and z vectors separately, what if I use the camera's transform.forward vector3, clear its y value and normalize it, then multiply it with the input vector3? Would that work as well? If it works would there be any problem doing it this way?
Your tutorials are awesome, thanks!
I was wondering this too.
Why dont you try it yourself, its worth a try
Every time I try to add the Cinemachine Free Look Cam, it always aims at my players feet and doesn't seem to work right. I do everything like in the video but I think maybe theres been an update to Unity because I cant get it to stop looking at the feet/bottom of my character.
In the Look At section you dont neccersairley need your whole player, i had the same problem and i just put in the body bone of my character. Worked fine
I started watching brooklyn nine nine and realised, I've seen Jake Peralta somewhere
My character isn't rotating
Sad to see that this is the last of the CC tutorials, as one of the most important aspects of a CC isn't tackled. Collision. Yes, the Unity CC has basic collision but not nearly good enough to tackle anything but flat surfaces.
Latest != last -- There will definitely be more videos in this series!
@@iHeartGameDev Ah, fair enough, my bad, read it wrong ^^;
Hope to see slopes and other uneven surfaces handled in the future, as your videos are exceptional
am i the only one getting an orbiting issue with the camera?
"Learn the code" I will NOT, no matter how simple and easy you make it!
You still look at a unity code vid bud... dont know what to tell you
And now this is officially a dead channel.
New video out Thursday :)
Just use this code to convert the world-space direction to a camera-space one.
direction = Camera.main.transform.TransformDirection(direction);
direction.y = 0f;
I keep getting this error everytime I click W A S or D :
Look rotation viewing vector is zero
UnityEngine.Quaternion:LookRotation (UnityEngine.Vector3)
playerStateMachine:handleRotation () (at Assets/State Machine/playerStateMachine.cs:121)
playerStateMachine:Update () (at Assets/State Machine/playerStateMachine.cs:159)
same, did you find the solution?
cameraForward.y = 0;
cameraRight.y = 0;
unity says this is not working