版本:Unity 6(6000.0)
语言中文(简体)
  • C#

Physics.CapsuleCast

建议修改

成功!

感谢您帮助我们提升 Unity 文档的质量。虽然我们无法采纳所有的提交建议,但我们会阅读来自我们用户的所有建议更改,并在适当的情况下进行更新。

关闭

提交失败

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

关闭

取消

声明

public static bool CapsuleCast(Vector3 point1, Vector3 point2, float radius, Vector3 direction, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

参数

point1 胶囊中 开始 处的球体中心。
point2 胶囊中 结束 处的球体中心。
radius 胶囊的半径。
direction 划动胶囊的方向。
maxDistance 划动的最大长度。
layerMask 用于在投射胶囊时有选择地忽略碰撞体的层蒙版
queryTriggerInteraction 指定此查询是否应命中触发器。

返回值

胶囊划动与任何碰撞体相交时为 bool,否则为 false。

说明

对场景中的所有碰撞体投射一个胶囊,并返回击中内容的详细信息。

胶囊由 point1point2 周围半径为 radius 的两个球体定义,它们形成了胶囊的两端。当胶囊沿着 direction 移动后,将返回与该胶囊相撞的第一个碰撞体的击中信息。这在光线投射精度不够的情况下非常有用,因为你想查明特定大小的对象(例如角色)能否在某处移动而不与路径上的任何内容相撞。

注意:CapsuleCast 不会检测胶囊与之重叠的碰撞体。传递半径为 0 时会导致未定义的输出,并且并不始终与 Physics.Raycast 的行为相同。

额外资源:Physics.SphereCastPhysics.CapsuleCastAllPhysics.RaycastRigidbody.SweepTest

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { void Update() { RaycastHit hit; CharacterController charContr = GetComponent<CharacterController>(); Vector3 p1 = transform.position + charContr.center + Vector3.up * -charContr.height * 0.5F; Vector3 p2 = p1 + Vector3.up * charContr.height; float distanceToObstacle = 0;

// Cast character controller shape 10 meters forward to see if it is about to hit anything. if (Physics.CapsuleCast(p1, p2, charContr.radius, transform.forward, out hit, 10)) distanceToObstacle = hit.distance; } }

声明

public static bool CapsuleCast(Vector3 point1Vector3 point2,float radiusVector3 direction,out RaycastHit hitInfo,float maxDistance = Mathf.Infinity,int layerMask = DefaultRaycastLayers,QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

参数

point1 胶囊中 开始 处的球体中心。
point2 胶囊中 结束 处的球体中心。
radius 胶囊的半径。
direction 划动胶囊的方向。
maxDistance 划动的最大长度。
hitInfo 如果返回 true,hitInfo 将包含有关光线投射击中碰撞体的更多信息。(其他资源:RaycastHit)。
layerMask 用于在投射胶囊时有选择地忽略碰撞体的层蒙版
queryTriggerInteraction 指定此查询是否应命中触发器。

说明