ray | 射线的起点和方向。 |
results | 用于存储命中结果的缓冲区。 |
maxDistance | 射线命中允许与射线起点的最大距离。 |
layerMask | 用于在投射射线时选择性地忽略碰撞体的层遮罩。 |
queryTriggerInteraction | 指定此查询是否应命中触发器。 |
int 存储到results
缓冲区中的命中数量。
通过场景投射射线并将命中结果存储到缓冲区中。
类似于Physics.RaycastAll,但不产生垃圾。
当没有更多命中结果和/或结果缓冲区已满时,射线投射查询结束。结果的顺序未定义。当返回一个满缓冲区时,不能保证结果是最接近的命中,并且返回缓冲区的长度。如果传入空缓冲区,则不返回任何结果,并且不抛出任何错误或异常。
origin | 射线的起点和方向。 |
results | 用于存储命中结果的缓冲区。 |
direction | 射线的方向。 |
maxDistance | 射线命中允许与射线起点的最大距离。 |
queryTriggerInteraction | 指定此查询是否应命中触发器。 |
layerMask | 用于在投射射线时选择性地忽略碰撞体的层遮罩。 |
int 存储到results
缓冲区中的命中数量。
通过场景投射射线并将命中结果存储到缓冲区中。
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"); } } }