Pular para o conteúdo

createObjectFracture

Servidor Fratura OOP objeto:fracture(...)

Quebra um objeto em fragmentos que todos podem ver.

O próprio objeto fica no lugar — escondido, com as colisões desligadas — e um novo elemento de fratura (tipo "fracture") é criado com objetos-fragmento abaixo: cópias do modelo de origem lançadas para fora, entregues à simulação física, inquebráveis e com 1000 de vida. A fratura é replicada para todos os clientes e para quem entrar depois.

fracture createObjectFracture ( object oObjeto [, table opcoes ] )
NomeTipoPadrãoDescrição
oObjetoobject—O objeto a quebrar.
opcoestable—Qualquer mistura dos campos abaixo; deixe de fora para todos os padrões.

A tabela opcoes aceita:

CampoTipoPadrãoDescrição
fragmentsnumber16Quantos pedaços mirar, limitado a 1–32. Quantos nascem de fato depende do plano de corte.
forcenumber4Força da explosão, limitada a 0–256.
randomnessnumber0.8Quão irregular é o corte, de 0 (uniforme) a 1 (selvagem).
velocitynumber1Multiplicador de velocidade da explosão, limitado a 0–8.
gravitynumber1Quão forte os pedaços caem, limitado a 0–100.
bouncenumber0.2Quanto os pedaços ricocheteiam no impacto, de 0 a 1.
dragnumber0.05Resistência do ar dos pedaços, de 0 a 1.
lifetimenumber90000Milissegundos até a fratura terminar e onFractureEnd disparar. 0 significa que nunca termina sozinha.
renderDistancenumber0Distância de desenho carregada no estado da fratura.
hideOriginalbooltrueSe os clientes escondem o objeto de origem.
disableOriginalCollisionbooltrueSe os clientes desligam as colisões do objeto de origem.
interFragmentCollisionsboolfalseCarregada no estado da fratura para colisões dos fragmentos entre si.
collisionModenumber0Modo de colisão dos fragmentos: 0 caixa, 1 malha. Qualquer valor 1 ou acima seleciona malha.
pausedboolfalseNasce com os fragmentos congelados no lugar, no meio da explosão.
seednumber0Semente do corte. 0 (ou omitida) escolhe um corte aleatório novo a cada chamada.

O elemento de fratura, ou false — com um aviso no console de debug — quando o primeiro argumento não é um objeto, ou quando a fratura não pôde ser criada: o objeto já está fraturado, nenhum fragmento sobreviveu ao plano de corte, ou o limite de fragmentos do servidor (256 pedaços ao mesmo tempo por padrão) foi atingido.

O elemento de fratura não fica preso ao recurso que o criou. Ele termina depois do seu lifetime — onFractureEnd dispara logo antes do elemento e seus fragmentos serem destruídos — ou antes se você chamar restoreObjectFracture ou destruir o objeto de origem. onFractureRest dispara uma vez, antes do fim, quando todo fragmento ficou em repouso por um segundo.

Esta função não dispara onObjectFracture; aquele evento é para fraturas que o servidor dispara sozinho quando a vida de um objeto com perfil acaba — veja setObjectFractureProfile.

-- um muro que se desfaz sob comando
local muro = createObject(19444, 331.5, -17.5, 4.0)
addCommandHandler("arrebenta", function(player)
local fx = createObjectFracture(muro, {
fragments = 24,
force = 6,
lifetime = 30000
})
if fx then
outputChatBox("muro estilhaçado", player)
end
end)