示例#1
0
 /// <summary>
 /// Performs a CapsuleCastAll from a specified collider at an offset position in a direction.
 /// Returns an array of RaycastHit for all objects hit.
 /// </summary>
 /// <param name="collider">Collider to model CapsuleCastAll from.</param>
 /// <param name="offset">Offset position to apply to collider position for CapsuleCastAll.</param>
 /// <param name="direction">Direction of CapsuleCastAll.</param>
 /// <param name="layerMask">Layers to hit.</param>
 /// <param name="invertLayerMask">If true, invert layer mask. Otherwise, use layer mask as normal.</param>
 /// <returns>Array of everything CapsuleCastAll hit.</returns>
 public static RaycastHit[] CapsuleCastAll(
     CapsuleCollider collider,
     Vector3 offset,
     Vector3 direction,
     LayerMask layerMask,
     bool invertLayerMask = false
     )
 {
     CalculateCapsuleCaps(
         collider,
         collider.transform.position + offset,
         collider.transform.rotation,
         out Vector3 capStart,
         out Vector3 capEnd
         );
     return(UPhysics.CapsuleCastAll(
                capStart,
                capEnd,
                collider.radius,
                direction.normalized,
                direction.magnitude,
                invertLayerMask ? ~layerMask.value : layerMask.value
                ));
 }
示例#2
0
 public static RaycastHit[] SphereCastAll(Ray ray, float radius, [DefaultValue("Mathf.Infinity")] float maxDistance, [DefaultValue("DefaultRaycastLayers")] int layerMask)
 {
     return(Physics.CapsuleCastAll(ray.origin, ray.origin, radius, ray.direction, maxDistance, layerMask));
 }