-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathInvisibleBox.cs
More file actions
52 lines (38 loc) · 1.3 KB
/
InvisibleBox.cs
File metadata and controls
52 lines (38 loc) · 1.3 KB
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using UnityEngine;
[ExecuteInEditMode]
public class InvisibleBox : MonoBehaviour {
public Vector2 size = Vector2.one * 4;
public Vector2 offset;
public bool useCentreOrigin = true;
[SerializeField]
private TransformPosition useTransformPosition = TransformPosition.Local;
[SerializeField]
private bool showBox = true;
public bool IsInBox(Vector2 position) {
// if (useTransformPosition == TransformPosition.World)
// position -= (Vector2)transform.position;
if (useTransformPosition == TransformPosition.Local)
position -= (Vector2)transform.localPosition;
position -= offset;
if (useCentreOrigin)
position += size / 2f;
return position.IsInsideInvisibleBox2D(Vector2.zero, size);
}
public bool IsInBox(Transform trans, bool useLocal = true) => IsInBox((useLocal?trans.localPosition : Vector3.zero));
private void OnDrawGizmos() {
if (showBox) {
Gizmos.color = Color.green;
Vector2 worldOffset = Vector2.zero;
if (useTransformPosition == TransformPosition.Local)
worldOffset = transform.localPosition;
if (useCentreOrigin)
Gizmos.DrawWireCube(offset + worldOffset, size);
else
Gizmos.DrawWireCube(offset + worldOffset + size / 2f, size);
}
}
private enum TransformPosition {
World,
Local
}
}