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

物理.RaycastAll

提出更改建议

成功!

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

关闭

提交失败

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

关闭

取消

声明

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

参数

ray 射线的起始点和方向。
maxDistance 允许光线命中距离射线起点的最大距离。
layerMask 在投射光线时用来选择性地忽略碰撞器的图层蒙版
queryTriggerInteraction 指定此查询是否应命中触发器。

返回

RaycastHit[] RaycastHit 对象数组。请注意,结果的顺序是未定义的。

说明

将射线投射穿过场景并返回所有命中。请注意,结果的顺序是未定义的。

其他资源:Raycast

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { void Update() { RaycastHit[] hits; hits = Physics.RaycastAll(transform.position, transform.forward, 100.0F);

for (int i = 0; i < hits.Length; i++) { RaycastHit hit = hits[i]; Renderer rend = hit.transform.GetComponent<Renderer>();

if (rend) { // Change the material of all hit colliders // to use a transparent shader. rend.material.shader = Shader.Find("Transparent/Diffuse"); Color tempColor = rend.material.color; tempColor.a = 0.3F; rend.material.color = tempColor; } } } }

注意: 光线投射不会检测射线原点位于碰撞器内部的碰撞器。


声明

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

参数

origin 射线在世界坐标中的起始点。
direction 射线的方向。
maxDistance 允许光线命中距离射线起点的最大距离。
layermask 在投射光线时用来选择性地忽略碰撞器的图层蒙版
queryTriggerInteraction 指定此查询是否应命中触发器。

说明

其他资源:Raycast

见上文示例。