Spec-Zone.ru › LÖVE

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API