Skip to content

Instantly share code, notes, and snippets.

@korchoon
Created March 30, 2020 06:33
Show Gist options
  • Save korchoon/62564606ea00f334082c493a77874574 to your computer and use it in GitHub Desktop.
Save korchoon/62564606ea00f334082c493a77874574 to your computer and use it in GitHub Desktop.
public class Sensor : MonoBehaviour
{
public CapsuleCollider Collider;
public LayerMask Mask ;
void OnValidate()
{
Asr.IsTrue(Mask.value != 0);
Asr.IsTrue(Collider);
}
[NonSerialized] public int ContactHash;
[NonSerialized] public float LastContactTime;
public bool HasCollision()
{
return Time.time - LastContactTime < Time.fixedDeltaTime * 2f;
}
void OnDrawGizmosSelected()
{
Gizmos.color = HasCollision() ? Color.red : Color.green;
Gizmos.DrawSphere(transform.position + transform.forward * ((Collider.height * 1.17f - 2 * Collider.radius) / 2 + Collider.center.z), Collider.radius);
}
void OnTriggerStay(Collider other)
{
if (!Has(Mask, other.gameObject.layer))
return;
LastContactTime = Time.time;
ContactHash = other.GetInstanceID();
}
static bool Has(LayerMask layerMask, int layer)
{
return (layerMask.value & (1 << layer)) != 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment