Better player camera FOV
| Author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-04-28 17:14:19 +0200 |
| Committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-04-28 17:14:19 +0200 |
| Commit | 259bee291e74f5f3aeaf3aec8b87c65151ac5aa5 (patch) |
|
-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
| diff --git a/config.h b/config.h | |||
| ... | |||
| 16 | #define PLAYER_HEIGHT 64.0f |
16 | #define PLAYER_HEIGHT 64.0f |
| 17 | #define PLAYER_RADIUS 16.0f |
17 | #define PLAYER_RADIUS 16.0f |
| 18 | #define PLAYER_EYE_HEIGHT 56.0f |
18 | #define PLAYER_EYE_HEIGHT 56.0f |
| 19 | #define PLAYER_FOV 65.0f |
||
| 19 | 20 | ||
| 20 | #define PLAYER_LEAN_ANGLE 25.0f |
21 | #define PLAYER_LEAN_ANGLE 25.0f |
| 21 | #define PLAYER_LEAN_SPEED 8.0f |
22 | #define PLAYER_LEAN_SPEED 8.0f |
| ... | |||
| diff --git a/game.c b/game.c | |||
| ... | |||
| 95 | game.camera.position = (Vector3){ 0, 10, 0 }; |
95 | game.camera.position = (Vector3){ 0, 10, 0 }; |
| 96 | game.camera.target = (Vector3){ 1, 10, 0 }; |
96 | game.camera.target = (Vector3){ 1, 10, 0 }; |
| 97 | game.camera.up = (Vector3){ 0, 1, 0 }; |
97 | game.camera.up = (Vector3){ 0, 1, 0 }; |
| 98 | game.camera.fovy = 75.0f; |
98 | game.camera.fovy = PLAYER_FOV; |
| 99 | game.camera.projection = CAMERA_PERSPECTIVE; |
99 | game.camera.projection = CAMERA_PERSPECTIVE; |
| 100 | 100 | ||
| 101 | int total_brushes = 0; |
101 | int total_brushes = 0; |
| ... | |||
| diff --git a/player.c b/player.c | |||
| ... | |||
| 266 | -sinf(game.pitch), |
266 | -sinf(game.pitch), |
| 267 | cosf(game.pitch) * cosf(game.yaw) |
267 | cosf(game.pitch) * cosf(game.yaw) |
| 268 | }; |
268 | }; |
| 269 | |||
| 270 | // Use a stable world-up vector and apply lean roll |
||
| 269 | Vector3 up = { 0, 1, 0 }; |
271 | Vector3 up = { 0, 1, 0 }; |
| 270 | up = Vector3RotateByAxisAngle(up, forward, leanAngle); |
272 | up = Vector3RotateByAxisAngle(up, forward, leanAngle); |
| 271 | game.camera.up = up; |
273 | game.camera.up = up; |
| 272 | 274 | ||
| 273 | game.camera.target = Vector3Add(game.camera.position, forward); |
275 | // Use a longer target distance for better precision in the projection matrix |
| 276 | game.camera.target = Vector3Add(game.camera.position, Vector3Scale(forward, 20.0f)); |
||
| 274 | 277 | ||
| 275 | // Calculate horizontal speed for UI |
278 | // Calculate horizontal speed for UI |
| 276 | if (dt > 0) { |
279 | if (dt > 0) { |
| ... | |||