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

Physics.SphereCast

建议一个更改

成功!

感谢您帮助我们改进 Unity 文档的质量。尽管我们无法接受所有提交,但我们会阅读用户建议的每项更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,无法提交您建议的更改。请在几分钟后 重试。并感谢您花时间帮助我们改进 Unity 文档的质量。

关闭

取消

声明

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,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,float radius,out 射线击中 hitInfo,float maxDistance = Mathf.Infinity,int layerMask = DefaultRaycastLayers,QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

参数

ray 球形扫描抛射的起始点和方向。
radius 球体的半径。
hitInfo 如果返回 true,hitInfo 将包含有关碰撞到的碰撞器的更多信息。(其他资源:RaycastHit)。
maxDistance 投射的最大长度。
layerMask 在投射胶囊体时用于有选择性地忽略碰撞体的 图层蒙版
queryTriggerInteraction 指定此查询是否应该击中触发器。

描述