版本: Unity 6 (6000.0)
语言English
  • C#

Physics.RaycastNonAlloc

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每一个建议更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

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

参数

ray 射线的起点和方向。
results 用于存储命中结果的缓冲区。
maxDistance 射线命中允许与射线起点的最大距离。
layerMask 用于在投射射线时选择性地忽略碰撞体的层遮罩
queryTriggerInteraction 指定此查询是否应命中触发器。

返回值

int 存储到results缓冲区中的命中数量。

描述

通过场景投射射线并将命中结果存储到缓冲区中。

类似于Physics.RaycastAll,但不产生垃圾。

当没有更多命中结果和/或结果缓冲区已满时,射线投射查询结束。结果的顺序未定义。当返回一个满缓冲区时,不能保证结果是最接近的命中,并且返回缓冲区的长度。如果传入空缓冲区,则不返回任何结果,并且不抛出任何错误或异常。


声明

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

参数

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"); } } }