World:setCallbacks
Устанавливает функции для обратных вызовов столкновений во время обновления мира.
В качестве аргументов можно указать четыре функции Lua. Значение nil удаляет функцию.
При вызове каждая функция получит три аргумента. Первые два аргумента — это сталкивающиеся фикстуры, а третий аргумент — Contact между ними. Обратный вызов postSolve дополнительно получает нормальный и касательный импульс для каждой точки контакта. См. примечания.
Если вы хотите узнать, когда именно вызывается каждый обратный вызов, обратитесь к документации Box2d.
Изменения в мире запрещены внутри обратных вызовов beginContact, endContact, preSolve и postSolve, так как BOX2D блокирует мир во время этих обратных вызовов.
Функция
Доступно начиная с LÖVE 0.8.0
Этот метод не поддерживается в более ранних версиях.
Синтаксис
World:setCallbacks( beginContact, endContact, preSolve, postSolve )
Аргументы
function beginContact- Вызывается, когда две фикстуры начинают перекрываться.
function endContact- Вызывается, когда две фикстуры перестают перекрываться. Это также будет вызываться вне обновления мира, когда объекты, находящиеся в столкновении, уничтожаются.
function preSolve- Вызывается перед разрешением столкновения.
function postSolve- Вызывается после разрешения столкновения.
Возвращаемое значение
Ничего.
Функция
Удалино в LÖVE 0.8.0
Этот вариант не поддерживается в этой и более поздних версиях.
Синтаксис
World:setCallbacks( add, persist, remove, result )
Аргументы
function add- Вызывается, когда две формы впервые сталкиваются.
function persist- Вызывается каждый кадр, если столкновение длится более 1 кадра.
function remove- Вызывается, когда две формы перестают сталкиваться.
function result- Вызывается после того, как столкновение было рассчитано. Примечание: этот обратный вызов не правильно привязан в LOVE на момент написания, в результате этого обратного вызова не происходит, и соответствующие аргументы для него не передаются.
Возвращаемое значение
Ничего.
Примечания
Ниже приведены параметры обратного вызова postSolve. Обратите внимание, что количество нормального и касательного импульса соответствует количеству точек контакта.
function postSolve(fixture1, fixture2, contact, normal_impulse1, tangent_impulse1, normal_impulse2, tangent_impulse2) -- do stuff end
См. также
© 2006–2020 LÖVE Development Team
Licensed under the GNU Free Documentation License, Version 1.3.
https://love2d.org/wiki/World:setCallbacks