private void OnTriggerEnter2D(Collider2D other) { TagBehaviour tagBehaviour = other.GetComponent <TagBehaviour>(); if (tagBehaviour == null) { return; } // Destroy when impacting solid objects if (tagBehaviour.HasTag("Solid")) { Sparks(); Destroy(gameObject); } // Damage target if (tagBehaviour.HasTag(TargetTag)) { HealthBehaviour healthBehaviour = other.GetComponent <HealthBehaviour>(); if (healthBehaviour != null) { healthBehaviour.Value -= Damage; Destroy(gameObject); } } }
private void OnHealthChanged(HealthChangedEventArgs eventArgs) { if (eventArgs.GameObject.name == "Player" && eventArgs.NewValue < eventArgs.OldValue) { DamageTaken += eventArgs.OldValue - eventArgs.NewValue; } TagBehaviour tagBehaviour = eventArgs.GameObject.GetComponent <TagBehaviour>(); if (tagBehaviour != null && tagBehaviour.HasTag("Enemy") && eventArgs.NewValue < eventArgs.OldValue) { DamageDealt += eventArgs.OldValue - eventArgs.NewValue; if (eventArgs.NewValue <= 0) { EnemiesDefeated++; } } }
private void OnHealthChanged(HealthChangedEventArgs eventArgs) { TagBehaviour tagBehaviour = eventArgs.GameObject.GetComponent <TagBehaviour>(); bool isEnemy = tagBehaviour != null && tagBehaviour.HasTag("Enemy"); bool isDead = eventArgs.NewValue == 0; bool isWithinRoom = eventArgs.GameObject.transform.parent == transform; if (isEnemy && isDead && isWithinRoom) { _enemyCount -= 1; if (_enemyCount <= 0) { OnRoomCleared(); EventManager.Unregister(_healthChangedEventId); } } }