Gaimo Posted December 2, 2020 Share Posted December 2, 2020 local obj = createObject(1264, -2401.30, -631.06, 133.70) setElementVelocity(obj, 0,0,0) Segundo a wiki: Note: Dynamic objects do not automatically have physics applied to them. Use setElementVelocity(object, 0, 0, 0) to fix this. Fiz como diz na wiki mesmo assim sem sucesso, a física só é aplicada quando eu toco no objeto, alguma solução? Link to comment
Gaimo Posted December 2, 2020 Author Share Posted December 2, 2020 Estou com um problema na colisão, talvez eu passe tudo para colsphere, minha dúvida é existe alguma diferença na colisão entre "cylinder" e "corona"? Quando o objeto fica de ponta cabeça não está detectando a colisão. Se a colisão do "corona" for uma esfera deveria tá colidindo não? Corona size 4 na anexado na posição 0,0,0: Cylinder size 4 anexado na posição 0,0,-2: Quando o objeto está em pé funciona normalmente, mas quando ele está deitado ou de ponta cabeça tem que ficar empurrando o objeto para detectar colisão. Mesmo quando eu coloquei o corona que era pra ser algo como uma esfera não funcionou, dependendo de como o objeto está não detecta a colisão. Devo passar para colsphere ou tem outra solução? Link to comment
Other Languages Moderators Lord Henry Posted December 3, 2020 Other Languages Moderators Share Posted December 3, 2020 (edited) Não anexe o cilindro em objetos com física dinâmica. Eles irão bugar os markers pois o jogo não atualiza direito a posição da colisão dos markers. Em vez disso use um onClientRender (se o script for client-side) para ficar obtendo a posição do objeto e setando o marker nessa posição. Se for server-side, use setTimer para ficar atualizando a posição do marker de acordo com a posição do objeto. Edited December 3, 2020 by Lord Henry Link to comment
Other Languages Moderators Lord Henry Posted December 3, 2020 Other Languages Moderators Share Posted December 3, 2020 Bote 1 no lugar do terceiro 0. Link to comment
Gaimo Posted December 4, 2020 Author Share Posted December 4, 2020 21 hours ago, Lord Henry said: Não anexe o cilindro em objetos com física dinâmica. Eles irão bugar os markers pois o jogo não atualiza direito a posição da colisão dos markers. Em vez disso use um onClientRender (se o script for client-side) para ficar obtendo a posição do objeto e setando o marker nessa posição. Se for server-side, use setTimer para ficar atualizando a posição do marker de acordo com a posição do objeto. Não funcionou, setTimer(function() for i in ipairs(JOB.trash) do local x,y,z = getElementPosition(JOB.trash[i]) if setElementPosition(JOB.spheres[i], x,y,z) then outputChatBox("Update") end end end, 100, 0, JOB) Não apresenta nenhum erro, e ele teoricamente está atualizando a posição do colshape porque não está retornando "Update" Link to comment
Gaimo Posted December 4, 2020 Author Share Posted December 4, 2020 Correção: Não apresenta nenhum erro e a mensagem "Update" é enviada o que significa que está retornando true na função setElementPosition, mas a posição não está sendo atualizada. Entendi o problema, quando eu aplico física no objeto e movimento ele ainda sim sua posição é a inicial: Server-side: local obj = createObject(1264, -2400, -650, 132.5) local marker = createMarker(-2400, -650, 132.5, "cylinder", 2, 255,255,255,255) setElementVelocity(obj, 0,0,1) -- Não funciona o obj continua flutuando. setTimer(function() local x,y,z = getElementPosition(obj) setElementPosition(marker, x,y,z-1) -- Funciona mas não tem efeito, pois a posição do objeto não é atualizada. end, 100, 0, obj, marker) addCommandHandler("pos", function(player) local x,y,z = getElementPosition(obj) outputChatBox("x= "..x.." y= "..y.." z= "..z) -- Sempre retorna a posição inicial do objeto. end) Link to comment
Other Languages Moderators Lord Henry Posted December 7, 2020 Other Languages Moderators Share Posted December 7, 2020 Se você movimentar o objeto encostando nele (sem ser pelo setElementVelocity), a posição obtida também é sempre a inicial? Link to comment
Gaimo Posted December 9, 2020 Author Share Posted December 9, 2020 On 07/12/2020 at 15:08, Lord Henry said: Se você movimentar o objeto encostando nele (sem ser pelo setElementVelocity), a posição obtida também é sempre a inicial? Na verdade o setElementVelocity nem funcionou, e sim, movimentando o objeto a posição sempre é a inicial, outra coisa é que o marker visualmente acompanha o objeto mas sua colisão fica na posição inicial. Link to comment
Other Languages Moderators Lord Henry Posted December 11, 2020 Other Languages Moderators Share Posted December 11, 2020 (edited) Consegui fazer o marker acompanhar o objeto somente client-side. local obj = createObject (1264, -2400, -650, 132.5) setObjectBreakable (obj, false) local marker = createMarker (-2400, -650, 132.5, "cylinder", 2, 255, 255, 255, 255) setTimer (function () setElementVelocity (obj, 0, 0, 0) end, 100, 1) addEventHandler ("onClientRender", root, function() local x, y, z = getElementPosition (obj) setElementPosition (marker, x, y, z - 1) end) Edited December 11, 2020 by Lord Henry Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now