Jump to content

Como faço um objeto ficar girando?


Recommended Posts

  • Administrators

Welcome to the forums! Your thread has been moved into the Portuguese scripting section, as that is more appropriate given your language.

I think you should be able to rotate the object using moveObject function. :)

Edited by Tut
Link to comment
  • Other Languages Moderators

Olá.

Você precisa criar o objeto client-side e usar um evento de renderização para atualizar a rotação dele a cada frame. Fiz um exemplo:

local object = createObject(1337, 0, 0, 3)
local objectRotation = 0

addEventHandler("onClientPreRender", root, function()
    if object then
        setElementRotation(object, 0, 0, objectRotation)
        objectRotation = objectRotation + 1
      
        if objectRotation >= 360 then
            objectRotation = 0
       	end
    end
end)

No exemplo acima, ele cria uma lixeira no meio de San Andreas (0, 0, 3) e deixa-o rotacionando.

Edited by andr0xy
Link to comment
  • 2 weeks later...
  • Other Languages Moderators

De nada :)

Fiz uma correção no código. Assim que der uma volta completa, 360 graus, a variável retorna ao valor inicial, que é 0. Pois se deixasse como estava, em algum momento a variável estaria com um valor tão absurdamente grande, que a rotação iria ficar incorreta, tremendo, voltando de posição.

Link to comment
  • 5 months later...
On 13/05/2021 at 18:13, androksi said:

Olá.

Você precisa criar o objeto client-side e usar um evento de renderização para atualizar a rotação dele a cada frame. Fiz um exemplo:

local object = createObject(1337, 0, 0, 3)
local objectRotation = 0

addEventHandler("onClientPreRender", root, function()
    if object then
        setElementRotation(object, 0, 0, objectRotation)
        objectRotation = objectRotation + 1
      
        if objectRotation >= 360 then
            objectRotation = 0
       	end
    end
end)

No exemplo acima, ele cria uma lixeira no meio de San Andreas (0, 0, 3) e deixa-o rotacionando.

ola tentei modificar seu codigo para quando o player dar o comando spawnar um objeto perto dele
e o objeto ficar rotacionando mais não esta funcionando poderia me auxiliar?

local objetoRotation = 0

function girar(thePlayer, cmd)
   local x, y, z = getElementPosition(thePlayer)
   local r, t, j = getElementRotation(thePlayer)
   local objeto = createObject(3095, x, y + 5, z, r, t, j)
   if objeto then
      setElementRotation(objeto, 0, 0, objetoRotation)
      objetoRotation = objetoRotation + 1

      if objetoRotation >= 360 then
         objetoRotation = 0
      end
   end
end
addCommandHandler("girar", girar)

 

Edited by SciptNovato
Link to comment

Olá, você precisa usar algum recurso para repetir este código. Ali no exemplo do Androksi ele utilizou o onClientPreRender.

Segue abaixo um exemplo de como esse seu código deveria ser para funcionar da maneira que você quer.

local object = false -- variável que armazenará o objeto ou o valor `false` para a verificação do comando 
local objectRotation = 0 -- rotação inicial do objeto 
local object_id = 1337 -- id do objeto que será criado 

local rotObject = function( ) -- função de rotação do objeto

    local pX, pY, pZ = getElementPosition( localPlayer )
    
    setElementPosition( object, pX, pY, pZ + 1 ) -- seta a posição do objeto para cima do player 
    setElementRotation( object, 0, 0, objectRotation ) -- seta a rotação do objeto 
    objectRotation = objectRotation + 1 -- aumenta a rotação do objeto
  
    if objectRotation >= 360 then -- verifica se a rotação chegou ao fim e reinicia 

        objectRotation = 0 

    end

end

local cdObject = function( ) -- cria e destroy o objeto

    if not object then
        
        local pX, pY, pZ = getElementPosition( localPlayer ) -- pega posição do jogador

        object = createObject( object_id, pX, pY, pZ  ) -- cria o objeto na posição do jogador 

        if object then  
        
            addEventHandler( 'onClientPreRender', root, rotObject ) -- adiciona o evento de render

        end 

    else 

        if isElement( object ) then 

            removeEventHandler( 'onClientPreRender', root, rotObject ) -- remove o evento de render 
            destroyElement( object ) -- destroi o objeto 
            object = false -- define a variável que armazena o objeto para false 

        end
        
    end    

end

addCommandHandler( 'objeto', cdObject ) -- adiciona o comando 

 

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...