wangguan
2020-12-10 5f6fb6dccd1330b5b0bcb2d721167a6ac062f3ad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using UnityEngine;
 
namespace ActionGameFramework.Health
{
    /// <summary>
    /// Damage trigger - a trigger based implementation of Damage zone
    /// </summary>
    [RequireComponent(typeof(Collider))]
    public class DamageTrigger : DamageZone
    {
        /// <summary>
        /// On entering the trigger see that the collider has a Damager component and if so make the damageableBehaviour take damage
        /// </summary>
        /// <param name="triggeredCollider">The collider that entered the trigger</param>
        protected void OnTriggerEnter(Collider triggeredCollider)
        {
            var damager = triggeredCollider.GetComponent<Damager>();
            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);
        }
    }
}