public void OnHit(Transform model, Transform other)
    {
        if (other.gameObject.CompareTag("Missle"))
        {
            Asteroid asteroid = model.GetComponentInParent <Asteroid>();
            GameObject.Instantiate(this.prefabExplosion, other.position, other.rotation);
            GameObject.Destroy(asteroid.gameObject);
            GameObject.Destroy(other.gameObject);

            if (asteroid.Type != AsteroidType.SMALL)
            {
                GameObject prefab   = this.prefabsAsteroids[(int)asteroid.Type + 1];
                Vector3    position = other.position;
                Vector3    f1       = new Vector2(asteroid.ForceDirection.x, -asteroid.ForceDirection.y) * 2;
                Vector3    f2       = new Vector2(-asteroid.ForceDirection.x, asteroid.ForceDirection.y) * 2;

                Asteroid childAsteroid1 = GameObject.Instantiate(prefab).GetComponent <Asteroid>();
                childAsteroid1.SetPosition(position);
                childAsteroid1.AddForces(f1);
                childAsteroid1.Model.OnHit += this.OnHit;

                Asteroid childAsteroid2 = GameObject.Instantiate(prefab).GetComponent <Asteroid>();
                childAsteroid2.SetPosition(position);
                childAsteroid2.AddForces(f2);
                childAsteroid2.Model.OnHit += this.OnHit;
            }
        }
    }
    private void CreateAsteroid()
    {
        Rect worldRect = State.Instance.Get <StateCamera>().WorldRect;

        GameObject prefab = this.GetRandomPrefab();
        GameObject go     = GameObject.Instantiate(prefab);

        Asteroid asteroid = go.GetComponent <Asteroid>();
        float    size     = asteroid.Model.Size;

        SpawnEdge spawnEdge = AsteroidControllerUtils.GetRandomSpawnEdge();

        Rect    spawnRect = RectUtils.Resize(worldRect, size * 0.5f);
        Vector3 position  = AsteroidControllerUtils.GetRandomPosition(spawnEdge, spawnRect);

        asteroid.SetPosition(position);

        Rect    rangeRect      = RectUtils.CreateSquare(position, size);
        Rect    clampRect      = RectUtils.Resize(worldRect, size * -0.5f);
        Vector3 forceDirection = AsteroidControllerUtils.GetRandomForceDirection(spawnEdge, rangeRect, clampRect);

        asteroid.AddForces(forceDirection - position);

        asteroid.Model.OnHit += this.OnHit;
    }