Tengo entendido que la velocidad de un path se genera a partir de la distancia (pixeles por segundo).
En mi caso el path cambia constantemente, pero esto hace que el objeto que sigue el path cambie de velocidad al cambiar el tamaño.
Cuando el path se hace mas grande el objeto acelera demasiado y cuando el path se hace mas pequeño el objeto baja bastante su velocidad y se ve horrible.
Me pregunto si hay alguna formula que permita tener siempre la misma velocidad sin importar el cambio de tamaño en el path.
Cada vez que cambie de tamaño reasigna la variable path_speed que indica la velocidad en pixels por segundo.
Cita de: Clamud en Noviembre 02, 2017, 03:18:04 PM
Cada vez que cambie de tamaño reasigna la variable path_speed que indica la velocidad en pixels por segundo.
He intentado varias formulas en path_speed como;
El diametro principal/30 - el nuevo diametro/30.
Tambien restar el diametro por el mismo para que siempre este en 0 y luego sumarle la velocidad que yo quiera. Pero es algo ilógico XD
La verdad no se que formula pueda usar para que la velocidad aumente en caso de que el path se vuelva mas pequeño y disminuya si el path se hace mas grande, para que el objeto se vea como si fuera a la misma velocidad siempre
Tal vez no me este explicando bien :-\
Cita de: desplo en Noviembre 02, 2017, 11:18:36 PM
Cita de: Clamud en Noviembre 02, 2017, 03:18:04 PM
Cada vez que cambie de tamaño reasigna la variable path_speed que indica la velocidad en pixels por segundo.
He intentado varias formulas en path_speed como;
El diametro principal/30 - el nuevo diametro/30.
Tambien restar el diametro por el mismo para que siempre este en 0 y luego sumarle la velocidad que yo quiera. Pero es algo ilógico XD
La verdad no se que formula pueda usar para que la velocidad aumente en caso de que el path se vuelva mas pequeño y disminuya si el path se hace mas grande, para que el objeto se vea como si fuera a la misma velocidad siempre
Tal vez no me este explicando bien :-\
Tengo una duda ¿que quieres mover con el path y porque con el? por ejemplo yo uso el path para un monstruo que vuela, este cambia de path cada vez que pierde "X" vida, es un método poco practico que he empleado para cambiar su velocidad bajo ciertas condiciones.
Cita de: Naitsabes0 en Noviembre 03, 2017, 02:15:03 AM
Cita de: desplo en Noviembre 02, 2017, 11:18:36 PM
Cita de: Clamud en Noviembre 02, 2017, 03:18:04 PM
Cada vez que cambie de tamaño reasigna la variable path_speed que indica la velocidad en pixels por segundo.
He intentado varias formulas en path_speed como;
El diametro principal/30 - el nuevo diametro/30.
Tambien restar el diametro por el mismo para que siempre este en 0 y luego sumarle la velocidad que yo quiera. Pero es algo ilógico XD
La verdad no se que formula pueda usar para que la velocidad aumente en caso de que el path se vuelva mas pequeño y disminuya si el path se hace mas grande, para que el objeto se vea como si fuera a la misma velocidad siempre
Tal vez no me este explicando bien :-\
Tengo una duda ¿que quieres mover con el path y porque con el? por ejemplo yo uso el path para un monstruo que vuela, este cambia de path cada vez que pierde "X" vida, es un método poco practico que he empleado para cambiar su velocidad bajo ciertas condiciones.
Es una bala. Tiene una animación de movimientos circulares y el unico metodo que encontre fue utilizar un path. Pero el ultimo punto del path siempre sigue la ubicación del jugador, asi que el path cambia su tamaño siempre que el jugador se mueve y esto provoca que la velocidad del path cambie
Podrias subir una imagen del movimiento que tiene que hacer la bala, talves se pueda hacer sin usar un path.
También pienso que tal vez se puede hacer el movimiento sin path.
De todos modos encontré la solución al movimiento con path. El problema no es que la velocidad cambia, sino que cambia la longitud y la varaible path_postion se mantiene igual. Entonces se debe ajustar el valor de path_position de acuerdo a la nueva longitud de la path.
[gml]
/// Agregan punto
l = path_get_length( path_index ); //longitud de la path en px
p = path_position; //position dentro de la path (como factor)
d = l*p; //distancia recorrida en px
//agregar punto
path_add_point( path_index, mouse_x, mouse_y, 100);
l = path_get_length( path_index ); //nueva longitud
path_position = d/l; //nueva posicion
[/gml]
El movimiento es con curvas mientras sigue al jugador
(http://btowertest.esy.es/path.jpg)
Cita de: Clamud en Noviembre 03, 2017, 03:42:04 PM
[gml]
/// Agregan punto
l = path_get_length( path_index ); //longitud de la path en px
p = path_position; //position dentro de la path (como factor)
d = l*p; //distancia recorrida en px
//agregar punto
path_add_point( path_index, mouse_x, mouse_y, 100);
l = path_get_length( path_index ); //nueva longitud
path_position = d/l; //nueva posicion
[/gml]
Funciono perfectamente. Gracias :D