enemy collison added, no jittering anymore

This commit is contained in:
Remco
2016-05-25 13:38:13 +02:00
parent d739141b25
commit cf124b3f38
2 changed files with 23 additions and 10 deletions
+10 -9
View File
@@ -60,16 +60,17 @@ void Enemy::update(float delta)
dz = target.z - position.z;
length = sqrt(dx*dx + dz*dz);
dx /= length;
dz /= length;
if (length > 0.03)
{
dx /= length;
dz /= length;
dx *= speed*delta;
dz *= speed*delta;
dx *= speed*delta;
dz *= speed*delta;
position.x += dx;
position.z += dz;
rotation.y = atan2f(target.x - position.x, target.z - position.z) * 180 / M_PI;
position.x += dx;
position.z += dz;
}
rotation.y = atan2f(dx, dz) * 180 / M_PI;
}
}
+13 -1
View File
@@ -123,7 +123,7 @@ void World::update(float elapsedTime)
for (auto &enemy : enemies)
{
if (enemy->position.Distance(player.position) <= enemy->radius)
{
{
enemy->hasTarget = true;
enemy->target.x = player.position.x;
enemy->target.z = player.position.z;
@@ -131,7 +131,19 @@ void World::update(float elapsedTime)
else
enemy->hasTarget = false;
Vec3f oldpos = enemy->position;
enemy->update(elapsedTime);
if (enemy->hasTarget)
{
for (auto e : entities)
{
if (e->canCollide && e->inObject(enemy->position))
{
enemy->position = oldpos;
break;
}
}
}
}
}