diff options
| author | realtradam <[email protected]> | 2024-05-12 17:34:21 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2024-05-12 17:34:21 -0400 |
| commit | 8475767975a0f07507908ba53dba894b97b48795 (patch) | |
| tree | 4d5bf2f8c49eb92f8d9777e0606d944dca01905d /src/player.c | |
| parent | f5311cc940fd94aa70808f19a38581c80b764615 (diff) | |
| download | tojam2024-8475767975a0f07507908ba53dba894b97b48795.tar.gz tojam2024-8475767975a0f07507908ba53dba894b97b48795.zip | |
shooting bullets
Diffstat (limited to 'src/player.c')
| -rw-r--r-- | src/player.c | 105 |
1 files changed, 47 insertions, 58 deletions
diff --git a/src/player.c b/src/player.c index 3b30b05..4e02b78 100644 --- a/src/player.c +++ b/src/player.c @@ -11,16 +11,34 @@ drawPlayer(Player *player) DrawCube(player->position, 0.5f, 0.5f, 0.5f, player->color); } -Camera + Camera lookThroughPlayer(Camera camera, Player player) { - //camera.position = player.position; - camera.position.x = player.position.x - (player.direction.x * 2); - camera.position.y = player.position.y - (player.direction.y * 2); - camera.position.z = player.position.z - (player.direction.z * 2) + 1; - camera.target.x = player.position.x; - camera.target.y = player.position.y; - camera.target.z = player.position.z; + if(player.camera_mode == 0) + { + float normalized = sqrtf( + (player.direction.x * player.direction.x) + + (player.direction.y * player.direction.y) + + (player.direction.z * player.direction.z) + ); + + camera.position.x = player.position.x + player.direction.x / normalized; + camera.position.y = player.position.y + player.direction.y / normalized; + camera.position.z = player.position.z + player.direction.z / normalized; + camera.target.x = player.position.x + player.direction.x * 10 / normalized; + camera.target.y = player.position.y + player.direction.y * 10 / normalized; + camera.target.z = player.position.z + player.direction.z * 10 / normalized; + } + else if(player.camera_mode == 1) + { + //camera.position = player.position; + camera.position.x = player.position.x - (player.direction.x * 2); + camera.position.y = player.position.y - (player.direction.y * 2); + camera.position.z = player.position.z - (player.direction.z * 2) + player.camera_mode; + camera.target.x = player.position.x; + camera.target.y = player.position.y; + camera.target.z = player.position.z; + } camera.up = (Vector3){ 0.0f, 0.0f, 1.0f }; //camera.target = player2.position; //camera.target = (Vector3){ @@ -34,59 +52,30 @@ lookThroughPlayer(Camera camera, Player player) void movePlayers(void) { - float xinput = inputs_p1.stick_x / 126.0f; - float yinput = -inputs_p1.stick_y / 126.0f; - - //float distance = sqrtf(xinput * xinput + yinput * yinput); - //if(distance == 0) - //{ - // distance = 1; - //} - - Vector2 direction = { - world.players[0].direction.x, - world.players[0].direction.y + char stick[4] = { + inputs_p1.stick_x, + inputs_p1.stick_y, + inputs_p2.stick_x, + inputs_p2.stick_y }; + for(int i = 0; i < 2; ++i) + { + float xinput = stick[0 + (i * 2)] / 126.0f; + float yinput = stick[1 + (i * 2)] / 126.0f; - char text[50]; - - sprintf(text, "x: %f", direction.x); - DrawText(text, 160, 45, 12, GREEN); - sprintf(text, "y: %f", direction.y); - DrawText(text, 160, 60, 12, GREEN); - sprintf(text, "z: %f", world.players[0].direction.z); - DrawText(text, 160, 75, 12, GREEN); - - direction = Vector2Rotate(direction, 0.01745329 * -xinput * 7); - - sprintf(text, "x: %f", direction.x); - DrawText(text, 160, 175, 12, GREEN); - sprintf(text, "y: %f", direction.y); - DrawText(text, 160, 190, 12, GREEN); - sprintf(text, "z: %f", world.players[0].direction.z); - DrawText(text, 160, 205, 12, GREEN); - - world.players[0].direction.z = yinput; - world.players[0].direction.x = direction.x; - world.players[0].direction.y = direction.y; - - //float x = world.players[0].direction.x; - //float y = world.players[0].direction.z; - + Vector2 direction = { + world.players[i].direction.x, + world.players[i].direction.y + }; - //if(distance != 0) - //{ - // world.players[0].direction.x = x / distance; - // world.players[0].direction.y = y / distance; - //} + direction = Vector2Rotate(direction, 0.01745329 * -xinput * 7); - //world.players[1].direction.y = inputs_p2.stick_x / 126.0f; - //world.players[1].direction.z = -inputs_p2.stick_y / 126.0f; + world.players[i].direction.z = yinput; + world.players[i].direction.x = direction.x; + world.players[i].direction.y = direction.y; - world.players[0].position.x += world.players[0].direction.x * 0.1f; //* world.players[0].speed; - world.players[0].position.y += world.players[0].direction.y * 0.1f; //* world.players[0].speed; - world.players[0].position.z += world.players[0].direction.z * 0.1f; //* 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; + world.players[i].position.x += world.players[i].direction.x * world.players[i].speed; + world.players[i].position.y += world.players[i].direction.y * world.players[i].speed; + world.players[i].position.z += world.players[i].direction.z * world.players[i].speed; + } } |
