I'm currently working on a third-person controller in Godot. I'm not new to creating such controllers from scratch. However, I'd like my camera to be a bit more complex than usual, like something you'd see from Mario Odyssey, where the camera only follows the player under certain conditions. Here's an article explaining more.
What would be the best way to create a decoupled camera system that intelligently follows the player, but also allows the player to use the camera to create relative movement? Should I just include a top-level SpringArm
in the player and code the logic in the player script, or should they be separate entities?