Cinemachine vs. traditional third person camera controller

Recently I’ve been looking for a solution to a problem with a third person camera controller in an indie game I am working on, namely the camera is jittery when the game is played with a gamepad. Today I stumbled upon a YouTube video tutorial about making a camera controller with Cinemachine, which kind of blew me away with how powerful Cinemachine was, with no coding needed. That led to a YouTube video of a GDC 2019 Unity talk about Cinemachine, which was equally impressive, to say the least.

Up to this point I used to think Cinemachine was for cut scenes only, I had no idea it could be used for gameplay as well. So here are my questions:

  • It appears Cinemachine does, out of the box, pretty much everything a game camera, specifically third person behind the shoulder camera, needs. Is Cinemachine now THE way for doing gameplay cameras in Unity?
  • Does Cinemachine make third person camera controllers obsolete, i.e. why write code for custom cameras when Cinemachine already does it?
  • If not, when should Cinemachine be used (for gameplay cameras) and should custom camera controllers be used?

While the Cinemachine FreeLook camera is rather useful, I have trouble with the Collider component, so I would say that this extension lacks AAA quality. But collision avoidance is a rather big factor for third person cameras. So I’m still looking for a better camera solution. Fur cutscenes and films, Cinemachine is indeed nice.

I have asked this question myself, and am still in the process of evaluating everything. But so far, I would say Cinemachine can handle 99% of your camera needs. So far I have replaced 100% of my game’s camera logic with Cinemachine and it’s only made things easier to work with and a lot smoother to look at. But there will always be that 1% use case that Cinemachine doesn’t do, or doesn’t do well, and you’ll have to use custom scripts for that. However, to make things easy, I learned today that you can still use Cinemachine cameras with your own custom scripts to keep everything smooth and still use mostly the same workflow from this post. Having now figured this out, if I ever have a problem where I need very fine tuned and specific camera needs. I can make it 100% compatible with Cinemachine just by moving and rotating a Virtual Camera component instead of the actual camera. How cool is that?

I’d say anyone that is considering Cinemachine, learn it, love it, and work with it. It has improved my game’s quality 10x without any difficult work.

5 Likes

Thank you! This is a great answer and it confirms what my findings have been so far. 99% is more than enough for me, as the game I am working on is a small indie game, far from the needs of AAA or other larger games.

Just the fact that Cinemachine gives us professional quality camera management, for free, out of the box, with support provided by Unity, without having to write any code for about 99% of use cases is a game changer IMHO. I highly recommend downloading the demo scenes that come with Cinemachine and checking them out, for anyone who hasn’t done it yet.

2 Likes