예제 #1
0
    override public void Explode(GameObject caster)
    {
        if (_size != 1)
        {
            for (uint i = 0; i < _nbrChild; i++)
            {
                Quaternion rotation = new Quaternion();
                rotation.eulerAngles = new Vector3(0, 0, 90);

                AsteroidController.Spawn(this.gameObject, transform.position, rotation, _size - 1);
            }
        }

        Destroy(this.gameObject);
        caster.SendMessage("AddPoints", _pointsValue);
    }
예제 #2
0
    private void GenerateEnemy(string name)
    {
        Collider backgroundCollider = background.GetComponent <Collider> ();
        Vector3  max           = backgroundCollider.bounds.max;
        Vector3  min           = backgroundCollider.bounds.min;
        Vector3  spawnPosition = new Vector3();
        int      side          = Random.Range(0, 4);

        switch (side)           // choisit le coté du spawn
        {
        case 0:
            spawnPosition.x = max.x;
            spawnPosition.y = 0.5f;
            spawnPosition.z = Random.Range(min.z, max.z);
            break;

        case 1:
            spawnPosition.x = min.x;
            spawnPosition.y = 0.5f;
            spawnPosition.z = Random.Range(min.z, max.z);
            break;

        case 2:
            spawnPosition.x = Random.Range(min.x, max.x);
            spawnPosition.y = 0.5f;
            spawnPosition.z = max.z;
            break;

        case 3:
            spawnPosition.x = Random.Range(min.x, max.x);
            spawnPosition.y = 0.5f;
            spawnPosition.z = min.z;
            break;
        }

        Quaternion spawnRotation = Random.rotation;

        Dictionary <string, int> stats = new Dictionary <string, int>();

        foreach (KeyValuePair <string, int> kvp in _enemyStatsAverage[name])
        {
            stats [kvp.Key] = RandomizeStat(kvp.Value, _randomPercentByStat[kvp.Key]);
        }

        switch (name)
        {
        case "asteroid":
            spawnRotation.eulerAngles = new Vector3(0, 0, 90);
            AsteroidController.Spawn(_enemyNameConverter [name], spawnPosition, spawnRotation, stats["size"], stats["speed"]
                                     , stats["life"], stats["pointValue"]);
            break;

        case "weak":
            spawnRotation.eulerAngles = new Vector3(0, 0, 90);
            WeakEnemyController.Spawn(_enemyNameConverter [name], spawnPosition, spawnRotation, stats["speed"]
                                      , stats["life"], stats["pointValue"]);
            break;

        case "suicidal":
            spawnRotation.eulerAngles = new Vector3(0, 0, 90);
            SuicidalEnemyController.Spawn(_enemyNameConverter [name], spawnPosition, spawnRotation, stats["speed"]
                                          , stats["life"], stats["pointValue"]);
            break;

        case "medium":
            spawnRotation.eulerAngles = new Vector3(90, 0, 0);
            MediumEnemyController.Spawn(_enemyNameConverter [name], spawnPosition, spawnRotation, stats["speed"]
                                        , stats["life"], stats["pointValue"]);
            break;

        default:
            break;
        }
    }