Can I use the MC with a first person setup?
Motion Controller in First-Person Games
I get asked a lot if the Motion Controller can be used with first-person games. This question really has two parts; a technical one and an artistic one.
Technical Answer:
You: Can the Motion Controller be used with first person?
Me: Yes.
Since the MC is all about managing animations and movement, it really doesn’t care if it’s used with third person games, first person games, top-down games, etc. It really just depends on what motions you use.
For example, the walk/run “pivot” motions are really more for third person adventure style games. Similar to Assassin’s Creed, you can have the character walk towards the camera.
For a first person setup, you’d want to use the walk/run “strafe” motions. These keep the character facing the direction of the camera and have him strafe and walk backwards.
Jumping, climbing, vaulting, and most of the other motions will work with first person just fine. I haven’t done a lot of testing, but we’re mostly talking about animations and movement.
You can see a quick tutorial here on how to set this up using the Motion Controller & Camera Controller.
Artistic Answer:
You: Can the Motion Controller be used with first person?
Me: Sure, but how is your character model setup and what about the camera?
Character Model
This is where most people get stuck. They think they can have a standard full-body character and just stick the camera in the head. Unfortunately, this rarely works.
Lets take Unity’s Challenger and stick the camera in his head:
We can try shifting the camera forward, but that becomes a bit of juggle. Another option is to use rendering layers to not draw the head, but still create the head shadow.
This is why most first person games don’t use a simple full-body character.
There’s a great post about the game Firewatch and their first person character.
Notice the missing head and the scaled arms. That’s to give the first person view more perspective as the hands get closer to the eyes. It looks great in first person.
Camera Placement
The next thing to think about is where the camera is anchored. If you follow the typical third person approach and anchor the camera to the feet, you can get into situations where more of the character is showing than you want.
Even removing the head really doesn’t help here because any time the character bends down or leans forward they camera doesn’t stay with the head.
The next logical step would just be to attach the camera to the character’s head. The problem here is that most animations have a ton of jiggle in the head. By the time Unity calculates the hip, spine, chest, neck, and head rotations… your camera will be wobbling all over the place.
Unfortunately, the view may not be what you want either.
This is why a lot of AAA studios use first person skeletons that have special bones for the camera. This way the animator can ensure the camera is always positioned correctly when the character animates.
The other option is to not actually attach the camera to the head. Instead, use some code that manages the head position while keeping the rotation free. Even here, the position may need to be cleaned up.
At this time, I don’t have any code to manage advanced camera positioning based on character animations.
UFPS?
You may ask ‘How does a first-person character controller like UFPS do it?’ Well, they really don’t. As I mentioned, it’s not a full body character and there are no head animations to move the camera.
If you look at a UFPS character, there is no body. So, that removes a big headache.
And when the character jumps or crouches, they don’t change the horizontal position of the camera… just the vertical position. That means the camera never leans forward.
Here’s the character jumping:
Here’s the character crouching:
So, if we do the same things with the Motion Controller you’re totally fine to use it with a first-person perspective.
Just do what they do:
- Remove the character’s body
- Fix the camera to a position above the main transform
- Adjust the vertical position of the camera during jumps and crouches
Summary
So, the Motion Controller can work with any character and any game style. The real issue comes down to your character and camera positioning.
Note: Unfortunately, the Camera Controller really won’t help here either. The “1st Person View” motor provides a “view” and even rotation for simple characters. However, it won’t manage complex positioning due to animations.
Comments are closed.
Separate the head from the body put it on a layer that is ignored by the camera, maybe.
Yes, that would work for the visibility aspect. That’s similar to what AAA games do with guns so they aren’t blocked by geometry. The animation and movement would still have to be handled.
Are there any examples of this sort of customization being done successfully?