Exemple #1
0
    private void explode()
    {
        ObjectPool objectPool = GameManager.Instance.levelManager.objectPool;

        // instance explosion walker prefabs
        GameObject walkerGO1 = objectPool.instantiate(Tags.ExplosionWalker);

        walkerGO1.transform.position = transform.position;
        walkerGO1.transform.rotation = transform.rotation;
        ExplosionWalker walker1 = walkerGO1.GetComponent <ExplosionWalker>();

        walker1.init(currentNode, nextNode, currentDirection);
        walker1.Start();

        if (currentNode != nextNode)
        {
            GameObject walkerGO2 = objectPool.instantiate(Tags.ExplosionWalker);
            walkerGO2.transform.position = transform.position;
            walkerGO2.transform.rotation = transform.rotation;
            ExplosionWalker walker2 = walkerGO2.GetComponent <ExplosionWalker>();
            walker2.init(nextNode, currentNode, currentDirection.getOpposite());
            walker2.Start();
        }

        // instance explosion effect
        GameObject exploEffect = objectPool.instantiate(Tags.BombBoom);

        exploEffect.transform.position = transform.position;
        exploEffect.transform.rotation = transform.rotation;

        // wipe the gameObject from the pool
        gameObject.SetActive(false);
    }
Exemple #2
0
    override protected void processDirection()
    {
        _init       = true;
        currentNode = nextNode;

        bool             first      = true;
        List <Direction> directions = allowedDirections();

        foreach (Direction dir in directions)
        {
            if (first)
            {
                first            = false;
                currentDirection = dir;
                assignNextNodeFromDirection();
            }
            else
            {
                GameObject obj = objectPool.instantiate(Tags.ExplosionWalker);
                obj.transform.position = transform.position;
                obj.transform.rotation = transform.rotation;

                ExplosionWalker walker = obj.GetComponent <ExplosionWalker>();
                walker.init(currentNode, nextNode, currentDirection);
                walker.Start();
                walker.durationTimer    = durationTimer;
                walker.currentDirection = dir;
                walker.assignNextNodeFromDirection();
            }
        }
    }