IEnumerator AddEffectVorDuration(OnHitEffect onHitEffect, float duration) { currentHitEffects.Add(onHitEffect); yield return(new WaitForSeconds(duration)); // Code to execute after the delay currentHitEffects.Remove(onHitEffect); }
public OnHitEffect.DamageBehaviour GetOnHitEffect() { /// Debug.LogError(onHitEffectName); if (onHitEffectName == "" || onHitEffectName == null) { return(DefaultDamageBehaviour); } System.Runtime.Remoting.ObjectHandle handle = System.Activator.CreateInstance(null, onHitEffectName); OnHitEffect onHitEffect = handle.Unwrap() as OnHitEffect; return(onHitEffect.GetOnHitEffectBehaviour()); }
public static void Attach(GameObject obj) { if (!obj) { return; } OnHitEffect effect = obj.GetComponent <OnHitEffect>(); if (effect) { effect.Reset(); } else { obj.AddComponent <OnHitEffect>(); } }
IEnumerator EnableEffect(OnHitEffect effect, ParticleSystem particle, float currentWeaknessMultiplier) { particle.gameObject.SetActive(true); animator.SetFloat("WalkingSpeedMultiplier", currentWeaknessMultiplier); if (effect.onHitEffectType == OnHitEffectType.Freeze) { freezed = true; } float timeSum = 0; while (timeSum < effect.effectTime) { timeSum += Time.deltaTime; float damage = effect.damageOverTime / effect.effectTime * Time.deltaTime; DamageEnemy(damage, currentWeaknessMultiplier, true); yield return(null); } //yield return new WaitForSeconds(effect.effectTime); animator.SetFloat("WalkingSpeedMultiplier", 1f); freezed = false; particle.gameObject.SetActive(false); }
public void AddEffect(OnHitEffect onHitEffect, float duration) { StartCoroutine(AddEffectVorDuration(onHitEffect, duration)); }