Ejemplo n.º 1
0
    private GameObject SpawnChain(SpawnItemType spawnItemType, List <GameObject> spawnPositions = null)
    {
        _spawnChainId++;
        if (_spawnChainId >= 20)
        {
            _spawnChainId = 0;
        }

        int spawnChainAmount = Random.Range(5, 12);

        _spawnChainAmount[_spawnChainId] = spawnChainAmount;
        _spawnChainCount[_spawnChainId]  = 0;

        CurrentSpawnChain _currentSpawnChain = new CurrentSpawnChain();

        _currentSpawnChain.amountLeft              = spawnChainAmount;
        _currentSpawnChain.spawnItemType           = spawnItemType;
        _currentSpawnChain.spawnItemGameObject     = GetRandomSpawnPositionGameObject(spawnPositions);
        _currentSpawnChain.spawnItemUpGameObject   = GetSpawnPositionUpGameObject(_currentSpawnChain.spawnItemGameObject);
        _currentSpawnChain.spawnItemDownGameObject = GetSpawnPositionDownGameObject(_currentSpawnChain.spawnItemGameObject);

        //_currentSpawnChain.spawnOrder = CreateRandomSpawnOrderForChain(spawnChainAmount);

        _currentSpawnChain.amountTotal = spawnChainAmount;
        SequenceSpawnChain(_currentSpawnChain);
        return(_currentSpawnChain.spawnItemGameObject);
    }
Ejemplo n.º 2
0
    private void SequenceSpawnChain(CurrentSpawnChain _currentSpawnChain)
    {
        int      amount = _currentSpawnChain.amountTotal;
        Sequence _spawnChainNextSequence = DOTween.Sequence();

        for (int i = 0; i < amount; i++)
        {
            int j = i;

            bool isLastInChain = (amount - 1) == j ? true : false;

            GameObject spawnItemGameObject = GetSpawnItemGameObject(_currentSpawnChain.spawnItemType.name);
            gameObject.transform.DOKill();
            GameObject _chainSpawnItemGameObject = _currentSpawnChain.spawnItemGameObject;

            SpawnObject(spawnItemGameObject, _chainSpawnItemGameObject);
            spawnItemGameObject.GetComponent <SpriteRenderer>().enabled = true;
            spawnItemGameObject.GetComponent <BoxCollider2D>().enabled  = true;

            spawnItemGameObject.SendMessage("SetIsLastInChain", isLastInChain, SendMessageOptions.DontRequireReceiver);

            HellSpawn.SpawnMovingParameters spawnMovingParameters = new HellSpawn.SpawnMovingParameters();
            spawnMovingParameters.flyTime        = GetFlyTime(spawnItemGameObject);
            spawnMovingParameters.hellSpawnSpeed = GetHellSpawnTimeScale();

            Tween _chainItemTween = spawnItemGameObject.GetComponent <HellSpawn>().
                                    GetMovingTween(spawnMovingParameters, false, true);

            _spawnChainNextSequence.Insert(_spawnChainTime * j, _chainItemTween);

            //_spawnChainNextSequence.InsertCallback(_spawnChainTime * j, () => SpawnChainNext(_currentSpawnChain, _spawnChainNextSequence));
            //_spawnChainNextSequence.AppendInterval(_spawnChainTime);
        }

        //_spawnChainNextSequence.SetLoops(_currentSpawnChain.amountTotal);
        _spawnChainNextSequence.SetId(SPAWN_CHAIN_SEQUENCE);
        _spawnChainNextSequence.timeScale = GetHellSpawnTimeScale();
        //_spawnChainNextSequence.SetRecyclable(true);
    }
Ejemplo n.º 3
0
    private void SpawnChainNext(CurrentSpawnChain _currentSpawnChain, Sequence spawnChainSequence)
    {
        bool isLastInChain = (spawnChainSequence.Loops() - 1) == spawnChainSequence.CompletedLoops() ? true : false;

        HellSpawn.SpawnMovingParameters spawnMovingParameters = new HellSpawn.SpawnMovingParameters();
        spawnMovingParameters.flyTime            = GetFlyTime(_currentSpawnChain.spawnItemGameObject);
        spawnMovingParameters.hellSpawnSpeed     = GetHellSpawnTimeScale();
        _currentSpawnChain.spawnMovingParameters = spawnMovingParameters;

        GameObject spawnItemGameObject = GetSpawnItemGameObject(_currentSpawnChain.spawnItemType.name);

        //detect position for item in chain

        /*
         * GameObject _chainSpawnItemGameObject = null;
         * switch (_currentSpawnChain.spawnOrder[spawnChainSequence.CompletedLoops()]) {
         *  case    "main":
         *      _chainSpawnItemGameObject = _currentSpawnChain.spawnItemGameObject;
         *      break;
         *  case    "up":
         *      _chainSpawnItemGameObject = _currentSpawnChain.spawnItemUpGameObject;
         *      break;
         *  case    "down":
         *      _chainSpawnItemGameObject = _currentSpawnChain.spawnItemDownGameObject;
         *      break;
         * }
         * if (_chainSpawnItemGameObject == null) {
         *  _chainSpawnItemGameObject = _currentSpawnChain.spawnItemGameObject;
         * }
         */

        GameObject _chainSpawnItemGameObject = _currentSpawnChain.spawnItemGameObject;

        SpawnObjectAndStartMoving(spawnItemGameObject, _chainSpawnItemGameObject, _currentSpawnChain.spawnMovingParameters);
        spawnItemGameObject.SendMessage("SetIsLastInChain", isLastInChain, SendMessageOptions.DontRequireReceiver);

        _currentSpawnChain.amountLeft--;
    }