Thanks to visit codestin.com
Credit goes to github.com

Skip to content

MeeXaSiK/OverlapSugar

Repository files navigation

πŸš„ Overlap Sugar

License Version Unity

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

  • User-friendly OverlapSettings in inspector
  • PerformOverlap in one line of code

🌐 Navigation

User-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);
_overlapSettings.TryFindInChildren(out IDamageable damageable);

For Many Targets

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

_overlapSettings.TryFind(_detectedDamageables);
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
    }

Perform Overlap method

You can also use only PerformOverlap without components auto-finding:

_overlapSettings.PerformOverlap();

Then you can find results here:

Collider[] results = _overlapSettings.OverlapResults;

Warning! Method PerformOverlap is called in TryFind methods!

Custom max results size

You can set the results collection size by Init method:

int maxResultsSize = 32;
_overlapSettings.Init(maxResultsSize);

About

Short cuts for Physics.Overlap in Unity

Topics

Resources

License

MIT, Unknown licenses found

Licenses found

MIT
LICENSE
Unknown
LICENSE.meta

Stars

Watchers

Forks

Languages