To stop objects from moving through colliders when moving at a fast pace you can set the objects rigid body's collision detection from discrete to continuous. It's more performance heavy which is why it's not the default.
Looking for a fix myself. I have tried everything. Continuous Dynamic on all rbs with interpolate turned on. The rb I am moving still "goes inside" the RB it's colliding with.
I've seen a lot of rigidbody lesson on both unity official tutorials and youtube but this is the best well explained and distilled version ever! Keep on your journey, I'll be following!
when I rotate the capsule with the mouse the axes change direction (W becomes S and A becomes D and vice versa), so to go forward I have to use A, D or S depending on where the player is looking . Does anyone know how I fix this? I tried transform.Translate, but as said in the video, it doesn't work along with physics
This video is a gift from heaven. I just started unity a week back and my script is super complicated because i never knew how to do movement, so I experimented. This REALLY helps a lot! Thank you!
This is what a tutorial should look like. Been searching for a simple and well detailed answer for eternity and i got even more confused each time, but finally, I got a good answer. Thanks man 👌🏾
This was information I needed for a long time. I kept trying to have the translate behavior, while avoiding clipping issues. I couldn't find an answer until your video. Thank you.
This video is the best explained video on the subject that I've ever seen. Even my teacher in college didn't explained that well. This will help me alot, thanks
Sir, please make more of these. As a complete beginner your way of describing makes so much sense than the traditional “ follow me” tutorials where when you finish you are just as clueless if not more than when you began
First of all, I like all you videos and how well done they are just made (recorded, edited, and even sound and visual quality. I've been watching you videos on Patreon for the most part, but I just had to comment on this video. It's just very well explained and the demonstration and the way you broke things down just couldn't have been done better! Thank you very much, and keep up the good work. especially those video where you explain how things work or what certain functions/methods do or how they work. I'll be waiting for more videos like this.
This was so informative, I've tried everything without understanding anything, havent tried only movePosition and this was what I needed. Thanks a lot for the time you spent to make this video
This video is gold, short, direct, and actually full of information. Getting the How, why, and what for... One of the best videos in terms of knowledge given for time spent on a video. Subscribed immediately... :D will be watching out for your contents man...very nice...
Thank you for this! I made the mistake of using the Translate function for my game prototype only to then realize after a bit of work that physics, collisions, and almost every planned mechanic was non-functional. You've done a fantastic job of explaining how the rb methods work.
Really useful information, good voice, high quality recording both visually and vocally, nice editing, not too short and not too long a video, clear explanation about the subject, proper examples and many other details that I am sure you have considered but I cannot immediately get it. I badly needed this piece of information and you just delivered that in the best way possible. Thank you so much sir ❤️
hey, I've been using this video since it was released on like, a dozen or so different projects of mine for any number of functions and tasks. So, thank you so much. It has really made my life so much easier.
This was far easier to understand than some of the other tutorials I'd watched. It also gave me a couple of ideas on how to use the other movement types for different enemies. Thanks!
Thanks Gregory! We're slightly new but our numbers are climbing. We just need to breach through UA-cam's algorithm, but I appreciate your kind words and support!
Maybe, I don’t know how these things work. My friend Chris (Cynical Reviews (previously Cynical CJ)) started from nothing and now has like 100k subs after a year. And Sykoo does Unity stuff and is doing very well (I think he’s friends with the guy from Brackeys so that might help.) maybe you need to say more controversial opinion stuff? Seems to work for other UA-cam stars. I don’t know. I would like more channels like yours to grow because it’s great for learning Unity and generally making the community feel at home.
Wow! I watched so many videos this week trying to understand this, but your video was definitely the best one. Thanks a lot! Please keep making more of those
Great video. Explained simply, shortly, with practical examples and comments. I don't know how you could make it any better, keep it up. You've got my recommendation :D
I loved the video! I was having problems with my 2D game because the player character was hitting the colliders but passing through after sometime, the Rigidbody.MovePosition() function was so helpful and you explained very clearly how to use it and how it works, thank you so much! :)
This is such a helpful video! I've been going through so many videos and tutorials that just say "move your character this way" without explaining why that method was used or how it doesn't make sense for every game. The first tutorial I followed used translate because collisions did not have an affect on the player movement but it doesn't make sense for something like a 2D platformer.
You can use a raycast before moving to see how far you should move, if the raycast hits something then get the position and use that to move instead of the usual calculation.
I watched a tutorial on ai and it used add force but I wanted to use move position. Long story short took me four days and lots of thinking, you definitely helped.
Thank you so much! I've been flipping through tutorials and manuals for a week straight trying to find the simplest way to give an object flight. And...ha...for some reason, my sphere ended up flying around the X access instead of the Y, like yours. But THANK YOU. That was a succinct yet thorough explanation. I prefer the AddForce option, because I am trying to similate movement through fluid. However, I still have to look into how to include the Z axis. Maybe I should go for a follow the (3d)camera and move option.
the last one doesnt work. it gives error message Transform' does not contain a definition for 'Position' and no accessible extension method 'Position' accepting a first argument of type 'Transform' could be found (are you missing a using directive or an assembly reference?)
Great tutorial. One flaw at the end: Set Rigidbody Collision Detection to Continuous instead of Descrete. That will prevent moving through walls at high speeds.
You are very talented to teach and I love how you can explain 3 different ways for achieve movement with scripts. Could you make a series with this theme? I mean, wich different functions could do the same? Thanks!
Well, what drives me absolutely up the walls is that the minor details tutorials often skip like the is kinematic checkbox will have me looking for hours thinking I did something wrong with the code. I'm not setting up a script directly on the GameObject you see? So it's just easy to imagine that I've done something wrong. In the end, all of this is just so simple. It's like, when I was desperately trying to get the mesh data, I'm talking about the vertices and the triangles... someone on Twitter showed me a sample of his code. It didn't work for me at all. I kept getting error messages that read something like I didn't have permission to read or write the data. When I found that stupid checkbox everything seemed to work... Oh, but no, there had to be something else. I had all the coordinates, it was so beautiful. But they looked strange, and I got to understand that I had a long list of doubles and not floats. I spent days scratching my head, trying to figure out how I would solve this or just make a tool again that I'd use to trace all the graphics. It was just a checkbox... one that determined whether to change the units of the imported mesh into Unity units. I turned that off and everything was great. So, when these experienced users and teachers don't explain things in depth missing minor details that change everything, the learning process isn't just extended it's made a torment. I say, thanks for the information but next time please make it comprehensive. You have no idea just how discouraging it is. ua-cam.com/video/P_VvEouFo8w/v-deo.html
@@tomasmileto idk if this works but you can try putting something similar like this in the code float Gravity = 9.81f; Vector 2 movement = (xAxis, Gravity + yAxis); MovePosition(transform.Position + movement);
2:18 "The biggest problem with transform.translate is that it doesn't detect collision." I have just tested this and this statement doesn't appear to be true. In your example, If you give your ball a boxCollider2D and a rigidbidy2D and you do the same for your wall, and you then move the ball using "transform.translate", it will collide with the wall. So I'm now confused?
It because at the current frame, two collider with one of these have a rigibodie attach are colliding. But move positon will predicate the next frame to know if the WILL be a collision. So in general, Move Positon is way more accurate than Translate if you need collision
@@MrTeteX9 Thank you for your reply. That was very helpful. Yes, I repeated the same test with a very high speed. Transform translate did not collide with the wall. MovePosition did collide with the wall. :)
at 7:42, why do u use Time.deltaTime in movePosition()? I read that movePosition automatically interpolates between 2 positions for intermediate frames. so why use Time.deltaTime? Also, even if you are using Time.deltaTime, why use that? why not Time.fixedDeltaTime since movePosition is being called from fixedUpdate?
If you use velocity but still want the object to have gravity, you can also do it like this (it's like applying a force): rb.velocity += direction * speed;
If I want to add force to the Y axis of an object ignoring the environment Y axis , Because the object mute flip and I don't want to push it it from the back. what should I write ?
I’m trying to create character movement through the velocity method, but I also don’t want my character to only walk at one speed. I want to create a movement style similar to that of the Sonic games, where the character gets faster over time to a certain point. is the addforce method better for this? I’ve been trying to figure this out for a while now
I think I missed something... I do not have clear the difference between velocity and moveposition: both detect collision and physics, and the movement is at the same speed, right?
Oh my god! I sit here since two days and I as wonderi ng why my collision skript on my Object, which I have moved with translate, didn´t worked. Thank You sooo much for your help, your awesome!
Just learning unity coding and going through the create with code tutorials on the first tutorial you learn the transform movement way and add Rigidbody components to make it hit objects so how does that work if transform code doesn’t let things collide?
This is the first tutorial I've seen that shows the difference between RB and translate since I started using unity a year ago. Thanks.
Awesome, glad I could help!
my character just goes up, what do i do?
@@palomapaloma811 well, its kinda help with no code
To stop objects from moving through colliders when moving at a fast pace you can set the objects rigid body's collision detection from discrete to continuous. It's more performance heavy which is why it's not the default.
thank you, saved me
Sadly, it still keeps happening to me. I had to stop all movement on collision events to prevent it.
Me too, for some reason, just changing to continuous does not seem to work for me.
@@thepolyglotprogrammer have you found a fix yet?
Looking for a fix myself. I have tried everything. Continuous Dynamic on all rbs with interpolate turned on. The rb I am moving still "goes inside" the RB it's colliding with.
Thanks, man this helps me. By giving an example for each method it really helps me to understand when to use them.
Yeah same, not a lot of people do this, they just show you one way "How To Move a Player In Unity"
@Press Start, aw man I'm like 2 years too late but your explanations are so specific and to the point I'm learning so much. Thanks again great vids!!!
I've seen a lot of rigidbody lesson on both unity official tutorials and youtube but this is the best well explained and distilled version ever! Keep on your journey, I'll be following!
Wow, thank you for your nice words
i can't agree more on this one. This is a masterpiece !
You know whats more fun then finding which is best for your game? Finding out that apparently none of them will work.
pain
@jonathon boiragee no u are sus
What's the issue? The issues he had with the first two are actually really easy to fix.
@Susan Reed What the fuck
when I rotate the capsule with the mouse the axes change direction (W becomes S and A becomes D and vice versa), so to go forward I have to use A, D or S depending on where the player is looking . Does anyone know how I fix this?
I tried transform.Translate, but as said in the video, it doesn't work along with physics
This video is a gift from heaven.
I just started unity a week back and my script is super complicated because i never knew how to do movement, so I experimented.
This REALLY helps a lot! Thank you!
This is what a tutorial should look like. Been searching for a simple and well detailed answer for eternity and i got even more confused each time, but finally, I got a good answer. Thanks man 👌🏾
bro MovePosition is a life saver it is weird that after 1year of struggling i still hadn't heard of it. You are in need of this movement system 7:09
This video help me so much. On youtube people only show how to move player but they don’t explain the different between these . Thank you so much !!
8:06 if you turn the collision detection in the Rigidbody componont from "Discrete" to "Continous" this won't happen. Nice Video :D
Note that changing from discrete to continuous is much more performance intensive though, so be careful
ty buddy, you rock.
Not on translate if the speed is too high, that only applies to Velocity
@computerbrand9701hey, have you figured it out?
This was information I needed for a long time. I kept trying to have the translate behavior, while avoiding clipping issues. I couldn't find an answer until your video. Thank you.
Thank you so much, I've been through about 50 videos today - no luck untill I found this one, god bless man
This video is the best explained video on the subject that I've ever seen. Even my teacher in college didn't explained that well. This will help me alot, thanks
One of the best explanations on UA-cam. Thanks!
Sir, please make more of these. As a complete beginner your way of describing makes so much sense than the traditional “ follow me” tutorials where when you finish you are just as clueless if not more than when you began
Oh my god you explained all of this SOOO well, dude thanks
Full source code can be found here:
pressstart.vip/tutorials/2018/10/19/71/rigidbody-vs-translate.html
This is the most helpful character movement video I've ever seen. Thank you!
First of all, I like all you videos and how well done they are just made (recorded, edited, and even sound and visual quality.
I've been watching you videos on Patreon for the most part, but I just had to comment on this video.
It's just very well explained and the demonstration and the way you broke things down just couldn't have been done better!
Thank you very much, and keep up the good work. especially those video where you explain how things work or what certain functions/methods do or how they work. I'll be waiting for more videos like this.
It means a lot to me that you took time out of your day to write this. Appreciate the love. Tons more to come, thanks for following :)
This was so informative, I've tried everything without understanding anything, havent tried only movePosition and this was what I needed. Thanks a lot for the time you spent to make this video
Thank you for your kind words and I'm glad this video helped!
nobody could explain it better, keep with this tutorials pls
Appreciate it :) - new video on Sunday
This video is gold, short, direct, and actually full of information. Getting the How, why, and what for... One of the best videos in terms of knowledge given for time spent on a video. Subscribed immediately... :D will be watching out for your contents man...very nice...
Thank you for this! I made the mistake of using the Translate function for my game prototype only to then realize after a bit of work that physics, collisions, and almost every planned mechanic was non-functional. You've done a fantastic job of explaining how the rb methods work.
Really useful information, good voice, high quality recording both visually and vocally, nice editing, not too short and not too long a video, clear explanation about the subject, proper examples and many other details that I am sure you have considered but I cannot immediately get it.
I badly needed this piece of information and you just delivered that in the best way possible. Thank you so much sir ❤️
hey, I've been using this video since it was released on like, a dozen or so different projects of mine for any number of functions and tasks.
So, thank you so much.
It has really made my life so much easier.
Pretty good explanation, now I understand why there are so many ways to move a gameObject
Easily the best rigidbody vs translate explanation of why you'd use one over the other and simple examples without needless complication. thank you!
This was far easier to understand than some of the other tutorials I'd watched. It also gave me a couple of ideas on how to use the other movement types for different enemies. Thanks!
I like the format of these videos, and I think the speaking and demonstrations are clear. So I'm surprised it's still so small.
Thanks Gregory! We're slightly new but our numbers are climbing. We just need to breach through UA-cam's algorithm, but I appreciate your kind words and support!
Maybe, I don’t know how these things work. My friend Chris (Cynical Reviews (previously Cynical CJ)) started from nothing and now has like 100k subs after a year. And Sykoo does Unity stuff and is doing very well (I think he’s friends with the guy from Brackeys so that might help.) maybe you need to say more controversial opinion stuff? Seems to work for other UA-cam stars. I don’t know. I would like more channels like yours to grow because it’s great for learning Unity and generally making the community feel at home.
dude your videos are so informative and relevant and you deserve WAYY more subscribers!! Carry on man you'll soon be noticed
Appreciate the love!
i started learn unity from 2019 when i was 10 years old, and i wasn't know this, Thanks a lot ❤❤
the best unity tutorial I ever watched hope you keep adding tutorials or even a paid course.
Wow! I watched so many videos this week trying to understand this, but your video was definitely the best one. Thanks a lot! Please keep making more of those
Dude this helped me so much! Thank you for the tutorial now I know why when I use transform.Translate it keeps on vibrating thank you!
Great video. Explained simply, shortly, with practical examples and comments. I don't know how you could make it any better, keep it up. You've got my recommendation :D
Thank you for your support! Means a lot to me.
This is a very good explanation, it's easy to follow and it highlights important points that most other tutorials don't.
Thorough, specific, understandable, and epic. You have saved my life once again brother.
I loved the video! I was having problems with my 2D game because the player character was hitting the colliders but passing through after sometime, the Rigidbody.MovePosition() function was so helpful and you explained very clearly how to use it and how it works, thank you so much! :)
This is such a helpful video! I've been going through so many videos and tutorials that just say "move your character this way" without explaining why that method was used or how it doesn't make sense for every game. The first tutorial I followed used translate because collisions did not have an affect on the player movement but it doesn't make sense for something like a 2D platformer.
Finally someone explained this clearly! Thank you so much for this
Thank you! Great, straight forward exposition. You pack a lot of information in a short period of time.
That’s my goal. Thanks for the feedback!
finally, I understood the movement, thank you for the video.
Thanks to the god of random that I stumbled upon this video after watching others on the same theme. Very helpful, thank you!
I am pretty new to game development and this is one of my biggest problems, thanks a lot! :)
thank you! this is the most simple yet comprehensive tutorial for introducing moving an object. i got the big picture.
Best explanation I've found on UA-cam !!
You can use a raycast before moving to see how far you should move, if the raycast hits something then get the position and use that to move instead of the usual calculation.
one of the BEST ,BEST, BEST Unity Tutorials. Thank you!
I watched a tutorial on ai and it used add force but I wanted to use move position. Long story short took me four days and lots of thinking, you definitely helped.
You have finally made me understand parameters! At last!!!
Thank you so much! I've been flipping through tutorials and manuals for a week straight trying to find the simplest way to give an object flight. And...ha...for some reason, my sphere ended up flying around the X access instead of the Y, like yours. But THANK YOU. That was a succinct yet thorough explanation. I prefer the AddForce option, because I am trying to similate movement through fluid. However, I still have to look into how to include the Z axis. Maybe I should go for a follow the (3d)camera and move option.
Just wow, thanks I had trouble with the addforce function and you solved it in a second.
Thank you!
Maaaan thank you sooo much. I was looking for a rb.moveposition() type of thing for ages!!!
Thanks! Finally! This should be added as a Official movement tutorial in Unity website itself!
Thanks for the awesome explanation! I have been wanting to understand this from a long time and this was the best video that explained it clearly
is there a benifit to update "movement" separately in update method instead of also in fixedupdate where the moveCharacter method is called?
Just what i needed. Thanks for the video, dude
Thanks for covering those different ways of going about Movement in Unity :)
Tutterzoid thank you
This was explained so clearly and objectively. Definately subbing
Thanks for the love homie
the last one doesnt work. it gives error message Transform' does not contain a definition for 'Position' and no accessible extension method 'Position' accepting a first argument of type 'Transform' could be found (are you missing a using directive or an assembly reference?)
I just saw this video and it helped me understand all those concepts well, thank you very much, awesome work.
Cheers
8:25 u could set collision detection to discrete
Great tutorial.
One flaw at the end: Set Rigidbody Collision Detection to Continuous instead of Descrete.
That will prevent moving through walls at high speeds.
Thank you so much. Your video has helped in understanding the distinction in each of the function methods.
SIIIIIIIII Luego de buscar solucion para el movimiento de mis personajes por fin encontré el video correcto. Excelente❤!!!
You are very talented to teach and I love how you can explain 3 different ways for achieve movement with scripts. Could you make a series with this theme? I mean, wich different functions could do the same? Thanks!
Well, what drives me absolutely up the walls is that the minor details tutorials often skip like the is kinematic checkbox will have me looking for hours thinking I did something wrong with the code. I'm not setting up a script directly on the GameObject you see? So it's just easy to imagine that I've done something wrong. In the end, all of this is just so simple. It's like, when I was desperately trying to get the mesh data, I'm talking about the vertices and the triangles... someone on Twitter showed me a sample of his code. It didn't work for me at all. I kept getting error messages that read something like I didn't have permission to read or write the data. When I found that stupid checkbox everything seemed to work... Oh, but no, there had to be something else. I had all the coordinates, it was so beautiful. But they looked strange, and I got to understand that I had a long list of doubles and not floats. I spent days scratching my head, trying to figure out how I would solve this or just make a tool again that I'd use to trace all the graphics. It was just a checkbox... one that determined whether to change the units of the imported mesh into Unity units. I turned that off and everything was great. So, when these experienced users and teachers don't explain things in depth missing minor details that change everything, the learning process isn't just extended it's made a torment. I say, thanks for the information but next time please make it comprehensive. You have no idea just how discouraging it is.
ua-cam.com/video/P_VvEouFo8w/v-deo.html
I can now fix my game with your help: instead of using AddForce(), I am now using MovePosition(), which doesn't break my game. Thanks :D
That is absolutely what I wanted! Thank you so much!
This was a great tutorial. I really needed the help.
when I use movePosition it overrides my gravity
same here dude
@@tomasmileto idk if this works but you can try putting something similar like this in the code
float Gravity = 9.81f;
Vector 2 movement = (xAxis, Gravity + yAxis);
MovePosition(transform.Position + movement);
@@tomasmileto and set to false the rigibody gravity
@@magic_nanito I ended up going for rb.velocity but I'll make sure to try it out
I love your tutorial man! Very useful information
Thank you!
Do you not have to multiply speed by Time.deltaTime because it’s in the fixed update method? 5:44
This is a helpful video i ever see. Keep it up man
Thank you!
Not Welcome@@pressstart6864
Thanks for a Short simple and straight forward video 😀✨
2:18 "The biggest problem with transform.translate is that it doesn't detect collision."
I have just tested this and this statement doesn't appear to be true. In your example, If you give your ball a boxCollider2D and a rigidbidy2D and you do the same for your wall, and you then move the ball using "transform.translate", it will collide with the wall. So I'm now confused?
It because at the current frame, two collider with one of these have a rigibodie attach are colliding. But move positon will predicate the next frame to know if the WILL be a collision.
So in general, Move Positon is way more accurate than Translate if you need collision
@@MrTeteX9 Thank you for your reply. That was very helpful. Yes, I repeated the same test with a very high speed. Transform translate did not collide with the wall. MovePosition did collide with the wall. :)
This is exactly what I'm looking for! Thank you so much!
wow , amazing! well explained ! thanks man keep up the good work!
got a subscription only because of this great explanation !!
thanks a lot buddy, finally!
Dude, this video saved me a lot of time, thank u
at 7:42, why do u use Time.deltaTime in movePosition()? I read that movePosition automatically interpolates between 2 positions for intermediate frames. so why use Time.deltaTime?
Also, even if you are using Time.deltaTime, why use that? why not Time.fixedDeltaTime since movePosition is being called from fixedUpdate?
If you use velocity but still want the object to have gravity, you can also do it like this (it's like applying a force):
rb.velocity += direction * speed;
Great display of options! Thanks
Another awesome tutorial!! Congrats
Amazing tutorial, finally understood it
If I want to add force to the Y axis of an object ignoring the environment Y axis , Because the object mute flip and I don't want to push it it from the back. what should I write ?
I’m trying to create character movement through the velocity method, but I also don’t want my character to only walk at one speed. I want to create a movement style similar to that of the Sonic games, where the character gets faster over time to a certain point. is the addforce method better for this? I’ve been trying to figure this out for a while now
OMG bruh i was wondering why my movement was so janky I WAS USING THE WRONG THING!!! Thank you so much u just saved a project lmao.
The best tutorial!!!! congrats bro!
Thank you for this! Great explanation about the different choices!
Do you know how to instantiate a prefab and make it move with the player and enemies
Unity - Enemy Follows Player [Beginner Tutorial] ua-cam.com/video/4Wh22ynlLyk/v-deo.html
do you have any movement tutorial like this for vector3?
Great explanation , great animated , great example , just wow thanks so much ,
You're awesome, thank you!
a very complete toturial
ty very much
I think I missed something... I do not have clear the difference between velocity and moveposition: both detect collision and physics, and the movement is at the same speed, right?
thank you so much im trying to get into unity and game dev this helped a lot
if I only want to move in the Horizontal axis what do I put for the Y component of the movement Vector2?
Oh my god! I sit here since two days and I as wonderi ng why my collision skript on my Object, which I have moved with translate, didn´t worked. Thank You sooo much for your help, your awesome!
Can you change the animation state if you are using the transform method since you can't use the rigidbody velocity?
THANKS it fixed my collision issue.
Just learning unity coding and going through the create with code tutorials on the first tutorial you learn the transform movement way and add Rigidbody components to make it hit objects so how does that work if transform code doesn’t let things collide?