Could you describe the jump detection approaches that you’ve tried? This can help other users to point out the shortcomings and suggest some improvements.
First solution that comes to mind:
To detect jumps, try to pay attention not to the floor, but instead to the position of the body in space. For example, before starting the game (during calibration), save the maximum height of the torso / neck / head. If these points are higher and at the same time moving upward with sufficient speed, then we can assume that it is a jump
By not considering the floor, how would you consider that the height (Y axis) gets higher when the user just moves forwards or backwards (depending on the angulation and height of the camera relative to the user)?
If I save the max height during calibration and trigger a jump every time the user’s height on those joints becomes higher, even considering speed, this behavior can be replicated by just moving forward or backward.
(I’m using the Joint.Real structure to get these information, please let me know if this is not the right data to seek in my case).
You work in 3d space, so you can make a plane of maximum height for the user using three points. For example, during calibration, before starting the game, ask the user to take a step forward, a step back and a step to the side. Based on these three points, we can make a plane of the “ceiling” in space for detecting jumps. This will eliminate the problem with the angle of the camera. You can use Joint.Real for this.