Anuncios Google

[SOLUCIONADO] Simular una "vibracion" de una imagen...

Bueno, ahora estoy intentando hacer que una imagen "vibre", o que al menos lo parezca. He pensado en cambiarle la posición "x" a un lado y a otro, pero cuando se realiza la funcion, no se ve ninguna vibración. Espero que podáis ayudarme, y, si puede ser, prescindiendo de bucles for.

Esta es una parte de mi code:

function inpass()
local sentido = "ninguno"
sentido = "derecha"
	if sentido == "cambio" then vibr = vibr+1 end
	if sentido == "derecha" then dialisx = 248;screen.waitvblankstart(80) end
	if dialisx >= 248 then dialisx = 240;sentido = "cambio";sentido = "izquierda" end
	if sentido == "izquierda" then dialisx = 132;screen.waitvblankstart(80) end
	if dialisx <= 132 then dialisx = 240;sentido = "cambio";sentido = "derecha" end
	if vibr >= 60 then
		sentido = "ninguno"
	end
end	

La imagen tiene las posiciones "x" e "y": dialisx, dialisy.

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

que desperdicio de líneas...

Qué es eso de andar definiendo mil ifs? :S

Verás, para lograr el efecto de vibrar, tus coordenadas deberán ser aleatorias:

vibra = image.load("imagen.png");
 
desx = 0; -- desfase inicial en X
desy = 0; -- desfase inicial en Y
 
while true do
	controls.read() -- lees controles
	if controls.cross() then -- si mantienes presionado X, entonces...
		desx = math.random(-1,1); -- el desfase cambia a -1, 0, o 1 de forma aleatoria (a como deberia de ser...)
		desy = math.random(-1,1); -- lo mismo, pero en Y
	else -- sino
		desx = 0; -- de vuelta a la normalidad X
		desy = 0; -- lo mismo en Y
	end
 
	vibra:blit(100+desx, 100+desy); -- muestras la imagen en la posición 100, 100 y si tiene un desfase, se aplicará al instante
	screen.flip();
end

Y con eso tienes un code que si presionas X, la imagen vibra...



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

Tienes mucha razón...

Ayer me estuvo recomendando deviante vía MSN que me leyera la PIL de Lua en la página oficial, y ahora ya entiendo en mayor medida el lenguaje que antes, lo recomiendo a todos los nuevos coder's (desventaja para algunos: está en Inglés).

Muchas gracias, Chimecho.

Un saludo.

EDITO: Pero Chime, yo no quiero que al mantener pulsado x haga la funcion, sino que quiero que la haga durante un momento la vibracion aunque hayas soltado x...


 

 

Ya Chime lo tomo del plato,

Ya Chime lo tomo del plato, lo mastico y lo trago, solo te falta digerirlo. No crees que lo que te falta es lo mas facil. 

Imagen de Chimecho

amm...

Algo tiene que hacer el coder en cuestión no?

Por qué no usas un

Por qué no usas un timer?

vibra = image.load("imagen.png");
cont = timer.new()
 
desx = 0; -- desfase inicial en X
desy = 0; -- desfase inicial en Y
 
while true do
	controls.read() -- lees controles
	if controls.cross() then -- si mantienes presionado X, entonces...
             cont:start()
                while cont:time() < Tiempo_Vibracion do  --Aquí pones el tiempo que quieras que vibre, en milisegundos
		     desx = math.random(-1,1); -- el desfase cambia a -1, 0, o 1 de forma aleatoria (a como deberia de ser...)
		     desy = math.random(-1,1); -- lo mismo, pero en Y
                end
             cont:stop()
                cont:reset()
	else -- sino
		desx = 0; -- de vuelta a la normalidad X
		desy = 0; -- lo mismo en Y
	end
 
	vibra:blit(100+desx, 100+desy); -- muestras la imagen en la posición 100, 100 y si tiene un desfase, se aplicará al instante
	screen.flip();
end

EDITO: Habría que meter el blit también en el while interno... si no no verías nada xD

Muchas gracias...

Imaginaba que fuera algo así, con contadores...

Imagen de User170294

Tienes razón, no sabía como

Tienes razón, no sabía como tenía que mover la imagen para que produciera el efecto de vibrar y al final hice un código muy-muy chapuza.

Un saludo.


Imagen de User170294

A ver si te sirve esto:--

A ver si te sirve esto:

-- Cargas la imagen que vas ha hacer vibrar
imagen_que_vibra = image.load("./imagenes/imagen.png")
 
-- Cargamos la variable que almacena la fase del proceso de vibración
fase = 1
 
-- Funcion para hacer vibrar una imagen
function vibrarImagen(a)
 
	if fase > 5 then fase = 1 end
 
	fase = fase + 1
 
	if fase == 1 then image.blit(a,0,0) end
	if fase == 2 then image.blit(a,0,2) end
	if fase == 3 then image.blit(a,0,3) end
	if fase == 4 then image.blit(a,0,4) end
	if fase == 5 then image.blit(a,0,5) end
	if fase == 6 then image.blit(a,0,2) end
	if fase == 7 then image.blit(a,0,3) end
	if fase == 8 then image.blit(a,0,4) end
	if fase == 9 then image.blit(a,0,5) end
 
 
end
 
--  Bucle principal
while true do
	controls.read()
 
	vibrarImagen(imagen_que_vibra)
 
	if controls.start() then broke() end
 
	screen.flip()
 
end

 

Te he creado un ejemplo ejecutable. Descargalo aqui. (Ya sabes, metes la carpeta en la carpeta GAME).

 

Un saludo.


Gracias...

Me va perfecto.

Imagen de Dioni0396

un pequeño fallo

o sugerencia en tu code:

imagen_que_vibra = image.load("./imagenes/imagen.png")

Perfectamente se permite esto:

imagen_que_vibra = image.load("imagenes/imagen.png")
Imagen de User170294

Cierto. Gracias por la

Cierto.

Gracias por la sugerencia.

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.