So, I've been working on building an FPS lately, and I'm really hyped for VR. The arms parented to the camera approach isn't really going to cut it anymore for VR games, so I decided I'd make a thread about true first person. I think it would be really great if people could post all their ideas/experience related to implementing a true first person viewpoint, because it seems to be a very difficult issue. If we could get like a true first person megathread going here that would be awesome. I'll start with some of the obvious things I've been able to pick up in my searching so far.
- Aim offset animation poses based on camera pitch and yaw. The Unreal engine has a dedicated blend space for this, but I've seen implementations in Unity and other engines too using regular animation blending.
- Rotating the top of the player's body separately from the feet and making the feet follow after 90 degrees is important, or else rotating your view looks really weird. I'm actually planning to make a post describing how I implemented this at some point once I've got it working perfectly, there's a couple more improvements I'd like to make before it's worth showing off.
- I know a lot of people just parent the camera to the head bone, but I didn't like how much head bob that introduced, so I ended up just setting the camera position to (head bone position)+(offset in front of head bone) cause it makes it easier to prevent head bobbing in response to animation by adding some tolerance so that tiny movements of the head bone don't affect the camera position, but large ones do (bending over or leaning forward for example).
If anyone has knowledge/tips/whatever to add that would be great. There's not many good resources online that I can find explaining how to go much further than what I already wrote here. One thing I'm still researching is how to get aim down sights to work right. I had a system where I blended between cameras setup for a bit, but it didn't work too well cause I couldn't keep the gun level and it screwed with aiming.