/// <summary> /// Raycasts against all objects in isometric space. /// Note: Objects must have an IsoCollider attached to raycast against /// </summary> /// <param name="origin"></param> /// <param name="direction"></param> /// <param name="isoRaycastHit"></param> /// <param name="maxDistance"></param> /// <returns></returns> public static bool Raycast(Vector3 origin, Vector3 direction, out IsoRaycastHit isoRaycastHit, float maxDistance = Mathf.Infinity, int layermask = Physics.DefaultRaycastLayers) { RaycastHit raycastHit; if (Physics.Raycast(origin, direction, out raycastHit, maxDistance, layermask)) { isoRaycastHit = IsoRaycastHit.FromRaycastHit(raycastHit); return(!isoRaycastHit.Equals(default(IsoRaycastHit))); } isoRaycastHit = default(IsoRaycastHit); return(false); }
/// <summary> /// Isometric equivalent of Physcis.Boxcast /// Note: Objects must have an IsoCollider attached to raycast against /// </summary> /// <param name="center"></param> /// <param name="halfExtents"></param> /// <param name="direction"></param> /// <param name="isoRaycastHit"></param> /// <param name="orientation"></param> /// <param name="maxDistance"></param> /// <param name="layerMask"></param> /// <param name="queryTriggerInteraction"></param> /// <returns></returns> public static bool BoxCast(Vector3 center, Vector3 halfExtents, Vector3 direction, out IsoRaycastHit isoRaycastHit, Quaternion orientation, float maxDistance = Mathf.Infinity, int layerMask = Physics.DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal) { RaycastHit hit; if (Physics.BoxCast(center, halfExtents, direction, out hit, orientation, maxDistance, layerMask, queryTriggerInteraction)) { isoRaycastHit = IsoRaycastHit.FromRaycastHit(hit); return(!isoRaycastHit.Equals(default(IsoRaycastHit))); } isoRaycastHit = default(IsoRaycastHit); return(false); }