enemy collison added, no jittering anymore
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user