Anuncios Google

[MicroLua DS]Error con las colisiones

Estoy programando un pong para NDS en LuaDEV, esto... MicroLua DS y cuando lo pruebo da un error con la función que comprueba si hay colisión, agradecería que algún usuario me ayudara.

 

Mi code:

function Colision(obj1,obj2)
	if obj1.x+obj1.w>obj2.x
	and obj1.x<obj2.x+obj2.w
	and obj1.y+obj1.h>obj2.y
	and obj1.y<obj2.y+obj2.h then
		return true
	end
return false
end
 
 
 
 
 
function Juego(velocidad)
 
varx = 1
vary = 1
objx = 215
objy = 111
 
Bar = 5
puntos = 0
 
while true do 
Controls.read()
 
screen.drawGradientRect(SCREEN_DOWN,0,0,256,192,Color.new(31,0,0),Color.new(0,31,0),Color.new(0,0,31),Color.new(31,31,31))
screen.drawGradientRect(SCREEN_UP,0,0,256,192,Color.new(31,0,0),Color.new(0,31,0),Color.new(0,0,31),Color.new(31,31,31))
 
if velocidad == 2 then
screen.blit(SCREEN_UP,objx,objy,bola.facil)
elseif velocidad == 3 then
screen.blit(SCREEN_UP,objx,objy,bola.normal)
elseif velocidad == 4 then
screen.blit(SCREEN_UP,objx,objy,bola.dificil)
elseif velocidad == 5 then
screen.blit(SCREEN_UP,objx,objy,bola.hardcore)
end
 
screen.blit(SCREEN_UP,Bar,188,barra.pred)
if puntos == 1 then
screen.print(SCREEN_DOWN,2,2,"Has perdido la bola "..puntos.." vez",Color.new(0,0,31))
elseif puntos > 1 then
screen.print(SCREEN_DOWN,2,2,"Has perdido la bola "..puntos.." veces",Color.new(0,0,31))
end
objx = objx + (velocidad * varx)
objy = objy + (velocidad * vary)
 
 
if velocidad == 2 then 
 
 
if objy > 192 and not Colision(bola.facil,barra.pred) then 
puntos = puntos + 1
objx = 215
objy = 111
end
 
 
elseif velocidad == 3 then
 
 
if objy > 192 and not Colision(bola.normal,barra.pred) then 
puntos = puntos + 1
objx = 215
objy = 111
end
 
 
elseif velocidad == 4 then
 
 
if objy > 192 and not Colision(bola.dificil,barra.pred) then 
puntos = puntos + 1
objx = 215
objy = 111
end
 
 
elseif velocidad == 5 then
 
 
if objy > 192 and not Colision(bola.hardcore,barra.pred) then 
puntos = puntos + 1
objx = 215
objy = 111
end
 
end
 
if objx <= 0 then varx = 1
elseif objx >= 256 then varx = - 1 end
 
if objy <= 0 then vary = 1
elseif objy >= 192 then vary = - 1 end
 
 
 
if Keys.held.Right and Bar < 256 then Bar = Bar + 3 end
if Keys.held.Left and Bar > 0 then Bar = Bar - 3 end
 
 
render()
end
 
 
 
end
 
 
 
bola = {}
bola.facil = Image.load("bola/facil.png",RAM)
bola.normal = Image.load("bola/normal.png",RAM)
bola.dificil = Image.load("bola/dificil.png",RAM)
bola.hardcore = Image.load("bola/hardcore.png",RAM)
barra = {}
barra.pred = Image.load("barra/pred.png",RAM)
 
 
 
Color1 = Color.new(31,0,0)
Color2 = Color.new(0,31,0)
Texto = { }
Texto[1] = "Jugar modo facil"
Texto[2] = "Jugar modo hardcore"
Texto[3] = "Apagar la NDS"
Sel = 1
 
dofile("mods/modLoader.lua")
 
 
 
 
 
while true do
Controls.read()
screen.drawGradientRect(SCREEN_DOWN,0,0,256,192,Color.new(31,0,0),Color.new(0,31,0),Color.new(0,0,31),Color.new(31,31,31))
screen.print(SCREEN_UP,10,10,"LuaPong Creado por RedHunter", Color.new(31,31,31))
screen.print(SCREEN_UP,10,30,"Para NDS.SceneBeta.com",Color.new(0,31,0))
screen.print(SCREEN_UP,30,50,"Versión 1.00",Color.new(0,31,0))
 
for i=1,3 do
screen.print(SCREEN_DOWN, 10, 10*i, Texto[i], Color1)
if Sel == i then
screen.print(SCREEN_DOWN, 10, 10*i, Texto[i], Color2)
end
end
if Keys.newPress.Down then
Sel = Sel + 1
elseif Keys.newPress.Up then
Sel = Sel - 1
end
if Sel > 3 then
Sel = 1
elseif Sel < 1 then
Sel = 3
end
if Keys.newPress.A and Sel == 1 then Juego(2) end
if Keys.newPress.A and Sel == 2 then Juego(5) end
if Keys.newPress.A and Sel == 3 then os.exit() end
 
 
render()
end

 

El menú esta sin acabar pero lo que me interesa ahora es esa colisión.

 

Saludos y gracias por intentar ayudarme!


Anuncios Google