Anuncios Google

Posiciones del jugador

Hola! ^^
Estoy haciendo un juego de plataformas pero algo me sale mal cuando pruebo de hacer que cuando pulse a la derecha, el tio mire a la derecha y avance a la derecha y lo mismo con la izquierda. Este es el codigo que tengo, he probado de todo.
[Os pongo las ayudas apra que veais que es cada cosa ok?]

-- Imagenes del Jugador, uno mirando a la derecha (right) y otro a la izquierda (left)

right = Image.load("images/samus/right.png")
anchoPantalla = 480 - right:width()
altoPantalla = 272 - right:width()
left = Image.load("images/samus/left.png")
anchoPantalla = 480 - left:width()
altoPantalla = 272 - left:width()

-- La tabla del jugador. En 'position' carga la imagen de cada posicion.

Player = {}
 Player[1] = { position = right , x = 50 , y = 127 }
 Player[2] = { position = left , x = Player[1].x , y = Player[1].y }

-- Codigo del movimiento. El if que esta dentro del otro if hace (en teoria) que cambie el gráfico per no funciona.

while true do
    screen:clear()
    screen:blit(0,50,mapa1)
    screen:blit(Player[1].x,Player[1].y,Player[1].position)
    pad = Controls.read()
 
    if pad:right() and Player[1].x < anchoPantalla then
        if pad:right() and Player.position == Player[2].position then
            Player[2].position = Player[1].position
        end
        Player[1].x = Player[1].x + 3
    end
    if pad:left() and Player[1].x > 0 then
        if pad:left() and Player.position == Player[1].position then
            Player[1].position = Player[2].position
        end
        Player[1].x = Player[1].x - 3
    end
 
    screen.waitVblankStart()
    screen.flip()
    oldpad = pad
end
end

~ Krick ~


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ELeNDeR

Mirando el código así por

Mirando el código así por encima veo algunos fallos de sintaxis:

"if pad:right() and Player[1].x 0 then" -> falta "=="

"if pad:left() and Player.position == Player[1].position then" -> falta [numero] después de Player.

Prueba a cambiar eso y nos comentas, ¿ok? 

en Player.position quiero

en Player.position quiero poner Posicion actual, por ejemplo Player[x].position, calquier de los dos peude ser, como hago eso?

Hola. NO entiendo mucho de

Hola.
NO entiendo mucho de programación (mas bien lo justo xD)

preo creo que no funciona por lo siguiente.
primero compruebas que se mueve a right y SI se cumple entonces compruebas que se mueva a left. Esta ultima es imposible que se cumpla si la dejas asi anidada.
Ano ser que te hayas confundido y quisieras comprobar los dos en la misma direccion.
Tambien hay otro error despues del pad:left pero como nunca se cumple no te ha dado el error
Player.position == Player[1].position
?? creo que te falta el numero en el primero no?

no me hagas mucho caso, solo el justo para leer esto y reflexionar un poquito, jeje
un saludo
Spirax

Es que el IF dentro del IF

Es que el IF dentro del IF (que despues compruebe) lo puse pk ya probe todo.
Falta parte del codigo, de lo que se mueve a la izquierda. Es lo mismo pero cambiando las posiciones right por left i algunos numeros del Player[x].position

Imagen de NITEMAN

No tengo ni idea de lua...

Pero la comprobacion correcta sería (escrito en pseudocodigo):
si pad izquierda entonces
  si mira izquierda entonces
    mover izquierda
  sino
    mirar izquierda
  fin si
sino
  si mira derecha entonces
    mover derecha
  sino
    mirar derecha
  fin si
fin si

Explicacion: Primero has de evaluar una unica condición (un estado) bien la dirección que se ha pulsado o bien hacia donde está mirando el personaje, pero solo una cosa. Una vez entras por una rama del condicional, en este caso has detectado que se pulsa izquierda por ejemplo, compruebas el otro estado y actuas en función del mismo.

Espero haberte ayudado, aunque repito que no tengo ni idea de lua.

Salu2 


Convierte en Vampiro O Hombre Lobo


"El paraí­so a mi derecha, el infierno a mi izquierda y el ángel de la muerte tras de mi."

Quiero probar esto pero

Quiero probar esto pero tengo una duda:
| Si jugador pulsa derecha (mas lo del ancho de pantalla)
| Si posición actual = Posicion Derecha
| Mover jugador a la derecha
| sino
| Posicion Izquierda cambiar a Posicion derecha
| fin
| fin
| Si jugador pulsa izquierda (mas lo del ancho de pantalla)
| Si posición actual = Posicion izquierda
| Mover jugador a la izquierda
| sino
| Posicion derecha cambiar a Posicion izquierda
| fin
| fin

Mi duda es, como hago la posicion actual? La posicion esta dentro de la tabla Player, en Player[1].position mira a la derecha y en Player[2].position mira a la izquierda. ¿Como hago lo de poner Player[posicion actual].position, o algo aprecido que haga lo mismo?

Imagen de NITEMAN

Usa una variable...

O bien añade un elemento "seleccionado" de tipo booleano al array... eso debería solucionar tus problemas y así siempre sabrías que imagen mostrar.

Salu2 


Convierte en Vampiro O Hombre Lobo


"El paraí­so a mi derecha, el infierno a mi izquierda y el ángel de la muerte tras de mi."

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.