IPreSolveCallback
интерфейс в UnityEngine.LowLevelPhysics2D
Описание
Интерфейс, который, будучи реализованным в UnityEngine.Object, может быть вызван в качестве цели, когда PhysicsShape имеет PhysicsShape.preSolveCallbacks установлено на true. PhysicsWorld 2000 год PhysicsShape также должен иметь свой PhysicsWorld.preSolveCallbacks установлено на true.
Открытые методы
| Метод | Описание |
|---|---|
| OnPreSolve2D | Вызывается при обновлении контакта между двумя фигурами. Это позволяет отключить контакт до того, как он будет передан решателю. Типичный пример использования — реализация одностороннего поведения на основе предоставленного контакта. Этот вызов выполняется, только если у PhysicsWorld свойство PhysicsWorld.preSolveCallbacks равно true. Событие возникает, только если хотя бы у одной из PhysicsShape свойство PhysicsShape.preSolveCallbacks равно true. Вызов выполняется только для активных динамических тел. Для триггеров он не используется. С этим обратным вызовом следует обращаться крайне осторожно! Он происходит на этапе моделирования и может быть вызван из любого потока, поэтому должен быть потокобезопасным. В этот момент состояние моделирования не определено для широкой фазы, событий и т. д. По этой причине любая попытка выполнить операцию записи приведёт к взаимной блокировке, так как сам мир заблокирован для записи. Простые операции чтения на PhysicsBody, PhysicsShape или PhysicsJoint безопасны — например, чтение скорости или получение геометрии фигуры, — однако более сложные операции, затрагивающие мир, такие как выполнение запроса, могут привести к повреждению данных или сбоям. Рекомендуется принимать решение в обратном вызове на основе предоставленных данных о контакте. Также рекомендуется читать UnityEngine.LowLevelPhysics2D.PhysicsUserData любого объекта — это полностью безопасная операция чтения, поэтому всю необходимую информацию по возможности стоит закодировать именно там. |