Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Kefe en Julio 04, 2017, 06:33:39 AM

Título: Dudas con movimiento y velocidad
Publicado por: Kefe en Julio 04, 2017, 06:33:39 AM
Quisiera mover un objeto hasta ciertas coordenadas y que se detenga, pero que mientras más se acerque a las coordenadas, pierda velocidad. Este efecto se llama "Erase Out", desde ya gracias!  ;D
Título: Re:Dudas con movimiento y velocidad
Publicado por: Zapdos43 en Julio 04, 2017, 11:33:00 AM
Aquí tienes un ejemplo:

Creas una room de 640 x 480.

Creas un objeto, lo llamamos erase_out. En CREATE EVENT ponemos:
// coordenada final
xfin = 320;
yfin = 240;

// variables para reducir la velocidad
numerador_x = abs(x-xfin);
denominador_x = abs(x-xfin);

// valor que reducira la velocidad
reduccion = numerador_x / denominador_x;

// velocidad inicial
veloc = 5;

En Step event ponemos:
// ir hacia la coordenada final
move_towards_point( xfin, yfin, veloc);

// actualizar numerador
numerador_x = abs(x-xfin);

// actualizar reduccion

reduccion = numerador_x / denominador_x;

// actualizar velocidad
veloc = 5 * reduccion;

Luego en la room colocar varios objetos erase_out y prueba.  ;)
Título: Re:Dudas con movimiento y velocidad
Publicado por: Clamud en Julio 07, 2017, 03:21:29 AM
En realidad el efecto se llama "ease out". Primero debes seleccionar una función que tenga una curva de crecimiento con las características indicadas: primero crece rápido y después lento. Puedes encontrar varias funciones en internet o intentar deducirlas.

Este es un script que usa una función cuadrática:
[gml]
///ease_out_quad( a,b, t );
// a: valor inicial
// b: valor final
// t: parametro entre 0 y 1

var a,b,t;
a = argument0;
b = argument1;
t = argument2;

return (a-b)*sqr(t-1) + b;
[/gml]
Adjunto un ejemplo con el script.