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

Collider2D.contactCaptureLayers

建议更改

成功!

感谢你帮助我们改善 Unity 文档的质量。尽管我们无法接受所有意见,但我们都会阅读用户建议的每条更改,并在适用情况下进行更新。

关闭

提交失败

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

关闭

取消

public LayerMask contactCaptureLayers;

说明

与该 Collider2D 接触时涉及的其他 Collider2D 的层,这些接触将被捕获。

接触由物理系统产生,并且用于计算诸如碰撞响应之类的行为。这些接触会自动处理,但只需对它们执行物理查询或生成物理回调即可将其捕获。通常,会捕获和存储所有接触层,但这会导致处理时间增加和内存消耗增大。因此,选择你要捕获的层可提高性能并减少整体内存消耗,但未捕获的那些层将导致接触不在物理查询中可用并且不会产生物理回调。

通过配置你要查询或接收回调的特定层,你可以确保你只收到来自所选层的响应。这样可让你编写更具体的脚本,因为你可以假设只有特定的层才可用。

了解接触捕获不会影响碰撞响应非常重要,因为接触始终在捕获前由物理系统处理。

以下是需要捕获接触的物理查询

以下是需要捕获接触的所有物理回调

说明:

  • 此属性不会控制 Collider2D 是否会接触,而只是控制捕获结果接触用于查询和回调。
  • 即使在 Collider2D.callbackLayers 中选择所有图层,也只报告那些被捕获的图层。
  • 修改接触捕捉层将导致所有接触被销毁。仍然有效的接触将通过物理回调报告为新接触。
  • 由于此属性会销毁现有接触,因此,如果您正通过物理回调记录接触状态,不建议在运行时更改此属性。
  • 接触是相互的,因此,如果参与某项接触的任一 Collider2D 禁用接触捕捉,则双方都无法看到该接触。
  • 对于某个层关闭接触捕捉后,任何接触查询将不会针对该层返回结果,也不会产生任何回调。

附加资源:LayerMask