diff --git a/Enemy.cpp b/Enemy.cpp index 2864fb8..ee3134a 100644 --- a/Enemy.cpp +++ b/Enemy.cpp @@ -59,9 +59,14 @@ void Enemy::inEyeSight(Vec3f & TargetPosition) hasTarget = false; } -bool Enemy::hasCollison(Vec3f &) +void Enemy::collide(const Entity * entity) { - + Vec3f difference = position - entity->position; //zou misschien omgedraait moeten worden + difference.y = 0; + difference.Normalize(); + difference = difference * (entity->model->radius + 0.01f); + position.x = difference.x + entity->position.x; + position.z = difference.z + entity->position.z; } void Enemy::update(float delta) diff --git a/Enemy.h b/Enemy.h index 44aec67..e0cabd7 100644 --- a/Enemy.h +++ b/Enemy.h @@ -18,6 +18,6 @@ public: void draw(); void inEyeSight(Vec3f &); - bool hasCollison(Vec3f &); + void collide(const Entity *entity); }; diff --git a/World.cpp b/World.cpp index 57a5347..5af2196 100644 --- a/World.cpp +++ b/World.cpp @@ -168,7 +168,7 @@ void World::update(float elapsedTime) //Al deze code zou in enemy moeten staan enemy->inEyeSight(player->position); - + enemy->update(elapsedTime); if (enemy->hasTarget) { @@ -176,14 +176,11 @@ void World::update(float elapsedTime) { if (e->canCollide && e->inObject(enemy->position)) { - Vec3f difference = e->position - enemy->position; //zou misschien omgedraait moeten worden - difference.Normalize(); - difference = difference * (e->model->radius + 0.01f); - enemy->position = e->position + difference; + enemy->collide(e); break; } } - } + } //tot hier } }