protected virtual void OnCollisionEnter(Collision _collision) { foreach (string tag in damageComponent.DamageTags) { if (_collision.gameObject.CompareTag(tag)) { VisualEffects.CreateVisualEffect(hitVfx, transform); PoolsManager.ReturnObjectToPools(this); } } }
protected IEnumerator CorrosiveEffect() { startTime = Time.timeSinceLevelLoad; while (Time.timeSinceLevelLoad < startTime + corrosiveDuration) { foreach (Character enemy in enemiesOnField) { var healthComponent = enemy.GetComponent <Health>(); if (healthComponent) { healthComponent.TakeDamage(corrosiveDamage); } } yield return(timeToDamage); } PoolsManager.ReturnObjectToPools(this); }
protected override IEnumerator Action() { if (character != null) { EventManager.TriggerEvent <CharacterEvent>(new CharacterEvent(CharacterEventType.Release, character)); } // Stop the action executiong because the animation has already end. if (poolableOBJ) { PoolsManager.ReturnObjectToPools(poolableOBJ); } else { character.gameObject.SetActive(false); } yield break; }
public IEnumerator Kill() { PoolableObject poolableCharacter = GetComponent <PoolableObject>(); if (poolableCharacter != null) { yield return(CharacterDeath()); PoolsManager.ReturnObjectToPools(poolableCharacter); } else if (poolableCharacter == null) { yield return(CharacterDeath()); Destroy(gameObject); } VisualEffects.CreateVisualEffect(deathVfx, transform); yield break; }