Anuncios Google

Ayuda Lua Dev(Cronometro)

Hola, lo que quiero hacer es que cada 5 segundos que pasen el objeto se mueva cada vez más rapido..

He echo esto:

fondo=image.load("Imagenes/fondo.png")
Asb=3
Asb2=5
AsbC=2
Obj={}
Obj[1]={bola=image.load("Imagenes/bola.png"),x=15,y=116,h=46,w=46}
Obj[2]={bola2=image.load("Imagenes/bola2.png"),x=445,y=111,h=8,w=8}
Obj[4]={enemigo=image.create(50,50,color.new(27,139,25)),x=80,y=250,h=50,w=50}
Obj[5]={enemigo2=image.create(40,75,color.new(255,76,98)),x=200,y=250,h=40,w=55}
c=timer.new()
c:start()
 
function control(object)
if controls.down() then
	object.x=object.x+5
elseif controls.left() then
	object.x=object.x-4
elseif controls.up() then
	object.y=object.y+6
elseif controls.right() then
	object.y=object.y-7
end
end
 
function colision(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
 
while true do
controls.read()
fondo:blit(0,0)
screen.print(0,10,"Nivel4",color.new(255,45,0))
Obj[1].bola:blit(Obj[1].x,Obj[1].y)
Obj[2].bola2:blit(Obj[2].x,Obj[2].y)
Obj[4].enemigo:blit(Obj[4].x,Obj[4].y)
Obj[5].enemigo2:blit(Obj[5].x,Obj[5].y)
Obj[4].y=Obj[4].y+Asb
Obj[5].y=Obj[5].y+Asb2
if Obj[4].y>=272-50 then Asb=-3 elseif Obj[4].y<=0 then Asb=3 end 
if Obj[5].y>=272-55 then Asb2=-5 elseif Obj[5].y<=0 then Asb2=5 end 
control(Obj[1])
if c:time()>=5000 then
	if Obj[4].y>=272-50 then Asb=-5 elseif Obj[4].y<=0 then Asb=5 end 
end
if colision(Obj[1],Obj[2]) then
	dofile("Dfl/gnvl4.lua")
elseif colision(Obj[1],Obj[4]) then
	dofile("Dfl/pnvl4.lua")
elseif colision(Obj[1],Obj[5]) then
	dofile("Dfl/pnvl4.lua")
end	
Obj[1].x=math.min(math.max(0,Obj[1].x), 480-Obj[1].w/2) 
Obj[1].y=math.min(math.max(0,Obj[1].y), 272-Obj[1].h/2) 
screen.flip()
end

EN sí quiero mover el Obj[4], pero despues de que pasen los milisegundos, en vez de que avanse la velocidad, retrocede..

Agradeceria su ayuda de mucho si me explicaran mas o menos como ahcer lo que quiero.

Un Saludo.


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 Chimecho

vale

ya que tienes timers, supongo que sabes como usarlos, mira este code:

tiempo = timer.new();
tiempo:start();
vel = 0; -- velocidad inicial, no se mueve
xo = 0; -- posicion inicial
 
while true do
	vel = tiempo:time()/1000; -- aquí de seguro tendrás que mover algo para ajustarlo a tu gusto, osea, cambiar el 1000
	x = xo + vel; -- para que se mueva
	screen.print(x,10,"a");
	screen.flip();
end

Con eso te vas haciendo una idea de como hacerlo ;)

Saludos!



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 barney77

Sale, gracias MasterChime, ya

Sale, gracias MasterChime, ya lo probaré mañana o en un rato ;).

Imagen de barney77

Contesto aca, he echo

Contesto aca, he echo esto

fondo=image.load("Imagenes/fondo.png")
Asb=3
Asb2=5
AsbC=5
Obj={}
Obj[1]={bola=image.load("Imagenes/bola.png"),x=15,y=116,h=46,w=46}
Obj[2]={bola2=image.load("Imagenes/bola2.png"),x=445,y=111,h=8,w=8}
Obj[4]={enemigo=image.create(50,50,color.new(27,139,25)),x=80,y=250,h=50,w=50}
Obj[5]={enemigo2=image.create(40,75,color.new(255,76,98)),x=200,y=250,h=40,w=55}
c=timer.new()
c:start()
 
function control(object)
if controls.down() then
	object.x=object.x+5
elseif controls.left() then
	object.x=object.x-4
elseif controls.up() then
	object.y=object.y+6
elseif controls.right() then
	object.y=object.y-7
end
end
 
function colision(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
 
while true do
controls.read()
fondo:blit(0,0)
screen.print(0,10,"Nivel4",color.new(255,45,0))
screen.print(50,50,math.floor(c:time()/1000),color.new(0,255,0))
Obj[1].bola:blit(Obj[1].x,Obj[1].y)
Obj[2].bola2:blit(Obj[2].x,Obj[2].y)
Obj[4].enemigo:blit(Obj[4].x,Obj[4].y)
Obj[5].enemigo2:blit(Obj[5].x,Obj[5].y)
Obj[4].y=Obj[4].y+Asb
Obj[5].y=Obj[5].y+Asb2
if Obj[4].y>=272-50 then Asb=-3 elseif Obj[4].y<=0 then Asb=3 end 
if Obj[5].y>=272-55 then Asb2=-5 elseif Obj[5].y<=0 then Asb2=5 end 
control(Obj[1])
if math.floor(c:time()/1000)>=5 then Asb=Asb+AsbC c:reset() end
if colision(Obj[1],Obj[2]) then
	dofile("Dfl/gnvl4.lua")
elseif colision(Obj[1],Obj[4]) then
	dofile("Dfl/pnvl4.lua")
elseif colision(Obj[1],Obj[5]) then
	dofile("Dfl/pnvl4.lua")
end	
Obj[1].x=math.min(math.max(0,Obj[1].x), 480-Obj[1].w/2) 
Obj[1].y=math.min(math.max(0,Obj[1].y), 272-Obj[1].h/2) 
screen.flip()
end

Pero no me sale el print :(-

Imagen de Nevado0

if

if math.floor(crono:time()/1000) >= 5 then
objeto.x = objecto.x + 1
crono:reset()
end

Imagen de barney77

Algo así es lo que qiero,

Algo así es lo que qiero, probaré con ello.

EDITO Una pregunta, con eso entonces cada 5 segundos hará la condicion, o solo cuando el crono este en 5 segundos?..

Imagen de Nevado0

Cuando el crono llegue a los

Cuando el crono llegue a los 5 segundos se reseteara y ara que valla mas rapido, osea infinito...

Imagen de barney77

Por eso, osea que cada 5

Por eso, osea que cada 5 segundos ira más rapido?

O sea, se repetirá la condicion cada 5 segundos?

Imagen de Nevado0

Cada 5 segundo ira mas rapido

Cada 5 segundo ira mas rapido

Imagen de barney77

Mmm ok, lo malo es que NO, lo

Mmm ok, lo malo es que NO, lo que pasa es que solo la primera vez que pasan los primeros 5 segundos aumenta, despues de esto no aumenta nah!.

Mira:

fondo=image.load("Imagenes/fondo.png")
Asb=3
Asb2=5
AsbC=5
Obj={}
Obj[1]={bola=image.load("Imagenes/bola.png"),x=15,y=116,h=46,w=46}
Obj[2]={bola2=image.load("Imagenes/bola2.png"),x=445,y=111,h=8,w=8}
Obj[4]={enemigo=image.create(50,50,color.new(27,139,25)),x=80,y=250,h=50,w=50}
Obj[5]={enemigo2=image.create(40,75,color.new(255,76,98)),x=200,y=250,h=40,w=55}
c=timer.new()
c:start()
 
function control(object)
if controls.down() then
	object.x=object.x+5
elseif controls.left() then
	object.x=object.x-4
elseif controls.up() then
	object.y=object.y+6
elseif controls.right() then
	object.y=object.y-7
end
end
 
function colision(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
 
while true do
controls.read()
fondo:blit(0,0)
screen.print(0,10,"Nivel4",color.new(255,45,0))
Obj[1].bola:blit(Obj[1].x,Obj[1].y)
Obj[2].bola2:blit(Obj[2].x,Obj[2].y)
Obj[4].enemigo:blit(Obj[4].x,Obj[4].y)
Obj[5].enemigo2:blit(Obj[5].x,Obj[5].y)
Obj[4].y=Obj[4].y+Asb
Obj[5].y=Obj[5].y+Asb2
if Obj[4].y>=272-50 then Asb=-3 elseif Obj[4].y<=0 then Asb=3 end 
if Obj[5].y>=272-55 then Asb2=-5 elseif Obj[5].y<=0 then Asb2=5 end 
control(Obj[1])
if math.floor(c:time()/1000)>=5 then Asb=Asb+AsbC c:reset() end
if colision(Obj[1],Obj[2]) then
	dofile("Dfl/gnvl4.lua")
elseif colision(Obj[1],Obj[4]) then
	dofile("Dfl/pnvl4.lua")
elseif colision(Obj[1],Obj[5]) then
	dofile("Dfl/pnvl4.lua")
end	
Obj[1].x=math.min(math.max(0,Obj[1].x), 480-Obj[1].w/2) 
Obj[1].y=math.min(math.max(0,Obj[1].y), 272-Obj[1].h/2) 
screen.flip()
end

La condicion que pongo cada que pasen  segundos es: si c es igual a 5 segundos entonces Asb es igual a Asb+AsbC, daría un valor de 8,(5AsbC+3Asb)...

Pro solo los primeros 5 egundos cumple con dicha condicion..

Imagen de Nevado0

Prueba a hacer un

Prueba a hacer un screen.print con el tiempo del crono y me dices lo que pone

Imagen de barney77

Ok, ahora voy.

Ok, ahora voy.

Imagen de NauTiluS1

O tan solo pon la codicion

O tan solo pon la codicion dentro de una función.

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.