Comunidad de diseño web y desarrollo en internet

Efecto de rebote gravitacional por ActionScript

Uno de los efectos que muchas veces no usamos en nuestras peliculas, pero que quisieramos de todos modos aprender, es el efecto de la gravedad.
Vamos a ver simplemente como aplicar el efecto, de acuerdo a un aumento de un valor, que nos permitira ver como aparentemente nuestro objeto "cuadro" cae.

Cambiemos la velocidad de fotogramas a "30".
Creamos nuestro objeto en una capa independiente, y le daremos nombre de instancia, "objeto"
En una nueva capa, ponemos:

fuerza = 1;7
velocidad = 0;
_root.onEnterFrame = function() {
velocidad += fuerza;
objeto._y += velocidad;
};


Ahora probemos la pelicula ("ctrl + enter").

Entendamos estas cortas lineas:

//fuerza = 1;
//velocidad = 0;
fuerza y velocidad son nuestros valores iniciales, fuerza es la unidad que nos indica la fuerza con que caerá el "objeto", pero, al estar dentro del controlador "onEnterFrame", sera acumulativo, es decir : 1, 1+1, 2+1, 3+1, 4+1 ... etc, y gravedad es el movimiento cuando nuestro clip "objeto", aun no ha sido liberado.


//_root.onEnterFrame = function() {
en nuestra escena principal, crearemos nuestro controlador de eventos "onEnterFrame" a la que asignaremos una funcion.

//velocidad += fuerza;
la velocidad inicial de nuestro clip "objeto"= es 0, pero aumentara de acuerdo a ese acumulado de valores que mencionamos antes.

//objeto._y += velocidad;
finalmente asignaremos ese incremento de valores a nuestro clip "objeto", para darle el efecto de "caida" o "gravedad",


-----------

Hasta aqui todo va muy bien, pero ahora vamos a crear un efecto rebote a partir de este efecto "gravedad"

Agreguemos estas lineas dentro de nuestro controlador onEnterFrame

if (objeto._y>400) {
objeto._y = 400;
velocidad *= -1;
}

//if (objeto._y>400) {
//objeto._y = 400;
cuando "objeto" supere la posicion limite inferior de mi pelicula, esta linea evita que "objeto" siga cayendo. Si su pelicula tiene una altura diferente, solo cambien ese 400 por dicha altura.

//velocidad *= -1;
multiplicamos el valor de la caida por (-1), lo que crea el efecto de rebote.


Por pura curiosidad, cambiemos el valor de velocidad en esta ultima linea por 0.98, veremos como cada vez rebota menos nuestro "objeto".

El ejemplo funcionando lo pueden encontrar en http://www.iespana.es/johnmartin/samples/gravedad.html
Asi mismo los archivos disponibles para descarga estan en http://www.iespana.es/johnmartin/samples/gravedad.zip

Bueno, saludos amigos !

JOHNMARTIN

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Descargar Archivo

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate