El codigo esta para lua hm pero si tienes el DEV deberas cambiar las funciones
--Colisiones. 05/06/06
--Creamos los Colores. verde=Color.new(0,255,0) blanco = Color.new(255,255,255)
--Creamos el personaje. personaje1 = Image.createEmpty(32,32) personaje1:clear(blanco)
--Creamos el bloque. bloque1 = Image.createEmpty(32,32) bloque1:clear(verde)
--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 = 100, y = 80, Altura = bloque1:height(), Anchura = bloque1:width() } Bloque[2] = { x = 300, y = 30, Altura = bloque1:height(), Anchura = bloque1:width() } Bloque[3] = { x = 200, y = 58, 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 - 1 end if pad:right() then Personaje.x = Personaje.x + 1 end if pad:up() then Personaje.y = Personaje.y - 1 end if pad:down() then Personaje.y = Personaje.y + 1 end end
--Funcion que comprueba si se produce alguna colisión. 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()
moverPersonaje()
--Comprobamos si hay colisión para cada bloque. comprobarColision(Bloque[1]) comprobarColision(Bloque[2]) comprobarColision(Bloque[3])
--Muestra el personaje en pantalla. screen:blit(Personaje.x,Personaje.y,personaje1)
--Muestra los tres bloques en pantalla. for a = 1,3 do screen:blit(Bloque[a].x,Bloque[a].y,bloque1) end
es HM ya que no es mi codigo es de un tuto, te lo pongo mejor ahora mismo:
--Colisiones. 05/06/06--Creamos los Colores.
verde=Color.new(0,255,0)
blanco = Color.new(255,255,255)--Creamos el personaje.
personaje1 = Image.createEmpty(32,32)
personaje1:clear(blanco)--Creamos el bloque.
bloque1 = Image.createEmpty(32,32)
bloque1:clear(verde)--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 =100, y =80, Altura = bloque1:height(), Anchura = bloque1:width()}
Bloque[2]={ x =300, y =30, Altura = bloque1:height(), Anchura = bloque1:width()}
Bloque[3]={ x =200, y =58, 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 - 1endif pad:right()then
Personaje.x = Personaje.x + 1endif pad:up()then
Personaje.y = Personaje.y - 1endif pad:down()then
Personaje.y = Personaje.y + 1endend--Funcion que comprueba si se produce alguna colisión.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
endend--Bucle principal.whiletruedo-- Variables que almacenan la posicion del personaje al comienzo de cada bucle.
oldx = Personaje.x
oldy = Personaje.y
screen:clear()
moverPersonaje()--Comprobamos si hay colisión para cada bloque.
comprobarColision(Bloque[1])
comprobarColision(Bloque[2])
comprobarColision(Bloque[3])--Muestra el personaje en pantalla.
screen:blit(Personaje.x,Personaje.y,personaje1)--Muestra los tres bloques en pantalla.for a =1,3do
screen:blit(Bloque[a].x,Bloque[a].y,bloque1)end
screen.waitVblankStart()
screen.flip()end
Colisiones, es tu solucion
El codigo esta para lua hm pero si tienes el DEV deberas cambiar las funciones
--Colisiones. 05/06/06
--Creamos los Colores.
verde=Color.new(0,255,0)
blanco = Color.new(255,255,255)
--Creamos el personaje.
personaje1 = Image.createEmpty(32,32)
personaje1:clear(blanco)
--Creamos el bloque.
bloque1 = Image.createEmpty(32,32)
bloque1:clear(verde)
--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 = 100, y = 80, Altura = bloque1:height(), Anchura = bloque1:width() }
Bloque[2] = { x = 300, y = 30, Altura = bloque1:height(), Anchura = bloque1:width() }
Bloque[3] = { x = 200, y = 58, 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 - 1
end
if pad:right() then
Personaje.x = Personaje.x + 1
end
if pad:up() then
Personaje.y = Personaje.y - 1
end
if pad:down() then
Personaje.y = Personaje.y + 1
end
end
--Funcion que comprueba si se produce alguna colisión.
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()
moverPersonaje()
--Comprobamos si hay colisión para cada bloque.
comprobarColision(Bloque[1])
comprobarColision(Bloque[2])
comprobarColision(Bloque[3])
--Muestra el personaje en pantalla.
screen:blit(Personaje.x,Personaje.y,personaje1)
--Muestra los tres bloques en pantalla.
for a = 1,3 do
screen:blit(Bloque[a].x,Bloque[a].y,bloque1)
end
screen.waitVblankStart()
screen.flip()
end
Este es DEV o HM
Y podrìas poner el code con la opcion de codigo porfa.
vamos a ver
es HM ya que no es mi codigo es de un tuto, te lo pongo mejor ahora mismo: