diff options
| author | BoredGuy <osome3717@gmail.com> | 2026-03-17 11:27:19 +0300 |
|---|---|---|
| committer | BoredGuy <osome3717@gmail.com> | 2026-03-17 11:27:19 +0300 |
| commit | 9b63c2572ee6d8b73fd0d2f298dc339335875607 (patch) | |
| tree | c1732d934721b12806d98cffbc375195e0ccbd03 | |
| parent | ac02199694ffef81a00a8ea47420e88ef0a35f67 (diff) | |
| -rw-r--r-- | src/constants.h | 3 | ||||
| -rw-r--r-- | src/player.c | 38 |
2 files changed, 37 insertions, 4 deletions
diff --git a/src/constants.h b/src/constants.h index 0c08dfd..e71c217 100644 --- a/src/constants.h +++ b/src/constants.h @@ -3,11 +3,12 @@ #define WINDOW_WIDTH 800 #define WINDOW_HEIGHT 600 -#define TARGET_FPS 144 +#define TARGET_FPS 60 #define MAX_ENTITY_COUNT 500 #define ENTITY_MAX_ANIMATIONS 10 #define ANIMATION_MAX_FRAMES 4 +#define GRAVITY 9.8 #endif diff --git a/src/player.c b/src/player.c index 5dd77c1..dd758a0 100644 --- a/src/player.c +++ b/src/player.c @@ -1,14 +1,18 @@ #include <raylib.h> +#include <raymath.h> #include "physics.h" #include "player.h" +#define TOP_SPEEDX 100 +#define TOP_SPEEDY 100 +#define ACCEL_X 40 + void add_player(float xpos, float ypos) { struct entity player = { .flags = (ENTITY_ACTIVE | ENTITY_VISIBLE), .type = Player_Entity, .position = (Vector2) {xpos, ypos}, - .velocity = {100.0, 100.0}, .texture = LoadTexture("assets/Graphics/spritesheet-characters-double.png"), .sprite_source_rect = (Rectangle) { @@ -28,6 +32,34 @@ void add_player(float xpos, float ypos) { add_entity(&player); } -void update_player(struct entity* entity, float dt) { - move_and_collide(entity, dt); +float get_x_acceleration_direction() { + if (IsKeyDown(KEY_A)) { + return -1.0; + } else if (IsKeyDown(KEY_D)) { + return 1.0; + } + + return 0.0; +} + +void handle_movement(struct entity* player, float dt) { + Vector2 accel = { + .x = get_x_acceleration_direction() * ACCEL_X, + .y = GRAVITY + }; + + player->velocity = + Vector2Add(player->velocity, Vector2Scale(accel, dt * 0.5)); + move_and_collide(player, dt); + player->velocity = + Vector2Add(player->velocity, Vector2Scale(accel, dt * 0.5)); +} + +void handle_input(struct entity* player) { + +} + +void update_player(struct entity* player, float dt) { + handle_movement(player, dt); + handle_input(player); } |
