From 0d9a7c969269fc4d0b94b732136bff70903116ba Mon Sep 17 00:00:00 2001 From: schneefux Date: Sun, 17 Nov 2013 11:40:55 +0100 Subject: fixed shooting --- engine.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/engine.c b/engine.c index 94c9d12..8391fe8 100644 --- a/engine.c +++ b/engine.c @@ -69,7 +69,7 @@ void combSort(int* order, float* dist, int amount) // perform a shoot static void pshoot() { - float xadd, yadd, x, y; + float xadd, yadd, x, y, direnemy, dirplayer_left, dirplayer_right; int c; // check for every sprite whether it is hit @@ -91,8 +91,13 @@ static void pshoot() xadd = ((sprites[c].x - x) / Abs(y - sprites[c].y)); yadd = sgn(sprites[c].y - y); } + + direnemy = xadd / yadd; + + dirplayer_left = (player.dirX - player.planeX) / (player.dirY - player.planeY); + dirplayer_right = (player.dirX + player.planeX) / (player.dirY + player.planeY); - if(1/*TODOTODOTODOTODO*/) // todo: implement something to check whether the player shoots in the right direction + if(direnemy < dirplayer_right && direnemy > dirplayer_left) { // very simple raycasting while(x < MAPSIZE && y < MAPSIZE && x >= 0 && y >= 0) -- cgit v1.3.1