Physics.RaycastNonAlloc

Cambiar al Manual
public static int RaycastNonAlloc (Ray ray, RaycastHit[] results, float maxDistance= Mathf.Infinity, int layerMask= DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction= QueryTriggerInteraction.UseGlobal);

Parámetros

rayEl punto inicial y la dirección del rayo.
resultsEl buffer para almacenar los hits (golpes).
maxDistanceLa distancia máxima que el rayhit se le permite estar desde el inicio del rayo.
layerMaskUn Layer mask que es utilizado para ignorar colliders selectivamente cuando se emita un rayo.
queryTriggerInteractionEspecifica si esta consulta debería golpear Triggers.

Valor de retorno

int La cantidad de hits (golpes) almacenados al buffer de results.

Descripción

Cast a ray through the Scene and store the hits into the buffer.

Como Physics.RaycastAll, pero no genera basura.

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.


public static int RaycastNonAlloc (Vector3 origin, Vector3 direction, RaycastHit[] results, float maxDistance= Mathf.Infinity, int layerMask= DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction= QueryTriggerInteraction.UseGlobal);

Parámetros

originEl punto inicial y la dirección del rayo.
resultsEl buffer para almacenar los hits (golpes).
directionLa dirección del rayo.
maxDistanceLa distancia máxima que el rayhit se le permite estar desde el inicio del rayo.
queryTriggerInteractionEspecifica si esta consulta debería golpear Triggers.
layerMaskUn Layer mask que es utilizado para ignorar colliders selectivamente cuando se emita un rayo.

Valor de retorno

int La cantidad de hits (golpes) almacenados al buffer de results.

Descripción

Cast a ray through the Scene and store the hits into the buffer.

using UnityEngine;

public class ExampleClass : MonoBehaviour { // The size of the array determines how many raycasts will occur RaycastHit[] m_Results = new RaycastHit[5];

// See Order of Execution for Event Functions 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"); } } }