Skip to content

MeeXaSiK/OverlapSugar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OverlapSugar

Short cuts for Physics.Overlap in Unity by Night Train Code

  • Friendly Overlap Settings in inspector
  • Perform Overlap in one line of code

Navigation

Friendly Settings In Inspector

[SerializeField] private OverlapSettings _overlapSettings;

OverlapSettings Review Screenshot

Overlap In One Line Of Code

Using

using NTC.OverlapSugar;

Overlap Settings

[SerializeField] private OverlapSettings _overlapSettings;

For Single Target

_overlapSettings.TryFind(out IDamageable damageable);

For Many Targets

private readonly List<IDamageable> _detectedDamageables = new List<IDamageable>(32);

_overlapSettings.TryFind(_detectedDamageables);

or

private readonly List<IDamageable> _detectedDamageables = new List<IDamageable>(32);

_overlapSettings.TryFindInChildren(_detectedDamageables);

Examples Of Using

Example For Single Target:

    using NTC.OverlapSugar;
    using UnityEngine;

    public class UnitMeleeAttack : UnitAttack
    {
        [SerializeField] private OverlapSettings _overlapSettings;

        public void TryPerformAttack()
        {
            if (_overlapSettings.TryFind(out IDamageable damageable))
            {
                damageable.ApplyDamage(Damage);
            }
        }
    }

Example For Many Targets:

    using NTC.OverlapSugar;
    using UnityEngine;

    public class UnitMeleeAttack : UnitAttack
    {
        [SerializeField] private OverlapSettings _overlapSettings;

        private readonly List<IDamageable> _detectedDamageables = new List<IDamageable>(32);
        
        public void TryPerformAttack()
        {
            if (_overlapSettings.TryFind(_detectedDamageables))
            {
                _detectedDamageables.ForEach(ApplyDamage);
            }
        }
        
        private void ApplyDamage(IDamageable damageable)
        {
            damageable.ApplyDamage(Damage);
        }
    }

Draw Gizmos

Also you can draw gizmos of overlap zone:

    public class UnitMeleeAttack : UnitAttack
    {
        [SerializeField] private OverlapSettings _overlapSettings;

#if UNITY_EDITOR
        private void OnDrawGizmos()
        {
            _overlapSettings.TryDrawGizmos();
        }
#endif
    }

or

    public class UnitMeleeAttack : UnitAttack
    {
        [SerializeField] private OverlapSettings _overlapSettings;

#if UNITY_EDITOR
        private void OnDrawGizmosSelected()
        {
            _overlapSettings.TryDrawGizmos();
        }
#endif
    }