Leader following tweaks: will now face and move in the general direction of leader once in range.

This commit is contained in:
Steve 2016-02-24 07:13:48 +00:00
parent a2a1ec0613
commit e4b2bba230
1 changed files with 35 additions and 6 deletions

View File

@ -462,7 +462,7 @@ static void preAttack(void)
}
}
static void turnAndFly(int wantedAngle)
static void turnToFace(int wantedAngle)
{
int dir;
@ -476,6 +476,11 @@ static void turnAndFly(int wantedAngle)
self->angle = mod(self->angle, 360);
}
}
static void turnAndFly(int wantedAngle)
{
turnToFace(wantedAngle);
applyFighterThrust();
@ -584,14 +589,25 @@ static void fleeEnemies(void)
static void moveToPlayer(void)
{
int wantedAngle;
int dist = getDistance(self->x, self->y, player->x, player->y);
if (dist <= 350)
{
if (player->dx != 0 || player->dy != 0)
{
wantedAngle = getAngle(player->x, player->y, player->x + (player->dx * 10), player->y + (player->dy * 10));
turnToFace(wantedAngle);
}
if (dist <= 250)
{
applyFighterBrakes();
self->aiActionTime = MIN(FPS, self->aiActionTime);
}
}
else
{
faceTarget(player);
@ -769,11 +785,24 @@ static int lookForLeader(void)
static void moveToLeader(void)
{
int wantedAngle;
int dist = getDistance(self->x, self->y, self->leader->x, self->leader->y);
if (dist <= 350)
{
if (self->leader->dx != 0 || self->leader->dy != 0)
{
wantedAngle = getAngle(self->leader->x, self->leader->y, self->leader->x + (self->leader->dx * 10), self->leader->y + (self->leader->dy * 10));
turnToFace(wantedAngle);
}
if (dist <= 250)
{
applyFighterBrakes();
self->aiActionTime = MIN(FPS, self->aiActionTime);
}
}
else
{