diff options
| author | realtradam <[email protected]> | 2024-05-11 22:40:22 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2024-05-11 22:40:22 -0400 |
| commit | 963ca487e39dc6f5fa28ea230610d140bf1583fb (patch) | |
| tree | 8f208c6b152b68ae75c9df7b59ccaee9e6105445 /src/player.c | |
| parent | 8855c3de33c487e09b6a8fd474b0dd351ab3581c (diff) | |
| download | tojam2024-963ca487e39dc6f5fa28ea230610d140bf1583fb.tar.gz tojam2024-963ca487e39dc6f5fa28ea230610d140bf1583fb.zip | |
attempt at first person camera
Diffstat (limited to 'src/player.c')
| -rw-r--r-- | src/player.c | 56 |
1 files changed, 47 insertions, 9 deletions
diff --git a/src/player.c b/src/player.c index f2b5a8e..4616fbd 100644 --- a/src/player.c +++ b/src/player.c @@ -1,18 +1,56 @@ #include "player.h" +#include "world.h" +#include <fmath.h> -void + void drawPlayer(Player *player) { //DrawCube(player->position, 1.0f, 1.0f, 1.0f, BLUE); - DrawSphereEx(player->position, 0.5f, 3, 3, player->color); + //DrawSphereEx(player->position, 0.5f, 3, 3, player->color); + DrawCube(player->position, 0.5f, 0.5f, 0.5f, player->color); } -void -movePlayer(Player *player) +Camera +lookThroughPlayer(Camera camera, Player player, Player player2) { - player->direction.x = inputs_p1.stick_x / 126.0f; - player->direction.z = -inputs_p1.stick_y / 126.0f; - player->position.x += player->direction.x * player->speed; - player->position.y += player->direction.y * player->speed; - player->position.z += player->direction.z * player->speed; + camera.position = player.position; + //camera.target.x = player.position.x + player.direction.x; + //camera.target.y = player.position.y + player.direction.y; + //camera.target.z = player.position.z + player.direction.z; + //camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; + //camera.target = player2.position; + //camera.target = (Vector3){ + // 0, 0, 0 + //}; + camera.fovy = 45.0f; + camera.projection = CAMERA_PERSPECTIVE; + return camera; +} + + void +movePlayers(void) +{ + float x = inputs_p1.stick_x / 126.0f; + float y = -inputs_p1.stick_y / 126.0f; + + //float x = world.players[0].direction.x; + //float y = world.players[0].direction.z; + + float distance = sqrtf(x * x + y * y); + + if(distance != 0) + { + world.players[0].direction.x = x / distance; + world.players[0].direction.y = -y / distance; + } + + world.players[1].direction.x = inputs_p2.stick_x / 126.0f; + world.players[1].direction.z = -inputs_p2.stick_y / 126.0f; + + world.players[0].position.x += world.players[0].direction.x * world.players[0].speed; + world.players[0].position.y += world.players[0].direction.y * world.players[0].speed; + world.players[0].position.z += world.players[0].direction.z * world.players[0].speed; + world.players[1].position.x += world.players[1].direction.x * world.players[1].speed; + world.players[1].position.y += world.players[1].direction.y * world.players[1].speed; + world.players[1].position.z += world.players[1].direction.z * world.players[1].speed; } |
