Anzo

Precionar 'bindKey' varias veces

Recommended Posts

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.

Share this post


Link to post

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)

Share this post


Link to post

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:

Share this post


Link to post

 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

Share this post


Link to post

@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

Share this post


Link to post

@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.

Share this post


Link to post
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

Share this post


Link to post

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

Share this post


Link to post
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.

Share this post


Link to post

  • Recently Browsing   0 members

    No registered users viewing this page.