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.


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.
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.

using UnityEngine;

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

void Update() { // Set the layer mask to all layers var layerMask = ~0;

// Do any of the rays hit? if (Physics.RaycastNonAlloc(transform.position, transform.forward, m_Results, Mathf.Infinity, layerMask) > 0) { foreach (var result in m_Results) { // Check for null since some array spots might be if (result.collider != null) { Debug.Log("Hit " + result.collider.gameObject.name); } } } else { Debug.Log("Did not hit"); } } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961