Skip to content

Short cuts for Physics.Overlap in Unity

License

MIT, Unknown licenses found

Licenses found

MIT
LICENSE
Unknown
LICENSE.meta
Notifications You must be signed in to change notification settings

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