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

Rigidbody.SweepTest

建议修改

成功!

感谢您帮助我们改进 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每一项修改建议,并在适用的情况下进行更新。

关闭

提交失败

由于某种原因,您的修改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们改进 Unity 文档的质量。

关闭

取消

切换到手册

声明

public bool SweepTest(Vector3 direction, out RaycastHit hitInfo, float maxDistance = Mathf.Infinity, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

参数

direction 刚体扫描的方向。
hitInfo 如果返回 true,则 hitInfo 将包含有关碰撞体被击中位置的更多信息(其他资源:RaycastHit)。
maxDistance 扫描的长度。
queryTriggerInteraction 指定此查询是否应命中触发器。

返回值

bool 当刚体扫描与任何碰撞体相交时为真,否则为假。

描述

测试如果刚体在场景中移动,它是否会与任何物体发生碰撞。

测试如果刚体在场景中移动,它是否会与任何物体发生碰撞。这类似于对刚体的所有碰撞体中包含的所有点执行 Physics.Raycast,并返回所有命中结果中最接近的一个(如果有)。这对于 AI 代码很有用,例如,如果您需要知道某个物体是否可以穿过一个间隙而不会与任何物体发生碰撞。

请注意,此函数仅在将基本碰撞体类型(球体、立方体或胶囊体)或凸面网格附加到刚体对象时才有效 - 凹面网格碰撞体将不起作用,尽管它们可以在场景中被扫描检测到。

其他资源:Physics.SphereCastPhysics.CapsuleCastRigidbody.SweepTestAll

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { public float collisionCheckDistance; public bool aboutToCollide; public float distanceToCollision; public Rigidbody rb;

void Start() { rb = GetComponent<Rigidbody>(); }

void Update() { RaycastHit hit; if (rb.SweepTest(transform.forward, out hit, collisionCheckDistance)) { aboutToCollide = true; distanceToCollision = hit.distance; } } }