ReturnToPool() public méthode

public ReturnToPool ( Transform instance, float time = 0.0f ) : void
instance Transform
time float
Résultat void
Exemple #1
0
        IEnumerator Attack()
        {
            trigger2D.enabled = false;
            yield return(new WaitForSeconds(chargeTime));

            trigger2D.enabled = true;
            animator.SetTrigger("Attack");
            yield return(new WaitForSeconds(afterEffectTime));

            trigger2D.enabled = false;
            // TODO: POOL
            pooler.ReturnToPool(Constants.PoolTags.Spell, gameObject, 0);
        }
Exemple #2
0
 private void OnTriggerEnter2D(Collider2D other)
 {
     // Debug.Log("Collided with " + other.tag);
     if (other.tag == "Enemy")
     {
         // Damage enemy
         other.GetComponentInParent <Heart>().Damage(damage);
         pooler.ReturnToPool(Constants.PoolTags.Fireball, gameObject, 0);
     }
 }
 private void OnTriggerEnter2D(Collider2D col)
 {
     if (col.transform.tag == "Player")
     {
         Debug.Log("Collide with " + col.transform.name);
         // Damage player
         col.transform.GetComponent <Witch>().TakeDamage(damage);
         // run some anim if any
         // and pool it back afterwards
         pooler.ReturnToPool(Constants.PoolTags.Arrow, gameObject, 0);
     }
 }
Exemple #4
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        foreach (string typetag in shredTags)
        {
            var thisType = idManager.GetObjType(collision.gameObject);

            if (thisType.Equals(typetag))
            {
                pooler.ReturnToPool(collision.gameObject);
            }
            else
            {
                Debug.Log("Type does not match shredder");
            }
        }
    }
Exemple #5
0
        private IEnumerator DoAttack()
        {
            isAttacking = true;
            // for dual stick input
            Vector2 direction = new Vector2(Input.GetAxis("Aim_Horizontal"), Input.GetAxis("Aim_Vertical"));

            Debug.DrawRay(transform.position, direction, Color.red, 1);
            GameObject obj = pooler.RetrieveFromPool(Constants.PoolTags.Fireball, transform.position, Vector3Int.zero, transform);

            obj.GetComponent <Fireball>().damage = attackPower;
            Rigidbody2D rb = obj.GetComponent <Rigidbody2D>();

            // rb.AddForce(
            //     (direction * projectileSpeed)
            // );
            rb.velocity = (direction * projectileSpeed);
            pooler.ReturnToPool(Constants.PoolTags.Fireball, obj, 3f);
            yield return(new WaitForSeconds(1 / attackSpeed));

            isAttacking = false;
        }
    IEnumerator SpawnEnemies(Vector2 spawnCenter)
    {
        isSpawning = true;
        levelNum++;
        // increase spawn amount linearly
        int spawnAmount = this.spawnAmount + levelNum % 2;

        levelObj.text = levelTextPrefix + (levelNum + 1);
        Vector2[] spawnPostions = new Vector2[spawnAmount];
        for (int i = 0; i < spawnAmount; i++)
        {
            DoSpawnAnimation(i);
        }
        yield return(new WaitForSeconds(spawnAnimDuration));

        for (int i = 0; i < spawnAmount; i++)
        {
            SpawnEnemy(i);
        }
        // mark the end of spawn
        yield return(null);

        // Debug.Log("Enemies Alive - " + enemiesAlive);
        isSpawning = false;


        void DoSpawnAnimation(int index)
        {
            var spawnpos = spawnPostions[index] = spawnCenter + UnityEngine.Random.insideUnitCircle * spawnRadius;
            var obj      = pooler.RetrieveFromPool(Constants.PoolTags.SpawnAnim, spawnpos, Vector3Int.zero, transform);

            pooler.ReturnToPool(Constants.PoolTags.SpawnAnim, obj, spawnAnimDuration);
        }

        void SpawnEnemy(int index)
        {
            // find spawn position
            var spawnpos = spawnPostions[index];
            var enemyTag = GetEnemyTag();
            var enemyObj = pooler.RetrieveFromPool(enemyTag, spawnpos, Vector3Int.zero);

            // set target as player
            enemyObj.GetComponent <Enemy>().target = playerTransform;

            // set world camera
            enemyObj.GetComponentInChildren <Canvas>().worldCamera = cameraMain;

            // increase enemy count as we spawned one
            enemiesAlive++;
            textObj.text = enemiesAlive.ToString();
            characterObjs.Add(enemyObj);

            // on death decrease enemy count
            enemyObj.GetComponent <Heart>().deathEvent += () =>
            {
                enemiesAlive--;
                textObj.text = enemiesAlive.ToString();
                characterObjs.Remove(enemyObj);
                Debug.Log("Enemies Alive - " + enemiesAlive);
                // if enemiesAlive goes to zero
                // then spawn item rewards
            };
            // set enemy movement speed
            enemyObj.GetComponent <CharacterMotor>().movementSpeed = baseSpeed + levelNum * speedIncrement;
        }
    }