diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2013-11-17 11:40:55 +0100 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2013-11-17 11:40:55 +0100 |
| commit | 0d9a7c969269fc4d0b94b732136bff70903116ba (patch) | |
| tree | 72adc0e10033ce5820fd4ee7b6ce3d6b54cb0ccd | |
| parent | af606a2570c25ef1374d3d65f1b43ca11aba5a7a (diff) | |
| download | fx-maze-0d9a7c969269fc4d0b94b732136bff70903116ba.tar.gz fx-maze-0d9a7c969269fc4d0b94b732136bff70903116ba.zip | |
fixed shooting
| -rw-r--r-- | engine.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -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)
|
