Godot Version
4.4.1
Question
I’m using a bare-bones camera setup with a SpringArm3D (no adjustments to it other than giving it a sphere shape).
This behavior occurs when the player is smushed against the camera, but only vertically. Against walls the camera gets out the way as expected. I added this line of code in the camera’s script to see if it was the player’s collision, which didn’t change anything:
spring_arm.add_excluded_object(parent.get_rid()).
Here’s a video (The yellow ball is the camera if that wasn’t obvious):
Camera Setup:
(Relevant) Camera Script:
Is your spring arm positioned above the character? If it’s position
is moved into the wall/ceiling then it cannot detect any walls it is currently inside of
Yeah, it’s default y_position is 1.7 above the player. Is it possible to nest another spring arm inside that one to detect vertical collision?
You could move it’s collision just slightly lower, inside the player and offset your camera. you may need a Node3D between the SpringArm and the Camera to do so.
I was wrong, the root node had the y position at 1.7. I added a buffer node like you suggested and got the result of not clipping through the ceiling, but no combination of other nodes y position being 1.7 other than the springarm actually got the camera off the ground. So I traded at problem for a problem. Frustrating.