Una de mis prioridades de a corto o mediano plazo al aprender a usar el GML era lograr el efecto de que el player se colgara en una liana y se moviera junto con ella, he intentado tratar de lograr esto por mi propia cuenta pero siempre termino quedando corto, y la cosa es que en teoría yo este problema lo veo de esta forma:

Hallar la coordenada de un punto(osea el player) sobre una recta(la liana) independientemente del angulo de dicha recta(osea que el player se mantenga en la misma posición en la recta sin importar el angulo de esta).
No se si sea la forma correcta de interpretarlo, pues supongo que depende de la trigonométria para resolver este tipo de problemas.
El punto es que no he encontrado ningún ejemplo en la Internet, por lo que me da a pensar que no es algo tan sencillo de hacer...
Si alguien alguna vez a hecho esto o sabe como hacerlo, agradecería que me pudieran dar alguna pista o decirme que funciones podría utilizar...

En mi ejemplo la liana se mueve sola(con image_angle) es por eso que me interesaría hallar la posición del player independientemente del angulo de la liana.


#1 Junio 18, 2015, 08:52:35 PM Ultima modificación: Junio 18, 2015, 09:07:06 PM por penumbra
La sección "Vector Functions" en el manual contiene funciones que se pueden usar justamente para hacer lo que quieres. Y no, no es difícil de hacer, en muy pocas líneas se conseguiría implementar. También se puede resolver "paso a paso" usando el teorema de pitágoras, pero creo que usando las funciones de GML queda más directo.

Cita de: penumbra en Junio 18, 2015, 08:52:35 PM
La sección "Vector Functions" en el manual contiene funciones que se pueden usar justamente para hacer lo que quieres. Y no, no es difícil de hacer, en muy pocas líneas se conseguiría implementar. También se puede resolver "paso a paso" usando el teorema de pitágoras, pero creo que usando las funciones de GML queda más directo.
Bueno si de hecho las funciones point_direction y point_distance fue de las primeras funciones que considere al tratar de hacer esto, porque en si parecía tener alguna relación con lo que quería hacer,  pero no, aun faltaba lo mas importante, la verdad las demás funciones las leí mas de una vez y no he terminado de comprenderlas del todo, ni tampoco tengo idea de como podría implementarlo a lo que quiero, probablemente porque lo veo muy implícito en el texto o simplemente mis conocimientos de álgebra lineal son muy pobres...
No lo veo fácil :-[

#3 Junio 19, 2015, 06:31:33 AM Ultima modificación: Junio 19, 2015, 06:35:49 AM por penumbra
funciones lengthdir: Le pasas como argumentos un vector (la longitud de la cuerda) y una dirección (la dirección del extremo de la cuerda a su punto de anclaje) y te devuelven la componente horizontal o vertical (coordenada X o Y, en términos prácticos) del extremo de la cuerda (el punto donde se "sujetaría" el personaje)

[gml]
lx = lengthdir_x(longitud, angulo)
ly = lengthdir_y(longitud, angulo)
draw_line(cx, cy, cx + lx, cy + ly)
[/gml]

Creo que no tiene caso hacer un video o tutorial de algo que se resuelve en 3 líneas (y se puede reducir todo a una sola línea)  :-[.

Ejemplo:


GMZ:
http://www.mediafire.com/download/x81eqk45vjfbk71/liana.gmz