private void OnProjectileHit(IGameObject gameObject, IGameObject projectile) { gameObject.AddHealth(-projectile.GetHealth()); if (gameObject.GetHealth() <= 0) { // Explode game object // TODO: Split asteroid into smaller when it is bigger than some threshold? DestroyObject(gameObject); OnAsteroidShot(gameObject); } else { // Slow down game object var healthRatio = projectile.GetHealth() / 3000; var projectileSpeed = projectile.GetComponent <LinearMovementComponent>(); var objSpeed = gameObject.GetComponent <LinearMovementComponent>(); objSpeed.YSpeed += projectileSpeed.YSpeed * healthRatio; objSpeed.XSpeed += projectileSpeed.XSpeed * healthRatio; } projectile.SetSpeed(0, 0); DestroyObject(projectile); }