Estoy haciendo un juego el cual usa sprites pero ahora mi problema son las colisiones con mi "array" contra mi "car"
Aquí mi code:
--auto = {img=image.load("auto.png"),x=50,y=272} math.randomseed(os.time()) fondo = image.load("miola.png"); velocity = 3; tiempo={x=0,y=272} nautilus = {} nautilus["parado"]={} nautilus["paseo"]={} nautilus.parado.down = image.load("sprites/spriteparado.png") nautilus.parado.left = image.load("sprites/spriteparado.png") nautilus.parado.right = image.load("sprites/spriteparado.png") nautilus.parado.up = image.load("sprites/spriteparado.png") rawset(nautilus["paseo"],"up",image.loadsprite("sprites/sprite.png",75.5,90)) rawset(nautilus["paseo"],"down",image.loadsprite("sprites/spriteabajo.png",75.5,90)) rawset(nautilus["paseo"],"left",image.loadsprite("sprites/spriteleft.png",75.5,90)) rawset(nautilus["paseo"],"right",image.loadsprite("sprites/spriteright.png",75.5,90)) status = "parado" direction = "down" array = {} array.x = 50 array.y = 270 array.w = 53 array.h = 90 anim = 0 function flowmaster() tiempo.y = tiempo.y - velocity; if ( tiempo.y <= 0 ) then tiempo.y = 272; end image.blit(fondo,0,math.ceil(tiempo.y)); image.blit(fondo,0,math.ceil(tiempo.y)-272); end car = {} carimg = image.load("sprite enemigo/car1.png") car_t={x=5,y=5,w=53,h=90} car = {x=5,y=5,w=carimg:width(),h=carimg:height()} function enemy() car.y = -50-math.random(50,100) car.x = math.random(120,355) end while true do controls.read() if controls.cross() then velocity = velocity + 00.1 else velocity = 3 end if controls.cross() or controls.down() or controls.left() or controls.right() then anim = anim + 0.1 status = "paseo" if math.floor(anim)>3 then anim = 0 end else anim = 0 status = "parado" end if status =="paseo" then nautilus[status][direction]:setframe(anim) end array.x = math.min(math.max(0,array.x), 480-75) array.y = math.min(math.max(0,array.y), 272-90) if controls.cross() then array.y=array.y-1 direction = "up" elseif controls.down() then array.y=array.y+4 direction = "down" elseif controls.right() then array.x=array.x+4 direction = "right" elseif controls.left() then array.x=array.x-4 direction = "left" end if array.x + array.w >= car.x and array.x <= car.x+car.w and array.y + array.h >= car.y and array.y <= car.y + car.h then os.message("as") end flowmaster(); nautilus[status][direction]:blit(array.x,array.y) if controls.press("l") then dofile("AS") end if car.y >272 then enemy() end carimg:blit(car.x,car.y) car.y = car.y + 4 screen.flip(); end
El problema es qué no me deja ni moverme xD ya que colisiona en todos lados nisiquiera me muevo.
PD
Se qué el error es minusculo pero es de noche y ando algo tumbado xD
Follow me twitter nautilus1_jmccu!!
Sony, ya a nadie le interesa tus UMD si alguien compra una psp es por nosotros los coders. Madura y has un FW que haga la diferencia y anime a las personas en comprar un PSP
Prueba...
Podrias probar algo como esto, quizas te sirva bastante si lo entiendes, esta mui sencillo...
Son colisiones verticales, orisontales y las 2 juntas...
luego solo creas la colision cambiando las coordenadas y las activas en un while true...
PhAnThom...
COBHC...
jaja
es mas bien el movimiento del carro no? por que no veo nada de colicion, o al menos no le entiendo XD
Problema colision??? y donde
Problema colision??? y donde se supone que pusiste la colision xD.
Aquí: if array.x + array.w >=
Aquí:
;).
ok su estructura esta muy
ok su estructura esta muy confusa tiene muchas cosas para hacer lo mismo lo mas facil seria poner todo en una sola array no en muchas.
y apartir de hay ir acomodando el codigo...ahora las coliciones de nuevo lo mas facil es asi.
y si tienes muchos objetos para colicion solo agregas un for dependiendo de los objetos y de los jugadores que sean y listo.
No soy bueno explicando.
Pienso que es más facil algo
Pienso que es más facil algo así:
De está manera con una sola colision se podrian hacer muchas, usando condiciones :b
Muchas gracias, ya lo
Muchas gracias, ya lo solucioné pero me ahorrará muchas lineas. Yo puedo hacer qué al colisionar dependiendo el objeto pase algo usando solo una colisión.
Follow me twitter nautilus1_jmccu!!
Sony, ya a nadie le interesa tus UMD si alguien compra una psp es por nosotros los coders. Madura y has un FW que haga la diferencia y anime a las personas en comprar un PSP
De nada, cual era el error?..
De nada, cual era el error?..
Asi seria poner siempre lo
Asi seria poner siempre lo mismo pero si tienes mas opciones de colicion como por ejemplo que al chocar con un objeto aga explocion o al chocar con otro disminulla velocidad o al chocar con otro solo se pare sin explocion ni disminur hay seria mejor poner las acciones en la tabla con la misma colicion si no pondria demaciadas coliciones.
bueno es mi punto de vista y experiencias xD.
No entendi?-- De todos modos
No entendi?--
De todos modos puede hacerse lo que dices de esa manera:
lo probé y no funcionó xD
lo probé y no funcionó xD
Deve ser porque el error está
Deve ser porque el error está en la linea 34..
Pon el code nau xD.
Cómo sabes qué está en esa
Cómo sabes qué está en esa línea :O, no puedo poner el code porqué estoy en la psp pero mira, mi colisión ya sirve y pues borré del while colisiónxxxx y lo puse como dijiste y no pasó nada xD
Follow me twitter nautilus1_jmccu!!
Sony, ya a nadie le interesa tus UMD si alguien compra una psp es por nosotros los coders. Madura y has un FW que haga la diferencia y anime a las personas en comprar un PSP
Pero.. Que condicion
Pero..
Que condicion pones?..
Aparte, revisa tu colision y el nombre de la funcion .
Un Saludo.
Pues mí colisíon se llama
Pues mí colisíon se llama "colin" de "colin mcrae" xD, y pongo en condición: si colin(x,x) que pase un screen.print y nada, tambíen puse un os.exit aver xD
Follow me twitter nautilus1_jmccu!!
Sony, ya a nadie le interesa tus UMD si alguien compra una psp es por nosotros los coders. Madura y has un FW que haga la diferencia y anime a las personas en comprar un PSP
Que raro, a lo mejor no
Que raro, a lo mejor no defines bien los parametros de tu tabla o la colision está mal, ya que yo lo he echo así, hata con un screen.print/dofile/os.message.. Y funciona.
Aver lo pruebo de nuevo =_=
Aver lo pruebo de nuevo =_= xD
y si te das cuenta que en las
y si te das cuenta que en las 3 pusiste lo mismo de nuevo?
colision(obj1,obj2)o sea en las 3 areias lo mismo pero bueno cada quien saludos.
ehm...
yo digo que esa es la mejor manera, o que sugieres? repetir todo el code de colision tres veces...?
EDITO: Recién leo bien, preo creo que el se refiere a objetos distintos...
PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]
07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD
Recuerda: Sé el intérprete -_-
No ...usar la tabla con
No ...usar la tabla con significados diferentes dependien de el for que pongas tu entiendes eso creo xD.
ok
ok, pero eso es para mostrar un mensaje, no tiene nada que ver con el movimiento del carro...
Eso es una colision que si
Eso es una colision que si colisiona con el carro muestra el os.message, o al menos eso creo =D-
eso
si, ah de ser el mensaje para decir que el carro ah chocado, o se acabo el juego etc etc, pero eso como entiendo yo, no tiene nada que ver con el movimiento del carro
Mis Homebrew´s
Que tal si intentaras en ves
Que tal si intentaras en ves de or.controls.X() or controls.X(), en vez de los "or" poner un elseif?..
PD= Revisa tus cordenadas, tal vez pase por ello, a mi me ha pasado ese tipo de errors xD.
Qué tenga la banderita de
Qué tenga la banderita de coder no significa qué no pueda hacer preguntas tambíen...
a que
a que viene ese comentario? ultimante eh visto comentarios no se un poco agresivos o asi los veo yo, solo espero que no sea eso por el que no te han ayudado, deja reviso el code haber si entiendo un poco y encuentro el error
Mis Homebrew´s
No, no es por eso. Es que un
No, no es por eso.
Es que un coder(no diré cuál) cree qué por qué sea "coder" no puedo hacer ningun tipo de preguntas...
en las tablas de array y de
en las tablas de array y de auto, las dos empiezan desde la misma x, intenta cambiando la x y la y de cada tavla
No empiezan desde la misma x
No empiezan desde la misma x una es 5 y otra 50
Vamos xD, se qué el error es
Vamos xD, se qué el error es muy pequeño, pero es que estoy desde la psp y no puedo revisarlo bien xD