Hola!:
BuenO estoy programando y quiero que cuando el objeto bola1 colisione(choque) con el objeto porteria aparesca un os.message.
Pero a la hora de que presiono X y se encuentran o por sí decirlo choqa la bola 1 con la porteria no aparece nada :S.
Aqui mi code:
--Nivel 1 --Tablas,cargo de imagennes y variables bola1 = {img = image.load("bolas/bola1.png"),x=436,y=136,w=50,h=50} porteria = {img = image.load("porterias/porteria1.png"),x1=0,y1=0,x=0,y=0,x2=0,y2=272,dir="d",w=80,h=44} blanco = color.new(255,255,255) --Funciones function colision(object1,object2) if object1.x+object1.w >= object2.x and object1.x <= object2.x+object2.w and object1.y+object1.h >= object1.y and object1.y <= object2.y+object2.h then screen.print(100,100"Chocaste, pasa al siguiente nivel",blanco) end end function move(object,vel) if object.dir=="r" then object.x=object.x+vel elseif object.dir=="l" then object.x=object.x-vel elseif object.dir=="u" then object.y=object.y-vel elseif object.dir=="d" then object.y=object.y+vel end if object.dir=="r" and object.x>=object.x2+1 then object.dir="l" end if object.dir=="l" and object.x<=object.x1-1 then object.dir="r" end if object.dir=="d" and object.y>=object.y2+1 then object.dir="u" end if object.dir=="u" and object.y<=object.y1-1 then object.dir="d" end end function dispara() if controls.press("cross") then bola1.x=bola1.x-8 end end function moverbola() if controls.up() then bola1.y=bola1.y-4 end if controls.down() then bola1.y=bola1.y+4 end end --Bucle Principal while true do controls.read() porteria.img:blit(porteria.x,porteria.y) bola1.img:blit(bola1.x,bola1.y) moverbola() move(porteria,5) dispara() colision(bola1,porteria) if controls.press("start") then causaerror() end screen.flip() end
Saludos y gracias de antemano (:.
Ahora lo he intentando asi, pero nada solo se ve la bola encima de la porteria, y nada no aparece nada S:
Creo que y alo ahn cerrado, Deviante si ves mi respuesta enviame un MP para responderme..
function
Fijate en tu funcion original, y fijate en la que te puse yo.
Tu code mira que el objeto esté DENTRO del otro objeto. (a parte, pusiste mal una coordenada). Pero la porteria mide menos de alto, que la bola. Literalmente imposible que te cumpla la función, nunca te va a detectar colision por ningun lado.
Fijate mi función. Te dice si está dentro, o tocando en cualquier punto.
Las cosas si se pueden hacer, otra cosa es que desistas antes de conseguirlo :P
Actualmente desarrollando nuestra web y UXCode : http://www.gcrew.es
¿Podrías
¿Podrías decirme que coordenada tengo mal?, esque sigue sin funcionar ..
Aqui mi code(por si está mal):
Y otra cosa, de esas funciones me parece que necesito la 2da, que es "Objeto 1 dentro de Objeto 2", el objeto1 es la bola y quiero que cuando este adentro de la porteria(objeto2) el puntaje aumente(eso me parece es con archivos .ini), pero me preocupa porque ninguna de las 3 funciona, en ningun momento aparece ningun texto en pantalla, o forzozamente tengo que atinarle a la porteria? porque cuando baja se supone que ya hace contacto con la bola S:.
Saludos.
Ya encontré el error, tenías
Ya encontré el error, tenías el mismo error que nauti, pruébalo así :
function colision(object1,object2) if object1.x+object1.w >= object2.x and object1.x <= object2.x+object2.w and object1.y+object1.h >= object2.y and object1.y <= object2.y+object2.h then screen.print(100,100"Chocaste, pasa al siguiente nivel",blanco) end endNa,
Naah !, no sirve queda igual, se encima en ella.
aqui el code:
Creo que no soy para programar, lo mio es ayudar.
Un saludo y gracias por tu ayuda =/.
Miren
Miren: solo aparece la bola arriba de la porteria y aún así no aparece nada.
Crei que eran los limites, y los cambie para que no pasara de la porteria( para que no estuviera encima de ella) pero no sigue igual, no se si tenga que ver que la porteria se mueve y no le atino xD, pero aún así cuando pasa a la posicion donde quedo la bola deberia de pasar el screen,print a la pantalla no?.
EDITO: estoy intentaod quitandole el move a la porteria, pero se lo quite y se sigue moviendo o.o
Mira mi code:
EDITO2: Ahora he quitado de la tabla porteria el argumento "dir='d'" y se mueve D:.
No hay errores en código
Hasta donde veo no hay ningun error en el codigo, verifica si las medidas de altura y anchura de las imagenes son las correctas. No se me ocurre otra cosa.
Si necesitas que pruebe el codigo me lo puedes mandar por MP junto a las imagenes que usas :)
Saludos ^^
Prueba quitando eso: if
Prueba quitando eso:
if bola1.x<0 then bola1.x=0 elseif bola1.x+50>480 then bola1.x=480-50 end if bola1.y<0 then bola1.y=0 elseif bola1.y+50>272 then bola1.y=272-50 endPues
Pues mira, lo he quitado, pero sigue igual, aunque choquen o más bien dicho aunque lo toque no aparece nada, he cambiado el os.message por un screen.print, pero sigue igual.
Mejor
Mejor porque no explicas como lo solucionaste ;).
Porque
Porque no lo he solucionado =).
ha
ahora veo no lei bien el titulo del hilo pense que decia me las arregle yo solo :P.
Saludos--