Anuncios Google

Problema con imagenes en LUA

wenas
pos la cuestion esk yo no se muxo de lua pero llevo unos dias currandomelo y no lo llevo mal.
asta ahora e exo un "juego" si se puede llamar asi pork lo unico k e
exo es el menu una seccion de extras con historias armas... pero ahora
k m e puesto con el juego en si e llegadoa aser k el personaje se mueva
y conseguir crear blokes pero cuando pongo un bloke con la imagen de
una casa una imagen de fondo el personaje va muy pero k muy lento...
bueno aki dejo el codigo y las imagenes por si alguien m puede ayudar..

[quote]
--Creamos los Colores.
verde=Color.new(0,255,0)
blanco = Color.new(255,255,255)
Fondo = Image.load("opciones1.png")
--Creamos el personaje.
personaje1 = Image.load("personaje.png")
--Creamos el bloque.
bloque1 = Image.load("casa.png")
--Array del personaje.
Personaje = { x = 30, y = 100 }
--Definicion de variables.
personajeAltura = 32
personajeAnchura = 32
--Array del bloque, con sus tres elementos.
Bloque = {}
Bloque[1] = { x = 340, y = 1, Altura = bloque1:height(), Anchura = bloque1:width() }
--Funcion para mover el personaje por la pantalla.
function moverPersonaje()
pad = Controls.read()
if pad:left() then
Personaje.x = Personaje.x - 2
end
if pad:right() then
Personaje.x = Personaje.x + 2
end
if pad:up() then
Personaje.y = Personaje.y - 2
end
if pad:down() then
Personaje.y = Personaje.y + 2
end
end
--Funcion que comprueba si se produce alguna colision.
function comprobarColision(object)
if (Personaje.x + personajeAnchura > object.x) and (Personaje.x <
object.x + object.Anchura) and (Personaje.y + personajeAltura >
object.y) and (Personaje.y < object.y + object.Altura) then
Personaje.x = oldx
Personaje.y = oldy
end
end
--Bucle principal.
while true do
--Variables que almacenan la posicion del personaje al comienzo de cada bucle.
oldx = Personaje.x
oldy = Personaje.y
screen:clear()
--Comprobamos si hay movimiento.
moverPersonaje()
--Comprobamos si hay colisión para cada bloque.
comprobarColision(Bloque[1])

--Muestra los tres bloques en pantalla.

for a = 0, 14 do
for b = 0,8 do
--Muestra el personaje en pantalla.
screen:blit(Personaje.x,Personaje.y,personaje1)
screen:blit(Bloque[1].x,Bloque[1].y,bloque1)
screen:blit(480 * a, 272 * b, Fondo)

end
end

screen.waitVblankStart()
screen.flip()
end
[/quote]aki las imagenes correspondientes

http://img166.imageshack.us/img166/7848/personajelv9.png

http://img292.imageshack.us/img292/75/grassek6.png

http://img292.imageshack.us/img292/9035/casaoz0.th.png

 

 

A todo esto añado k tambien busco gente interesada pa formar un ekipo asi k si ai gente interesada k m lo digan


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.

otra pregunta mas

¿Que  juego intentas hacer? que se supe que tiene que hacer el personaje

ya lo e solucionado kitando

ya lo e solucionado kitando alguna cosilla y dejando solo los sceen:blit en coordenadas 0,0

muxas gracias pero ahora la imagen de fondo keda arriba y tapa al personaje y al bloke alguien sabe xk??

 

GRacias

Imagen de Guillermo_Cornielle

tengo par de preguntas

Ya vi tu codigo, ahoro respondeme esto:

La imagen de fondo que usas, es exactamenet de 480 x 272??, y la anchura y la altura que le estas dando al personaje, es la misma que tiene la imagen del personaje??

Ya me he topado con ese problema, y ese problema ocurre cuando le das la dimension incorrecta al personaje o al fondo, claro, de la forma que tu imprimes la imagen de fondo, pasa eso.

Por que no mejor usas screen:blit(0,0,fondo)

para imprimir el fondo en pantalla, tambien, puede ser que ya la memoria RAM de la psp no soporte tantas iamgenes asi que deberas usar varias sentencias nil.

Y creo que si pones esto ''collectgarbage()'' te ayudara a eso, creo, no lo he usado, peor creo que te ayudara. ponlo al final de todo.


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

TheGCProjects

e probao a cambiar el

e probao a cambiar el screen:clear() de sitio , poner System.memclean()  (k nom funciona), y cambiar  esta parte

(

for a = 0, 14 do
        for b = 0,8 do
                  screen:blit(Personaje.x,Personaje.y,personaje1)
                  screen:blit(Bloque[1].x,Bloque[1].y,bloque1)
            screen:blit(480 * a, 272 * b, Fondo)
        end
    end
)
fuera del bucle dentro del bucle pero antes k el screen:clear y nada....

 

no lo consigo pork va a trompicones....

otra pregunta

se podrian quitar estas dos líneas en la funcion de comprobacion no:

 Personaje.x = oldx
Personaje.y = oldy

Imagen de ZYX3D

Atención pregunta...

¿Cuántas veces necesitas poner el personaje en pantalla? 

Yo diría que una sola...

¿Cuántas veces lo estás poniendo?

112.

Lo mismo con el único bloque... así que parece que estás haciendo unas 222 operaciones gráficas de más. No es de extrañar que vaya lento: quita del bucle todo lo que no deba ir en el bucle. 


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

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

creo que puedes hacer una cosa

si el personaje te va muy lento puedes cambiar los valores en:

if pad:right() then
Personaje.x = Personaje.x + 2
end
if pad:up() then
Personaje.y = Personaje.y - 2
end
if pad:down() then
Personaje.y = Personaje.y + 2

--esos son los valores que tu le pones diciendo que cada vez que pulses los votenes de direccion el personaje se mueva dos coordenadas lo cual le da una velocidad si le dices al programa que cada vez que pulses un boton de direccion se mueva en vez de dos, tres o cuatro puedes hacer que vaya más rápido, ej.:

if pad:right() then
Personaje.x = Personaje.x + 3 (o 4)
end
if pad:up() then
Personaje.y = Personaje.y - 3 (o 4)
end
if pad:down() then
Personaje.y = Personaje.y + 3 (o 4) 

--si eso no te funciona puedes probar con las posiciones de screen:clear() porque eso lo que puede estar haciendo es que cada vez que muevas el personaje se haga una limpieza de pantalla y tendrá que volver a poner todo en la pantalla ralentizandolo todo. Si no pues no se a mi solo se me ocurre eso pero lo mejor es probar tu mismo con tus propias ideas.

Imagen de P22

Eso no serviria. Lo unico

Eso no serviria.

Lo unico que conseguiria seria que el personaje diera trompicones

y...

si cambia de posicion el screen:clear como dijiste tu antes.

podria estar eso ralentizandolo no?

Imagen de P22

No se pero me ha dicho

No se pero me ha dicho dark_naruto una funcion para limpiar la ram y eso podria arreglarlo

 System.memclean()

Saludos

Imagen de P22

No creo que te ayude pero

No creo que te ayude pero el screen:clear() creo que deberia ir al princvipio del bucle.

Saludos

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.