Remove Workaround (Português)
Possível solução para questão do módulo Physics
Existe um questão não resolvida com o terceiro callback de World:setCallbacks, o callback remove. Se existe contato ativo quando uma forma é destruída, a próxima atualização física irá causar um término abrupto quando o Löve tentas fazer a chamada do callback. Esse problema apareceu a partir da versão 0.6.2 do Löve.
Para uma possível solução deste problema, uma forma precisa primeiro deixar de ter todos os contatos ativos antes para ser destruído com segurança. Isso pode ser feito através da movimentação da forma para uma área específica, ou de maneira mais simples através da configuração para que a forma não colida com qualquer coisa.
-- remove a forma de todas as categorias de contato.
shape:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
-- adiciona na lista de destruição pendente
table.insert(removals, shape)
-- também remove a forma da lista dos objetos desenháveis, ou marca
-- com um indicação que não será mais desenhada
Depois que isso está feito, a forma será mais afetada no mundo. Depois que a próxima atualização física for executada, ela também terá perdido todos os contatos e poderá ser destruída com segurança.
-- a atualização do mundo normalmente ocorre no callback love.update
world:update(dt)
-- você pode em seguida destruir qualquer forma lista para ser removida
for _, shape in ipairs(removals) do
shape:destroy()
end
Lembre-se de atualizar o mundo antes de remover a forma faz ter certeza que ela não terá mais nenhum contato com qualquer coisa.
Veja Também
Outros Idiomas
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info