Jump to content

Precionar 'bindKey' varias veces


Anzo

Recommended Posts

Posted

Una pregunta un poca tonta, pero en fin. Mi problema es éste:

function key()
	setElementPosition(theObject, x+1,y,z)
end
for i,v in ipairs(getElementsByType("player")) do
	bindKey(v,"w","down",key)
end

El objeto se mueve hacia adelante, pero solo una vez, o sea, preciono 'w' una vez y se mueve, pero si preciono la tecla de nuevo no pasa nada, no sé si es porque estoy haciendo un for para sacar al jugador, pero si pongo ' source ' me da error.

Posted

Estás setteando la posición del objeto sumándole 1 a su valor x inicial, y eso lo cumple siempre. Lo que pasa es que debes actualizar la posición, hazlo así:

 

local x, y, z = getElementPosition (objeto)

setElementPosition (objeto, x+1, y, z)

Posted (edited)

Disculpa por no contestar antes, pero tuve un problema con la internet. 

No creo que funcione porque  ya tengo un x, y, z = getElementPosition(player), solo que esta en otra función, voy a probar poniéndolo en la misma función cuando este en la pc. (si, el x, y, z en la otra función es global, así que me debería dejar usarlo también en esa función, de todas formas probaré) 

Edited by Anzo
Interner c:
Posted (edited)

 function key(thePlayer)

x, y, z = getElementPosition(thePlayer)

         setElementPosition(thePlayer, x+1, y, z)

end

for i, v in ipairs (getElementsByType("player")) do

     bindKey(v, "w", "down", key)

end

Edited by Mauro.e
fix
Posted (edited)

@Mauro.e x, y, z lo pones como variable global, eso está mal. Y aparte, estás moviendo al jugador... (?

function doMove( player )
	local x, y, z = getElementPosition(player)
    setElementPosition( objeto, tonumber(x)+1, tonumber(y), tonumber(z) )
end


local players = getElementsByType( 'player' )
for i=1, #players do
	bindKey( players[i], "w", "down", doMove )
end

 

Edited by aka Blue
Posted (edited)
19 minutes ago, Mauro.e said:

@aka Blue si, olvide de poner el x, y, z en variable local. respecto al jugador lo entendí como que el mismo quería moverse ya que no vi ningún tipo objeto al cual mover.

Para que quiero mover al jugador con la 'w'(?

 

31 minutes ago, aka Blue said:

@Mauro.e x, y, z lo pones como variable global, eso está mal. Y aparte, estás moviendo al jugador... (?


function doMove( player )
	local x, y, z = getElementPosition(player)
    setElementPosition( objeto, tonumber(x)+1, tonumber(y), tonumber(z) )
end


local players = getElementsByType( 'player' )
for i=1, #players do
	bindKey( players[i], "w", "down", doMove )
end

 

Gracias. Se puede hacer que se mueva para donde estes mirando? yo use Matrix para que el objeto se cree siempre donde este, pero no veo algo como Matrix.setPosition 

Edited by Anzo
Posted (edited)

Para hacer eso lo mejor que creo que podrías hacer es hacerlo client-side con la función getCameraMatrix y pasar los valores que te devuelve a server-side creando el objeto.

PD: Pone shared, pero como pone en la wiki, la función server-side devuelve el último setCameraMatrix establecido en el servidor.

Edited by aka Blue
Posted
Just now, aka Blue said:

Para hacer eso lo mejor que creo que podrías hacer es hacerlo client-side con la función getCameraMatrix y pasar los valores que te devuelve a server-side creando el objeto.

Voy a probar más tarde con eso.

  • Recently Browsing   0 members

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