Unity 6.3
0 онлайн 26 гостей 3 в системе
Вход

PhysicsCallbacks.IPreSolveCallback.OnPreSolve2D

Declaration

public bool OnPreSolve2D(LowLevelPhysics2D.PhysicsEvents.PreSolveEvent preSolveEvent);

Параметры

Параметр Описание
preSolveEvent Происшедшее событие.

Возвращаемое значение

логическое Возвращает false, если вы хотите отключить контакт на этом этапе симулирования. Возвращение true разрешает контакт.

Описание

Вызывается при обновлении контакта между двумя фигурами. Это позволяет отключить контакт до того, как он будет передан решателю. Типичным примером использования является реализация одностороннего поведения на основе предоставленного контакта. Этот вызов производится только в том случае, если PhysicsWorld имеет PhysicsWorld.preSolveCallbacks установлен на true. Событие возникает только в том случае, если одно из PhysicsShape имеет PhysicsShape.preSolveCallbacks установлено на true. Этот вызов выполняется только для Awake Dynamic bodies. Этот вызов не выполняется для триггеров.

С этим вызовом следует обращаться крайне осторожно! Он происходит на этапе моделирования и может быть вызван из любого потока, поэтому должен быть потокобезопасным. В этот момент состояние моделирования не определено для широкой фазы, событий и т. д. По этой причине любая попытка выполнить операцию записи приведёт к взаимной блокировке, так как сам мир заблокирован для записи. Простые операции чтения на PhysicsBody, PhysicsShape или PhysicsJoint безопасно, например, скорость чтения или получение геометрии формы, однако более сложные операции, связанные с миром, такие как выполнение запроса, могут привести к повреждениям или сбоям. Рекомендация заключается в использовании предоставленных контактных данных для принятия решения в обратном вызове. Дополнительная рекомендация заключается в чтении UnityEngine.LowLevelPhysics2D.PhysicsUserData с любого объекта, что является полностью безопасной операцией чтения, поэтому любая необходимая информация должна быть закодирована там, если это возможно.