Add shooting recoil

This commit is contained in:
Camden Dixie O'Brien
2025-10-15 13:02:02 +01:00
parent f5f25a4463
commit 53158b25cc

8
game.c
View File

@@ -10,6 +10,7 @@
#include <string.h> #include <string.h>
#define SHIP_COLLIDE_R 0.05 #define SHIP_COLLIDE_R 0.05
#define SHIP_MASS 0.5
#define FIRE_MEAN -0.15 #define FIRE_MEAN -0.15
#define FIRE_JITTER 0.01 #define FIRE_JITTER 0.01
@@ -138,7 +139,7 @@ static void shoot()
if (entity_count >= MAX_ENTITIES || shape_count >= MAX_SHAPES) if (entity_count >= MAX_ENTITIES || shape_count >= MAX_SHAPES)
return; return;
const entity_t *ship = entities + ship_entity_id; entity_t *ship = entities + ship_entity_id;
const shape_t *ship_shape = shapes + ship_shape_id; const shape_t *ship_shape = shapes + ship_shape_id;
unsigned id; unsigned id;
@@ -155,6 +156,11 @@ static void shoot()
s->visible = true; s->visible = true;
s->vert_count = NELEMS(shot_verts); s->vert_count = NELEMS(shot_verts);
memcpy(s->verts, shot_verts, sizeof(shot_verts)); memcpy(s->verts, shot_verts, sizeof(shot_verts));
const vec2_t ship_p = vec2_scale(ship->vel, SHIP_MASS);
const vec2_t shot_p = vec2_scale(e->vel, SHOT_MASS);
const vec2_t new_ship_p = vec2_sub(ship_p, shot_p);
ship->vel = vec2_scale(new_ship_p, 1 / SHIP_MASS);
} }
static entity_t *gen_asteroid(float r_mean, unsigned *id_out) static entity_t *gen_asteroid(float r_mean, unsigned *id_out)