Root motion or Translation/AddForce?

Hello, everyone!

I’m quiet new to Unity, i’v already passed couple of courses on Coursera and Udemi, watches several tutorials on youtube, but i still have one question:


What is the best way to move your character in a third person game?
Root motion or translation/add force?


Seems like for cyclic movements such as running/walking is preferable to use translation.

But what about jumping? Jumping in place? Jumping in a motion?
What about complex jumping movements, like when character doing flips in the middle of animation?

As far as a understood it is better to control character locations with code rather than with root motion, but in complex animation it’s little bit tricky to make complex animation controlled by code look fine and natural.

Thanks for any advices!

There is no best method. There is only a developers preferred method. Certain motions are easier to perform with root motion than they are when using code movement. Certain set ups are easier if using code movement rather than root motion.

Root motion is usually used if the developer is an artist (not a programmer) OR wants to have higher fidelity (better looking) motion. Code movement is usually used if the developer is a programmer (not an artist) OR the motions do not have to be as visually accurate, quick platformer, or fast action oriented type game.

Also consider physics - which has to be manipulated to work with root motion, where as it just works with code - (I think).

A lot of systems are a combination of both root motion and code driven motion. Also using match.target and IK to interact with elements are probably best used in code - rather than fudging with root motion. That is speculative I have not used match.target.
I am a animator not a programmer.