Bueno, consegui la colision, pero ahora solo colisona en una cordenada en las de la tabla, pero en realidad las del script(las que en verdad uso) son otras...
El code lo dice todo:
------VARIABLES---- ------------------- ------------------- tclrs={} AstroT={} asb=0 tclrs[1]=color.new(255,0,0) tclrs[2]=color.new(0,0,255) tclrs[3]=color.new(0,255,0) AstroT[1]={smell=image.load("System/Recursos/Imagenes/smell.png"),w=0,h=0,x=100,y=100} AstroT[2]={mira=image.load("System/Recursos/Imagenes/mira.png"),x=100,y=100,w=0,h=0} AstroT[3]={fondo=image.load("System/Recursos/Imagenes/fondo.png")} AstroT[4]={smell2=image.load("System/Recursos/Imagenes/smell2.png"),w=0,h=0,vel=5,dir="r"} AstroT[5]={sdp=sound.load("System/Recursos/Music/Sn.wav")} AstroT[2].h=AstroT[2].mira:height() AstroT[2].w=AstroT[2].mira:width() AstroT[4].h=AstroT[4].smell2:height() AstroT[4].w=AstroT[4].smell2:width() AstroT[1].h=AstroT[1].smell:height() AstroT[1].w=AstroT[1].smell:width() ------FUNCIONES--- ------------------ ------------------ function movePad(object) if math.abs(controls.analogy())>20 then object.y=object.y+controls.analogy()/10 end if math.abs(controls.analogx())>20 then object.x=object.x+controls.analogx()/10 end end function moveF(object) if controls.up() then object.y=object.y-12 elseif controls.down() then object.y=object.y+12 elseif controls.left() then object.x=object.x-12 elseif controls.right() then object.x=object.x+12 end end function cl(ob1,ob2) if controls.press("cross") then sound.play(AstroT[5].sdp) if ob1.x+ob1.w >= ob2.x and ob1.x <= ob2.x +ob2.w and ob1.y + ob1.h >= ob1.y and ob1.y <= ob2.y + ob2.h then os.message("Prueba col") end end end
dofile("System/Recursos/Utl.lua") while true do controls.read() asb=asb+5 x=math.cos(math.rad(asb))*140 y=-math.sin(math.rad(asb))*140 AstroT[3].fondo:blit(0,0) AstroT[1].smell:blit(x+240,y+106) AstroT[4].smell2:blit(0,50) AstroT[2].mira:blit(AstroT[2].x,AstroT[2].y) screen.print(100,100,"Testeo Vbeta",tclrs[3]) movePad(AstroT[2]) moveF(AstroT[2]) cl(AstroT[2],AstroT[1]) if controls.press("cross") then sound.play(AstroT[5].sdp) end if controls.press("circle") then usb.on() end if controls.press("triangle") then usb.off() end if controls.press("triangle") then dofile("script.lua") end AstroT[2].x = math.min(math.max(0,AstroT[2].x), 480-AstroT[2].w/2) AstroT[2].y = math.min(math.max(0,AstroT[2].y), 272-AstroT[2].h/2) screen.flip() end
Editado: Actualize el UTL, así
------VARIABLES---- ------------------- ------------------- tclrs={} AstroT={} asb=0 x1=math.cos(math.rad(asb))*140 y1=-math.sin(math.rad(asb))*140 tclrs[1]=color.new(255,0,0) tclrs[2]=color.new(0,0,255) tclrs[3]=color.new(0,255,0) AstroT[1]={smell=image.load("System/Recursos/Imagenes/smell.png"),w=0,h=0,x=x1,y=y1} AstroT[2]={mira=image.load("System/Recursos/Imagenes/mira.png"),x=100,y=100,w=0,h=0} AstroT[3]={fondo=image.load("System/Recursos/Imagenes/fondo.png")} AstroT[4]={smell2=image.load("System/Recursos/Imagenes/smell2.png"),w=0,h=0,vel=5,dir="r"} AstroT[5]={sdp=sound.load("System/Recursos/Music/Sn.wav")} AstroT[2].h=AstroT[2].mira:height() AstroT[2].w=AstroT[2].mira:width() AstroT[4].h=AstroT[4].smell2:height() AstroT[4].w=AstroT[4].smell2:width() AstroT[1].h=AstroT[1].smell:height() AstroT[1].w=AstroT[1].smell:width() ------FUNCIONES--- ------------------ ------------------ function movePad(object) if math.abs(controls.analogy())>20 then object.y=object.y+controls.analogy()/10 end if math.abs(controls.analogx())>20 then object.x=object.x+controls.analogx()/10 end end function moveF(object) if controls.up() then object.y=object.y-12 elseif controls.down() then object.y=object.y+12 elseif controls.left() then object.x=object.x-12 elseif controls.right() then object.x=object.x+12 end end function cl(ob1,ob2) if controls.press("cross") then sound.play(AstroT[5].sdp) if ob1.x+ob1.w >= ob2.x and ob1.x <= ob2.x +ob2.w and ob1.y + ob1.h >= ob1.y and ob1.y <= ob2.y + ob2.h then os.message("Prueba col") end end end
Pero ahora quien sabe donde fue a dar la colision :(.
Probe está funcion casera de DEV:
------VARIABLES---- ------------------- ------------------- tclrs={} AstroT={} asb=0 x1=math.cos(math.rad(asb))*140 y1=-math.sin(math.rad(asb))*140 tclrs[1]=color.new(255,0,0) tclrs[2]=color.new(0,0,255) tclrs[3]=color.new(0,255,0) AstroT[1]={smell=image.load("System/Recursos/Imagenes/smell.png"),w=0,h=0,x=x1,y=y1} AstroT[2]={mira=image.load("System/Recursos/Imagenes/mira.png"),x=100,y=100,w=0,h=0} AstroT[3]={fondo=image.load("System/Recursos/Imagenes/fondo.png")} AstroT[4]={smell2=image.load("System/Recursos/Imagenes/smell2.png"),w=0,h=0,vel=5,dir="r"} AstroT[5]={sdp=sound.load("System/Recursos/Music/Sn.wav")} AstroT[2].h=AstroT[2].mira:height() AstroT[2].w=AstroT[2].mira:width() AstroT[4].h=AstroT[4].smell2:height() AstroT[4].w=AstroT[4].smell2:width() AstroT[1].h=AstroT[1].smell:height() AstroT[1].w=AstroT[1].smell:width() ------FUNCIONES--- ------------------ ------------------ function movePad(object) if math.abs(controls.analogy())>20 then object.y=object.y+controls.analogy()/10 end if math.abs(controls.analogx())>20 then object.x=object.x+controls.analogx()/10 end end function moveF(object) if controls.up() then object.y=object.y-12 elseif controls.down() then object.y=object.y+12 elseif controls.left() then object.x=object.x-12 elseif controls.right() then object.x=object.x+12 end end function cl(ob1,ob2) if controls.press("cross") then sound.play(AstroT[5].sdp) if ob1.x+ob1.w >= ob2.x and ob1.x <= ob2.x +ob2.w and ob1.y + ob1.h >= ob1.y and ob1.y <= ob2.y + ob2.h then os.message("Prueba col") end end end function colision(o1,o2) if controls.press("cross") then sound.play(AstroT[5].sdp) if o1.x+o1.w >= o2.x and o1.x <= o2.x+o2.w and o1.y+o1.h >= o2.y and o1.y <= o2.y+o2.h then screen.print(10,10,"OBJ 1 DENTRO DE OBJ 2"); end end end
Y ps si ase la clision pero en la cordenada 100, o tengo que hacer muchas colisones en varias cordenadas, o como, esque necesito que colisione cuando la mira este dentro del objeto que está girando..
En tus tablas AstroT no
En tus tablas AstroT no tienes y ni x, y los estás usando en esa función de colisión. Simplemente modifícala, para que el lugar de tratar de usar x,y con el objeto1 usen w,h del mismo objeto (como con el objeto2)
perdona el of-topic :p
perdona el of-topic :p pareses saver mucho sobre lua, porque no te dedicas a un proyecto en lua (porque hasta donde se, no he visto ningun homebrew tullo, talves seas un excelente coder)
ya, es el unico of topic, lo siento
No tiene mucho tiempo ...
No tiene mucho tiempo ... xD
Hace lo que puede para conectarse de vez en cuando , ya que tambien está en la universidad ... xD
Se lo dije hace tiempo yo , jajaja
Saludos ;)
Isaac Newton: "Lo que sabemos es una gota de agua; lo que ignoramos es el océano".
Eh?
Bueno, no entendi porque en el objeto 2 SI COMPARA CON X, y no se si pueda modificarla apra que compare solo w y h o.o
No espera... no era eso. El
No espera... no era eso. El verdadero problema es que la condición de colisión pusiste obj1.y en lugar de ob1.y :P
Listo
Listo me sirvio, sabes, muchas gracias por la ayuda, ya te daré un "Regalillo" cuando pueda, siempre me ayudas, no solo a mi, a la Scene en absoluto ;).
Una ultima cosa, como hago que colisone pero en toda la cordenada del REDONDEOO del objeto, esque solo colisiona en las cordenadas 100 y 100 pero en realidad las cordenadas X y Y redondean, en pocas palbras, las cordenadas de las tablas no son en realidad las que uso en el script ;(
Claro, tienes que poner "x" y
Claro, tienes que poner "x" y "y" en la tabla y poner la colision como antes.
Sí
Sí, solo que si hago eso, colisona en als cordenadas X y Y, pero en realidad las cordenadas X y Y son otras que redondean..