public void OnNotification(object sender, Message msg, params object[] args) { if ((Object)sender == this.sender) { if (msg == message) { if (delay > 0f) { ActionHelper.Delay(delay, () => evt.Invoke()); } else { evt.Invoke(); } } } }
public void OnNotification(object sender, Message msg, params object[] args) { if ((sender as MonoBehaviour).gameObject != this.sender) { return; } if (msg == message) { if (targets.Length > 0) { targets[index].SetActive(true); index = (index + 1 >= 0 && index + 1 < targets.Length) ? index + 1 : 0; ActionHelper.Delay(1f, () => { targets[index].SetActive(false); }); } } }
// Public methods ============================================ // public void OnGetHit(Attack attack) { if (IsInAnyState(States.Dead)) { return; } MeleeAttack meleeAtk; if (attack is MeleeAttack) { meleeAtk = (MeleeAttack)attack; var damage = Random.Range(meleeAtk.minDamage, meleeAtk.maxDamage); this.Health -= damage; if (Health > 0f) { GetComponent <StaggerBehaviour>().StaggerHealth -= meleeAtk.staggerDamage; } meleeAtk.Source.Notify(Message.Combat_HitEnemy, this); this.Notify(Message.Combat_GotHit); Time.timeScale = 0.2f; ActionHelper.Delay(0.06f, () => { Time.timeScale = 1f; }); } }
private void Start() { sprite = GetComponent <SpriteRenderer>(); ActionHelper.Delay(1.0f, () => sprite.DOFade(0f, 1f)); ActionHelper.Delay(2.5f, () => Destroy(gameObject)); }