Noticias

¡Ayuda a la Comunidad GM, haz una donación!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Personaje sigue avanzando después de dejar de presionar W y S  (Leído 366 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Martinzilloxd

  • Visitante
  • *
  • Puntos: 6
  • Mensajes: 2
    • Ver Perfil
Creé un script paraque el personaje se moviera hacía adelante y atras con W y S, y con las teclas A y D rotará para cambiar el curso, pero aún soltando la tecla W o S sigue avanzando
//velocidad de personaje
velocidad=3;

//Rotacion de personaje
if (keyboard_check(ord("A"))) {image_angle = direction++;
direction = image_angle +10}
if (keyboard_check(ord("D"))) {image_angle = direction--;
direction = image_angle -10;}

//Movimiento de personaje hacia su dirrecion actual
if (keyboard_check(ord("W"))) {move_towards_point(direction, direction, velocidad);
direction=image_angle;}

if (keyboard_check(ord("S"))) {move_towards_point(direction, direction, -velocidad);
direction=image_angle;}

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado bygdle

  • Flota de Justicia Particular.
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 2841
  • Mensajes: 1.715
  • Agradecido: 151 veces
  • Sexo: Masculino
  • Thomas the dank engine.
    • Ver Perfil
Respuesta #1 en: Septiembre 09, 2020, 04:45:06 pm
El manual dice:
Citar
Note: this function sets the speed of the instance, so even if you stop using this code, the instance will keep moving in the previous direction, so it is necessary to set the instance speed to 0 if you wish it to stop. See the code example below.

http://docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/movement/move_towards_point.html

Además, los dos primeros parámetros de la función son las coordenadas (x,y) absolutas a las que quieres mover el objeto, pero tú le estás pasando un ángulo, cosa que no tiene sentido.



Una solución simple sería hacer esto:
if (keyboard_check(ord("W"))) {
    x += lengthdir_x(velocidad, direction);
    y += lengthdir_y(velocidad, direction);
}
if (keyboard_check(ord("S"))) {
    x -= lengthdir_x(velocidad, direction);
    y -= lengthdir_y(velocidad, direction);
}
Personalmente no me gusta usar las funciones de movimiento del GM, prefiero modificar directamente las coordenadas de los objetos.

http://docs.yoyogames.com/source/dadiospice/002_reference/maths/real%20valued%20functions/lengthdir_x.html
http://docs.yoyogames.com/source/dadiospice/002_reference/maths/real%20valued%20functions/lengthdir_y.html

alaberga regué el café.

BA:STFW&RTFM
 
Los siguientes usuarios dieron las gracias a este tema: Martinzilloxd


Desconectado Martinzilloxd

  • Visitante
  • *
  • Puntos: 6
  • Mensajes: 2
    • Ver Perfil
Respuesta #2 en: Septiembre 09, 2020, 09:14:45 pm
Gracias  :D, me estoy pasando del drag and drop a escribir el codigo directamente, soy muy novato xD