I want to make an FPS controller that feels realistic, like when you move you really feel that your character has mass. In Unity I would’ve done that with RigidBody, but how do I do that in Godot 4.3.1 with CharacterBody3D? I know that RigidBody3D is not suitable for character controllers. May anyone show me the direction in which I shall dig?
Who told you rigid body isn’t suitable for characters? If you’re comfortable with the concepts of a physics engine and don’t mind using impulses, force integrators and other physics-driven locomotion, I see no reason to avoid a RB character.
For most use cases, rigidbody just a bigger challenge to get simple things “working right”, and the precise control a kinematic body provides tends to be favorable.
There’s nothing stopping you from making your player a RigidBody3D if that’s what you’re going for, it’s just CharacterBody3D is more common. You would apply forces and impulses on the player to move them around. You could use a CharacterBody3D but then you might want to program your own calculations for inertia and things like that which change their velocity.
I’ve seen that RigidBody3D is not recommended to use for player movement because of some physics stuff in Godot Docs. Is that not the case anymore?
You can’t precisely control the movement of a rigidbody like you can with a characterbody, so most games use a characterbody since that’s what they want. But you can have rigidbodies in a game and apply forces to them, it doesn’t matter if the forces are triggered by input and you happened to have a camera on it and call it a player.
Fallout 3 had a train that was actually a hat. Nothing is impossible, don’t let your dreams be dreams
I’ve been using a Rigidbody just fine so far.
lukky has a nice series for this, if you haven’t already you should check it out.
This seems like a good overview.
https://youtu.be/A3HLeyaBCq4?si=lCOFpYPO3pjXe7iL
Basically move and slide. You can track extra values for inertia and mass if you want. You could still use RigidBody3d if you want instead but then I think your control inputs will need to result in use of ‘apply_force’, ‘apply_impulse’ instead of ‘move_and_slide’