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
32
33
34
35
36
37
38
|
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;
}
}
|