origin | 射线在世界坐标系中的起点。 |
direction | 射线的方向。 |
maxDistance | 射线应检查碰撞的最大距离。 |
layerMask | 层遮罩,用于在投射射线时有选择地忽略碰撞体。 |
queryTriggerInteraction | 指定该查询是否应该命中触发器。 |
bool 如果射线与任何碰撞体相交,返回 true,否则为 false。
向场景中的所有碰撞体投射一条射线,该射线起点为 /origin/,朝向 /direction/,长度为 /maxDistance/。
您可以选择提供一个 LayerMask,以过滤掉不想生成与其碰撞的碰撞体。
Specifying queryTriggerInteraction
allows you to control whether or not Trigger colliders generate a hit, or whether to use the global Physics.queriesHitTriggers setting.
该示例创建一个简单的射线投射 - 从对象的当前位置向前投影,延伸 10 个单位。
using UnityEngine;
public class ExampleClass : MonoBehaviour
{
void FixedUpdate()
{
Vector3 fwd = transform.TransformDirection(Vector3.forward);
if (Physics.Raycast(transform.position, fwd, 10))
print("There is something in front of the object!");
}
}
Notes: Raycasts will not detect Colliders for which the Raycast origin is inside the Collider.
origin | 射线在世界坐标系中的起点。 |
direction | 射线的方向。 |
hitInfo | 如果返回 true,则 hitInfo 将包含有关碰撞体的撞击位置的更多信息(另请参阅:RaycastHit)。 |
maxDistance | 射线应检查碰撞的最大距离。 |
layerMask | 层遮罩,用于在投射射线时有选择地忽略碰撞体。 |
queryTriggerInteraction | 指定该查询是否应该命中触发器。 |
bool 当光线与任何碰撞体交叠时为 true,否则为 false。
向场景中的所有碰撞体投射射线,并返回有关命中对象的详细信息。
该示例报告当前对象与报告的碰撞体之间的距离:
using UnityEngine;
public class RaycastExample : MonoBehaviour
{
void FixedUpdate()
{
RaycastHit hit;
if (Physics.Raycast(transform.position, -Vector3.up, out hit))
print("Found an object - distance: " + hit.distance);
}
}
该示例重新引入 maxDistance
参数,以限制投射射线的距离:
using UnityEngine;
public class RaycastExample : MonoBehaviour
{
void FixedUpdate()
{
RaycastHit hit;
if (Physics.Raycast(transform.position, -Vector3.up, out hit, 100.0f))
print("Found an object - distance: " + hit.distance);
}
}
ray | 光线的起点和方向。 |
maxDistance | 射线应检查碰撞的最大距离。 |
layerMask | 层遮罩,用于在投射射线时有选择地忽略碰撞体。 |
queryTriggerInteraction | 指定该查询是否应该命中触发器。 |
bool 当光线与任何碰撞体交叠时为 true,否则为 false。
与上面使用 ray.origin
和 origin
(而不是 origin
和 /direction/)时相同。
using UnityEngine;
public class ExampleClass : MonoBehaviour
{
void Update()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, 100))
print("Hit something!");
}
}
ray | 光线的起点和方向。 |
hitInfo | 如果返回 true,则 hitInfo 将包含有关碰撞体的撞击位置的更多信息(另请参阅:RaycastHit)。 |
maxDistance | 射线应检查碰撞的最大距离。 |
layerMask | 层遮罩,用于在投射射线时有选择地忽略碰撞体。 |
queryTriggerInteraction | 指定该查询是否应该命中触发器。 |
bool 当光线与任何碰撞体交叠时为 true,否则为 false。
与上面使用 ray.origin
和 origin
(而不是 origin
和 /direction/)时相同。
该示例实现以下功能:每当检测到碰撞时,沿射线长度绘制一条线:
using UnityEngine;
public class ExampleClass : MonoBehaviour
{
void Update()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100))
Debug.DrawLine(ray.origin, hit.point);
}
}