Version: 2021.3
public static bool SphereCast (Vector3 origin, float radius, Vector3 direction, out RaycastHit hitInfo, float maxDistance= Mathf.Infinity, int layerMask= DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction= QueryTriggerInteraction.UseGlobal);

参数

origin 扫描开始处的球体中心。
radius 该球体的半径。
direction 扫描球体的方向。
hitInfo 如果返回 true,则 hitInfo 将包含有关碰撞体的撞击位置的更多信息(另请参阅:RaycastHit)。
maxDistance 投射的最大长度。
layerMask 层遮罩,用于在投射胶囊体时有选择地忽略碰撞体。
queryTriggerInteraction 指定该查询是否应该命中触发器。

返回

bool 当球体扫描与任何碰撞体交叠时为 true,否则为 false。

描述

沿射线投射球体并返回有关命中对象的详细信息。

当射线投射未提供足够的精度时,这很有用。例如,您可能只想知道某个具有特定大小的对象, 比如某个角色,能否在沿途不与任何对象发生碰撞的情况下到达某个地方。 可以将球体想象成一种“很厚”的射线投射。在这种情况下, 射线由起始矢量和方向指定。

注意:对于球体与碰撞体重叠的情况,SphereCast 不会检测到碰撞体。传递零作为半径会导致未定义的输出,其行为并不总是与 Physics.Raycast 相同。

另请参阅:Physics.SphereCastAllPhysics.CapsuleCastPhysics.RaycastRigidbody.SweepTest

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { CharacterController charCtrl;

void Start() { charCtrl = GetComponent<CharacterController>(); }

void Update() { RaycastHit hit;

Vector3 p1 = transform.position + charCtrl.center; float distanceToObstacle = 0;

// Cast a sphere wrapping character controller 10 meters forward // to see if it is about to hit anything. if (Physics.SphereCast(p1, charCtrl.height / 2, transform.forward, out hit, 10)) { distanceToObstacle = hit.distance; } } }

public static bool SphereCast (Ray ray, float radius, float maxDistance= Mathf.Infinity, int layerMask= DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction= QueryTriggerInteraction.UseGlobal);

参数

ray 投射球体扫描的射线的起点和方向。
radius 该球体的半径。
maxDistance 投射的最大长度。
layerMask 层遮罩,用于在投射胶囊体时有选择地忽略碰撞体。
queryTriggerInteraction 指定该查询是否应该命中触发器。

返回

bool 当球体扫描与任何碰撞体交叠时为 true,否则为 false。

描述

沿射线投射球体并返回有关命中对象的详细信息。

当射线投射未提供足够的精度时,这很有用。 例如,您可能只想知道某个具有特定大小的对象,比如某个角色,能否在沿途不与任何对象发生碰撞的情况下到达某个地方。 可以将球体想象成一种“很厚”的射线投射。

另请参阅:Physics.SphereCastAllPhysics.CapsuleCastPhysics.RaycastRigidbody.SweepTest


public static bool SphereCast (Ray ray, float radius, out RaycastHit hitInfo, float maxDistance= Mathf.Infinity, int layerMask= DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction= QueryTriggerInteraction.UseGlobal);

参数

ray 投射球体扫描的射线的起点和方向。
radius 该球体的半径。
hitInfo 如果返回 true,则 hitInfo 将包含有关碰撞体的撞击位置的更多信息(另请参阅:RaycastHit)。
maxDistance 投射的最大长度。
layerMask 层遮罩,用于在投射胶囊体时有选择地忽略碰撞体。
queryTriggerInteraction 指定该查询是否应该命中触发器。

描述