diff options
| -rw-r--r-- | config.h | 1 | ||||
| -rw-r--r-- | game.c | 2 | ||||
| -rw-r--r-- | player.c | 5 |
3 files changed, 6 insertions, 2 deletions
@@ -16,6 +16,7 @@ #define PLAYER_HEIGHT 64.0f #define PLAYER_RADIUS 16.0f #define PLAYER_EYE_HEIGHT 56.0f +#define PLAYER_FOV 65.0f #define PLAYER_LEAN_ANGLE 25.0f #define PLAYER_LEAN_SPEED 8.0f @@ -95,7 +95,7 @@ bool LoadMap(const char *filename) { game.camera.position = (Vector3){ 0, 10, 0 }; game.camera.target = (Vector3){ 1, 10, 0 }; game.camera.up = (Vector3){ 0, 1, 0 }; - game.camera.fovy = 75.0f; + game.camera.fovy = PLAYER_FOV; game.camera.projection = CAMERA_PERSPECTIVE; int total_brushes = 0; @@ -266,11 +266,14 @@ void UpdatePlayer(void) { -sinf(game.pitch), cosf(game.pitch) * cosf(game.yaw) }; + + // Use a stable world-up vector and apply lean roll Vector3 up = { 0, 1, 0 }; up = Vector3RotateByAxisAngle(up, forward, leanAngle); game.camera.up = up; - game.camera.target = Vector3Add(game.camera.position, forward); + // Use a longer target distance for better precision in the projection matrix + game.camera.target = Vector3Add(game.camera.position, Vector3Scale(forward, 20.0f)); // Calculate horizontal speed for UI if (dt > 0) { |
