using System; using UnityEngine; public static class PhysicsHelpers { private static RaycastHit2D[] castHits = new RaycastHit2D[20]; private static Vector2 temp = default(Vector2); private static ContactFilter2D filter = new ContactFilter2D { useLayerMask = true }; public static bool AnythingBetween(Vector2 source, Vector2 target, int layerMask, bool useTriggers) { PhysicsHelpers.filter.layerMask = layerMask; PhysicsHelpers.filter.useTriggers = useTriggers; PhysicsHelpers.temp.x = target.x - source.x; PhysicsHelpers.temp.y = target.y - source.y; return Physics2D.Raycast(source, PhysicsHelpers.temp, PhysicsHelpers.filter, PhysicsHelpers.castHits, PhysicsHelpers.temp.magnitude) > 0; } public static bool AnyNonTriggersBetween(Vector2 source, Vector2 dirNorm, float mag, int layerMask) { int num = Physics2D.RaycastNonAlloc(source, dirNorm, PhysicsHelpers.castHits, mag, layerMask); bool result = false; for (int i = 0; i < num; i++) { if (!PhysicsHelpers.castHits[i].collider.isTrigger) { result = true; break; } } return result; } }