PhysicsCallbacks.IContactFilterCallback.OnContactFilter2D
Declaration
public bool OnContactFilter2D(LowLevelPhysics2D.PhysicsEvents.ContactFilterEvent contactFilterEvent);Параметры
| Параметр | Описание |
|---|---|
| contactFilterEvent | Происшедшее событие. |
Возвращаемое значение
логическое Возвращает false, если вы не хотите, чтобы контакт был создан во время этого этапа моделирования. Возвращение true позволяет создать контакт.
Описание
Вызывается, когда определяется, что пара форм находится в контакте. Этот вызов используется для решения, будет ли создан контакт для этих форм, позволяя обойти создание контакта, так что контакт не будет передан решателю. Этот вызов используется только если PhysicsWorld имеет PhysicsWorld.contactFilterCallbacks установлен на true. Событие создается только если одно из PhysicsShape имеет PhysicsShape.contactFilterCallbacks установлено на true. Этот вызов используется как для триггеров, так и для нетриггеров, но только с динамическими телами.
С этим вызовом следует обращаться крайне осторожно! Он происходит на этапе моделирования и может быть вызван из любого потока, поэтому должен быть потокобезопасным. В этот момент состояние моделирования не определено для широкой фазы, событий и т. д. По этой причине любая попытка выполнить операцию записи приведёт к взаимной блокировке, так как сам мир заблокирован для записи. Простые операции чтения на PhysicsBody, PhysicsShape или PhysicsJoint безопасно, например, скорость чтения или получение геометрии формы, однако более сложные операции, связанные с миром, такие как выполнение запроса, могут привести к повреждениям или сбоям. Рекомендуем считывать UnityEngine.LowLevelPhysics2D.PhysicsUserData с любого объекта, что является полностью безопасной операцией чтения, поэтому любая требуемая информация должна быть закодирована там, если это возможно.