Bueno, esque tengo algunas dudas y unos problemas en un code de LUADEV y quiero saber si me ayudan.
Aprovecho para dar agradecimientos a: Barney77 por ayudarme a hacer casi todo el code :)
PD: Barney77, te tengo un balon estilo scenebeta para tu HB BallEsquive. Te lo paso por MP.
Dudas.
1.- Como pongo los limites de la pantalla para que no se salga un objeto.
2.- Como hagó para que cuando un objeto entre a una zona, salga algo(Yo se que poner aqui(os.message("XXXX"))
Problemas.
1.- Bliteo una imagen para que cuando el disco choque con el portero, se blitee, pero el portero, deja el disco(se va a la izquierda) y se deja de blitear la imagen.
2.- Pusé que cuando se blitee la imagen, presione X, se reinicie y si presiono O se quite, pero quiero que solo pase eso cuando se blitea la imagen,pero si presiono el que sea cuando no he movido nada, se reinicia o quita.
Code.
Mallet={} Mallet[1]={jugador=image.load("Imagenes/jugador.png"),x=195,y=186,h=80,w=80} Mallet[2]={portero=image.load("Imagenes/portero.png"),x=195,y=6,h=80,w=80} Mallet[3]={disco=image.load("Imagenes/disco.png"),x=65,y=106,h=50,w=50} function control(object) if controls.right() then object.x=object.x+7 elseif controls.left() then object.x=object.x-7 elseif controls.down() then object.y=object.y+7 elseif controls.up() then object.y=object.y-7 end end function colision(ob1,ob2) if controls.cross() then if ob1.x+ob1.w>=ob2.x and ob1.y+ob1.h>=ob2.y and ob1.y<=ob2.y+ob2.h and ob1.x<=ob2.x+ob2.w then return true else return false end end end function C2(ob1,ob2) if ob1.x+ob1.w>=ob2.x and ob1.y+ob1.h>=ob2.y and ob1.y<=ob2.y+ob2.h and ob1.x<=ob2.x+ob2.w then return true else return false end end Asb=5 mesa=image.load("Imagenes/Base.jpg") loss = image.load("Imagenes/loss.png") while true do controls.read() mesa:blit(0,0) Mallet[1].jugador:blit(Mallet[1].x,Mallet[1].y) Mallet[2].portero:blit(Mallet[2].x,Mallet[2].y) Mallet[3].disco:blit(Mallet[3].x,Mallet[3].y) control(Mallet[1]) Mallet[2].x=Mallet[2].x+Asb if Mallet[2].x>=480-80 then Asb=-5 elseif Mallet[2].x<=0 then Asb=5 end if colision(Mallet[1],Mallet[3]) then Mallet[3].y=Mallet[3].y-10 elseif C2(Mallet[3],Mallet[2]) then loss:blit(0,0) elseif colision(Mallet[1],Mallet[3]) then Mallet[3].x=Mallet[3].x-10 end if controls.press("circle") then dofile("script.lua") end if controls.press("cross") then dofile("jugar.lua") end screen.flip() end
mmmm...
Muchas dudas... no creo poder contestarlas todas (no las comprendo bien, además xD)
Empecemos:
Funciona para un eje... lo puedes hacer para ambos si quieres, es la misma lógica.
La conclusión es: el if no tiene por qué ir en una sola línea. Puedes englobar todo el code que quieras :P
Para hacer lo que mencionas en el punto 2 del apartado problemas, yo acostumbro usar una variable de control. Por ejemplo, veo que tu imagen la bliteas bajo ciertas condiciones, eso está perfecto. Puedes agregar una línea más, con una variable de tipo booleano, y después comprobar con una condición, para ajecutar el código que deseas. Predico con el ejemplo:
Como puedes ver, si está bliteada la imagen, y presiono x se ejecutará el código (porque status es verdadero). Pero si no está bliteada, no importa cuantás veces le dé a la X, no se ejecutará nada (porque status vale false)
1-Chimecho tiene un tutorial
1-Chimecho tiene un tutorial 2-Colisión, hice un tutorial