Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: inventarium en Octubre 13, 2019, 03:07:10 PM

Título: Objeto se mueve hacia su dirección
Publicado por: inventarium en Octubre 13, 2019, 03:07:10 PM
Hola a tod@s, estoy usando las físicas de GMS2 y me gustaría hacer que mi personaje se moviera hacia la dirección (phy_rotation) en la que apunta.
Con las flechas derecha e izquierda lo puedes girar, y con la flecha de arriba quiero que se mueva hacia donde apunta.
Si alguien me ayuda estaría muy agradecido. 
Título: Re:Objeto se mueve hacia su dirección
Publicado por: FernandoNavarro en Octubre 14, 2019, 01:41:12 AM
No estoy muy familiarizado con GMS2 pero no debería ser más complejo que crear un objeto adicional que sirva como guía para que el personaje lo siga cuando presiones el botón. move_toward creo que se llama la función que hace que se mueva a un punto.
Título: Re:Objeto se mueve hacia su dirección
Publicado por: inventarium en Octubre 16, 2019, 05:27:26 PM
El problema es que al estar usando las físicas de GMS2 no funciona move_towards.
Intenté lo de crear un objeto adicional pero no me acababa de solucionar nada. Lo único que me interesa es encontrar una función que traduzca el ángulo del personaje en una dirección a la que moverse.
Título: Re:Objeto se mueve hacia su dirección
Publicado por: dixon en Octubre 21, 2019, 09:41:35 PM
Hola,

Crea un proyecto nuevo y experimenta con el siguiente código el cual deberás colocarlo en el evento step o paso de un objeto.
1. Primero consigue un sprite vidimensional rectangular con forma de flecha o un vehiculo que esté apuntando a la derecha. debes centrar el origen del sprite presionando el boton center.
2. Luego crea un objetos y le asignas el sprite anterior.
3. Al objeto creado le agregas un evento step y luego le agregas una hoja de código con el siguiente código.
4. creas una room y agregas el objeto creado.
5. play

////botones a usar
b1=keyboard_check(vk_left)
b2=keyboard_check(vk_up)
b3=keyboard_check(vk_right)

direction+=(b1-b3)*10
if(direction>360)direction-=360
if(direction<0)direction+=360

if(b2)
{
x+=cos(direction*pi/180)*5
y-=sin(direction*pi/180)*5
}

image_angle=direction


notas:
no lo uses en un evento draw porque no se va a ver el sprite y tendrás que usar el draw_sprite(sprite,image,x,y)