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); }
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(); } } }