Anuncios Google

Ah otra ves lua! :G[COLISIONES]

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&nbsp;	
<-- UTL

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
<-- script

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&nbsp;	

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..


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

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)

Imagen de zerozelta

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


Imagen de Psprekiem

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".

Imagen de barney77

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

Imagen de barney77

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 ;(

Imagen de NauTiluS1

Claro, tienes que poner "x" y

Claro, tienes que poner "x" y "y" en la tabla y poner la colision como antes.

Imagen de barney77

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..

 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.