1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
#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},
.texture = LoadTexture("assets/Graphics/spritesheet-characters-double.png"),
.sprite_source_rect = (Rectangle) {
.x = 0,
.y = 0,
.width = 257,
.height = 257
},
.sprite_dest_rect = (Rectangle) {
.x = -50,
.y = -50,
.width = 100,
.height = 100
}
};
add_entity(&player);
}
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);
}
|