Anuncios Google

Problema colisión LuaDev[Solucionado]

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


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.
Imagen de PhAnThOm

Prueba...

Podrias probar algo como esto, quizas te sirva bastante si lo entiendes, esta mui sencillo...

function col(bx,ex,by,ey)
if auto.x >= bx and auto.x <= ex and auto.y >= by and auto.y <= ey then
auto.x = oldx
auto.y = oldy
 
	    end
end
 
function col1(bx,ex)
if auto.x <= bx or auto.x >= ex then
auto.x = oldx
		 end
end
 
function col2(by,ey)
if auto.y <= by or auto.y >= ey then
auto.y = oldy
	 end
end

 

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


Imagen de -chus-

jaja

es mas bien el movimiento del carro no? por que no veo nada de colicion, o al menos no le entiendo XD

Imagen de sting18

Problema colision??? y donde

Problema colision??? y donde se supone que pusiste la colision xD.

Imagen de barney77

Aquí: if array.x + array.w >=

Aquí:

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

 ;).

Imagen de sting18

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.

jugador={}
jugador[1]={x=100,y=150,i=imagen,estancia=true,saltar=false,caminarD=false,blablabla,}

y apartir de hay ir acomodando el codigo...ahora las coliciones de nuevo lo mas facil es asi.

 

function coliciones()
if jugador[1].x+image.width(jugador[1].i) > objeto[1].x and jugador[1].x < objeto[1].x+image.width(objeto[1].i) and
jugador[1].y +image.height(jugador[1].i) > objeto[1].y and jugador[1].y < objeto[1].y + image.height(objeto[1].i)  then 
os.message("as")
end

 

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.

 


Imagen de barney77

Pienso que es más facil algo

Pienso que es más facil algo así:

function colision(obj1,obj2)
--code de colision
end
 
while true do
if colision(obj1,obj2) then -- si se colisiona entonces..
  os.message("Colisiono D:")
end

De está manera con una sola colision se podrian hacer muchas, usando condiciones :b

Imagen de NauTiluS1

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

Imagen de barney77

De nada, cual era el error?..

De nada, cual era el error?..

Imagen de sting18

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.


Imagen de barney77

No entendi?-- De todos modos

No entendi?--

De todos modos puede hacerse lo que dices de esa manera:

if colision(obj1,obj2) then
  algo
elseif colision(obj1,obj2) then
 algo mas xD
elseif colision(obj1,obj2) then
 aun algo mas xD
end

Imagen de NauTiluS1

lo probé y no funcionó xD

lo probé y no funcionó xD

Imagen de barney77

Deve ser porque el error está

Deve ser porque el error está en la linea 34..

Pon el code nau xD.

Imagen de NauTiluS1

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

Imagen de barney77

Pero.. Que condicion

Pero..

Que condicion pones?..

Aparte, revisa tu colision y el nombre de la funcion .

Un Saludo.

Imagen de NauTiluS1

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

Imagen de barney77

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.

Imagen de NauTiluS1

Aver lo pruebo de nuevo =_=

Aver lo pruebo de nuevo =_= xD

Imagen de sting18

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.


Imagen de Chimecho

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

Imagen de sting18

No ...usar la tabla con

No ...usar la tabla con significados diferentes dependien de el for que pongas tu entiendes eso creo xD.

Imagen de -chus-

ok

ok, pero eso es para mostrar un mensaje, no tiene nada que ver con el movimiento del carro...

Imagen de barney77

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-

Imagen de -chus-

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

 http://psp.scenebeta.com/noticia/memorama-games#comment-803033


Imagen de barney77

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.

Imagen de NauTiluS1

Qué tenga la banderita de

Qué tenga la banderita de coder no significa qué no pueda hacer preguntas tambíen...

Imagen de -chus-

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

 http://psp.scenebeta.com/noticia/memorama-games#comment-803033


Imagen de NauTiluS1

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

Imagen de Nevado0

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

Imagen de NauTiluS1

No empiezan desde la misma x

No empiezan desde la misma x una es 5 y otra 50

Imagen de NauTiluS1

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

 

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.