RaycastNonAlloc
Cast a ray through the Scene and store the hits into the buffer.
Read time 2 minutesLast updated 4 days ago
Definition
- Type: Method
- Namespace: UnityEngine
- Assembly: UnityEngine.PhysicsModule
RaycastNonAlloc(Ray, RaycastHit[], float, int, QueryTriggerInteraction)
Cast a ray through the Scene and store the hits into the buffer.
public static int RaycastNonAlloc(Ray ray, RaycastHit[] results, float maxDistance, int layerMask, QueryTriggerInteraction queryTriggerInteraction)
Parameters
The starting point and direction of the ray.
The buffer to store the hits into.
The max distance the rayhit is allowed to be from the start of the ray.
A Layer mask that is used to selectively filter which colliders are considered when casting a ray.
Specifies whether this query should hit Triggers.
Returns
Type | Description |
|---|---|
| int | The amount of hits stored into the results buffer. |
Remarks
Like Physics.RaycastAll, but generates no garbage.
The raycast query ends when there are no more hits and/or the results buffer is full. The order of the results is undefined. When a full buffer is returned it is not guaranteed that the results are the closest hits and the length of the buffer is returned. If a null buffer is passed in, no results are returned and no errors or exceptions are thrown.
RaycastNonAlloc(Vector3, Vector3, RaycastHit[], float, int, QueryTriggerInteraction)
Cast a ray through the Scene and store the hits into the buffer.
public static int RaycastNonAlloc(Vector3 origin, Vector3 direction, RaycastHit[] results, float maxDistance, int layerMask, QueryTriggerInteraction queryTriggerInteraction)
Parameters
The starting point and direction of the ray.
The direction of the ray.
The buffer to store the hits into.
The max distance the rayhit is allowed to be from the start of the ray.
A Layer mask that is used to selectively filter which colliders are considered when casting a ray.
Specifies whether this query should hit Triggers.
Returns
Type | Description |
|---|---|
| int | The amount of hits stored into the results buffer. |
Examples
using UnityEngine;public class ExampleClass : MonoBehaviour{ // The size of the array determines how many raycasts will occur RaycastHit[] m_Results = new RaycastHit[5]; // See https://docs.unity.com/engine/6000.0/manual/scripting/object-oriented-development/managing-update-order/execution-order for information on FixedUpdate() and Update() related to physics queries void FixedUpdate() { // Set the layer mask to all layers var layerMask = ~0; int hits = Physics.RaycastNonAlloc(transform.position, transform.forward, m_Results, Mathf.Infinity, layerMask); for (int i = 0; i < hits; i++) { Debug.Log("Hit " + m_Results[i].collider.gameObject.name); } if (hits == 0) { Debug.Log("Did not hit"); } }}