Today I’m playing around with combining character components (CharacterController, CharacterMotor, and FPSInput) with Mecanim locomotion animation. I’ve run into a fundamental choice, and I’m a bit torn as to which will result in more long-term happiness:
Should I have the animator apply root motion, or not?
My first instinct is “not” because the CharacterMotor and CharacterController already do a great job of moving the character around. Indeed, if I switch to using Animator root motion, I think CharacterMotor at least will no longer be usable. It also means that the motion of my character in the world is very much tied to the model and animations — I can’t easily tweak the speed or turn rate a little bit to fine-tune the gameplay, for example.
So I started down that path, blending walking and running animations according to speed, and simply rotating the whole shebang for turning. It looks and feels great! …But then I came to turning in place (i.e. while standing still), and this is driving me nuts.
Without root motion, it’s very hard to match the actual rotation of the character to that implied by the animation. Unlike walking and running, which are fairly steady, turning in place is very much NOT a steady rotation, and the best I can do still looks like the character’s standing on ice while wearing banana-peel shoes.
I know that with Pro, I could define curves on the animations, and drive the turn that way… but I’d prefer not to rely on Pro features if possible.
So. What’s considered current best practice these days for making a Mecanim character walk, run, and jump around a level?
Thanks,
- Joe