using UnityEngine; namespace ActionGameFramework.Health { /// /// Damage trigger - a trigger based implementation of Damage zone /// [RequireComponent(typeof(Collider))] public class DamageTrigger : DamageZone { /// /// On entering the trigger see that the collider has a Damager component and if so make the damageableBehaviour take damage /// /// The collider that entered the trigger protected void OnTriggerEnter(Collider triggeredCollider) { var damager = triggeredCollider.GetComponent(); if (damager == null) { return; } LazyLoad(); float scaledDamage = ScaleDamage(damager.finalDamage); Vector3 collisionPosition = triggeredCollider.ClosestPoint(damager.transform.position); damageableBehaviour.TakeDamage(scaledDamage, collisionPosition, damager.alignmentProvider); damager.HasDamaged(collisionPosition, damageableBehaviour.configuration.alignmentProvider); } } }