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!