Anuncios Google

Cargar Sprites!! ayuda

Tengo una duda y es que no se como se cargan sprites, he estado mirando pero solo te dicen como dibujarlos en la pantalla, pero yo lo que quiero es cargarlos como si cada uno fuera una imagen, no se si me explico bien.

Saludos y Gracias.


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 CkFra

Si quieres

usar los sprites sólo en la plantilla, esperate unos días que estoy haciendo un tutorial con eso mismo.

Saludos ;) 

Imagen de Arkanist

Ok.

Aunque ya llegué a entender como cargar sprites en una sola plantilla, ese tutorial irá muy bien, pues la gente que empieza a programar y necesita usar sprites en una plantilla, al principio es bastante dificil de comprender como hacerlo sin dividir las imágenes.

Esperare tu tutorial ;).

Saludos

Imagen de markef

Como..

dice Superspiru mira ese tutorial, de todas maneras siempre has de empezar cargando las imagenes...

s1 = Image.load("imagenes/sprite1.png")
s2 = Image.load("imagenes/sprite2.png")
s3 = Image.load("imagenes/sprite3.png")

Esto es un ejemplo, puedes cargar tantas como quieras...

Después abajo escribes el código para darle movimiento, y para finalizar cierras el bucle principal.

Todo eso miralo en los tutos de aquí scenebeta, sino también puedes buscar en páginas externas a esta web por la madre Google.

Saludos! ;)


Dicen que soy programador... Eso dicen.

Imagen de superspiru

pasate por AQUI lo mismo te

pasate por AQUI lo mismo te ayuda en algo

Imagen de Arkanist

Ese tutorial

Me ayudo mucho,pero no es lo que busco, yo quiero cargar los sprites de una sola imagen. Me preguntaba si habria una opcion por ejemplo  de cargar una parte de la imagen, ya que solo he encontrado como "dibujar" una parte de la imagen, y con ello no creo que me sirva. No se si me habré explicado bien.

Saludos y Gracias.

Imagen de ZYX3D

Es simple

Cargas toda la imagen, una sola vez, y luego muestras sólo la parte que te interesa. Tan simple como eso. (Así funcionan las hojas de sprites). Esto tiene la ventaja que sólo necesitas cargar una vez la imagen.

Es que, para cargar varias veces una imagen a trozos, ya haces varias imágenes distintas...


Strength is irrelevant. Resistance is future. We wish to improve ourselves.

La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.

Imagen de Arkanist

Pero

lo que no se como hacer, es que en los sprites como en el tutorial, se le asigna una "palabra" a cada sprite: s1f,s2f,s3f etc.

pero como se puede coger una parte de la imagen para asignarla a una variable?? es que yo solo se coger partes de una imagen para dibujarlas (screen:blit(10, 20, prueba, 15, 15, 30, 30)) Pero para asignare a una variable una parte como se haria? s1f = imagen(15,15,30,30)??? es que es esta la pregunta. 

Saludos y Gracias una vez mas.

Imagen de ZYX3D

Y ¿para qué lo necesitas?

Esa es la pregunta del millón... ¿para qué necesitas asignar una variable a cada parte del sprite?

Lo único que necesitas es mostrar una parte de la imagen... en todo caso, lo suyo sería guardar las coordenadas a mostrar...

Pero vaya, en todo caso, tú mismo (casi) das la respuesta: creas una variable con una imagen en blanco, y luego le haces un nombreImagen:blit(10, 20, prueba, 15, 15, 30, 30)... y hala, ya está cargada esa parte de la imagen maestra/hoja de sprites en la variable/imagen menor.


Strength is irrelevant. Resistance is future. We wish to improve ourselves.

La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.

Imagen de Arkanist

¡Dios Mio! que cegado he

¡Dios Mio! que cegado he estado!!xD

Ahora me doy cuenta, he tenido la respuesta delante mio y como queria hacer otra cosa, no lo he visto.

Gracias y Un Saludo.

Imagen de ZYX3D

Suele pasar :D

Todos hemos tenido el "momento palmetazo en la frente" varias veces :D :D

En cualquier caso, siempre es bueno intentar evitar trabajar directamente con imágenes... Quieras que no, para esto, por ejemplo, no necesitas más que un juego de 4 enteros, un par de bytes como mucho, para cualquier tamaño de imagen...

...mientras que si la asignas como variable independiente y haces una copia, para una miserable imagen de 20x20 y sin transparencia, ya necesitas (Lua, en realidad) una tabla de 400 registros de 24 bits cada uno, 32 si hay transparencia... Incluso si vas a trabajar directamente sobre la imagen, sale más a cuenta emplear "datos virtuales" (almacenar los cambios en una tabla aparte) y aplicarlos después, que hacer una copia y trabajar sobre ella. Se nota la diferencia, sobre todo en Lua, que tampoco es tan bueno como eso trabajando con imágenes...

A disponer :) 


Strength is irrelevant. Resistance is future. We wish to improve ourselves.

La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.

Imagen de Arkanist

Nada..

No se si lo he entendido mal pero no me sale, he provado de muchas formas.

he puesto por ejemplo en la funcion de movimiento

function sprd()
if pasosd >= 0 and pasosd < 10 and pad:right() then
screen:blit(S[1].x,S[1].y,imagensprite,7,99,26,142)
end
if pasosd >= 10 and pasosd < 20  and pad:right() then
screen:blit(S[1].x,S[1].y,imagensprite,39,100,58,142)
end
if pasosd >= 20 and pasosd < 30 and pad:right() then
screen:blit(S[1].x,S[1].y,imagensprite,71,99,90,142)
end
if pasosd >= 30 and pasosd < 40 and pad:right() then
screen:blit(S[1].x,S[1].y,imagensprite,102,100,122,142)
end
if pasosd >= 40 then
pasosd=0
end
end

eso para cada direccion, pero me da muchos problemas.

Cualquier ayuda se agradece mucho ya que no he acabado de entender esto cuando pensaba que si.

Saludos.

Imagen de ZYX3D

Estás cambiando el ancho todo el rato...

Y vaya pedazo de sprite si mide 142 píxeles de alto... 

Los argumentos (por lo menos en el Player que uso... y creo que esto no varía mucho) son:

image:blit(x, y, origen, [xOrigen, yOrigen, ancho, alto], [alpha = verdadero]) 

...para seleccionar sólo un trozo de dimensiones "ancho"X"alto", a partir de la posición "xOrigen/yOrigen" de la imagen "origen"...

Entonces, poniéndolo en ejemplo para que quede más claro... el sprite siempre será de más o menos el mismo tamaño, ¿no?, pongamos, por decir algo, que siempre es de 32 de ancho por 48 de alto (para distinguir las coordenadas). Y supondemos, para simplificar un pelín, que los sprites están perfectamente puestos en "cajas" dentro de la imagen...

Para la primera caja (empieza en 0,0 de la imagen original), sería:

screen:blit(S[1].x, S[1].y, imagensprite, 0,0, 32, 48)

La segunda caja (primera fila, segunda columna):

 screen:blit(S[1].x, S[1].y, imagensprite, 32,0, 32, 48)

La segunda fila, primera columna:

screen:blit(S[1].x, S[1].y, imagensprite, 0,48, 32, 48)

Y así sucesivamente... fíjate que en tu código estás cambiando todo el rato el ancho del sprite.

Por otra parte, te diría que anidaras los ifs y que usaras algún else... Fíjate que si "pasosd" está entre 30 y 40, le obligas a hacer 4 comprobaciones para el resultado, mientras que si es de sólo 0-10 basta la primera, y el resto sobra... y todos necesitan el pad:right(), así que puedes ahorrarte tiempo con cosas como:

if pad:right() then

     if pasosd<20 then

          if pasosd>=10 then

         -- pasosd está entre 10 y 19,99999999999...

          else

          -- pasosd está entre 0 y 9,999999999999...

          end 

     else

     -- repetir la estructura anterior... 

     end 

end 

...supongo que ya entenderás la estructura... lo que consigues con esto es un código de ejecución más estable, y probablemente incluso más rápido... y en cualquier caso, más comprensible, ya que con esta estructura de árbol puedes localizar más exactamente cada etapa del código, y se ejecuta sólo lo que hay que ejecutar.


Strength is irrelevant. Resistance is future. We wish to improve ourselves.

La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.

Imagen de Arkanist

Una cosa que no tiene nada que ver...

Tengo un juego muy avanzado pero tengo algun problema. Por ejemplo, tengo un menu que me funciona correctamente, pero cuando haces una accion (mirar las instrucciones, te matan en el juego o algo) y quieres volver al menu (tengo if pad:start then dofile ("menu.lua") se bloquea el juego.

Alguna sugerencia?? :S

Saludos y Gracias

Imagen de Guillermo_Cornielle

te entiendo

Bueno, te dire que no se exactamente bien como hacerlo, puedes cargar la imagenes de la manera que te dijo el usuario de arriba osea:

miImagen= Imagen.load("sprites.png")

puedes cargar la imagen normalmente, pero para hacer que se haga el movimiento de sprites, creo que a la hora de que lo vallas a dibujar en pantalla tienes que darle los pixeles de comienzo y los pixeles del final para eso, claro, antes debes hacer todas las funciones de su movimiento.

No se explicarlo muy bien, peroi en el tuto de los sprites, en el link que te dio superspiru, hay  un usuario que dio un ejemplo de como hacerlo de esa forma que quieres, pasate por alli y buscalo, el usuario se llama carlos o algo asi.

Suerte. 

 


Manual del Perfecto Votante Para un voto libre y justo!.

TheGCProjects

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.