Hola! Disculpen, tengo una duda que me gustaria que la respondan. La cosa  es muy simple y la pregunta es ¿Cual es la manera de hacer que mientras mas tiempo avances mas velocidad tengas? algo como sonic, aunque logicamente con un limite.  :GM8:

#1 Octubre 27, 2020, 02:27:55 PM Ultima modificación: Octubre 27, 2020, 02:46:07 PM por T789
Saludos B_12.4

La manera mas facil seria agregandole a una variable con el tiempo, prueba creando una variable tipo "hsp" y sumarsela a la "x"
[gml]
/// Event Create
hsp = 0;
maxhsp[0] = 4;
maxhsp[1] = 7;
maxhsp[2] = 9;

hithsp = 0;
hcont = 0;
htime = room_speed*3; //puse un tiempo hipotetico
[/gml]
[gml]
/// Event Step
var kh;
kh = (keyboard_check(vk_right) - keyboard_check(vk_left));

/// Movimiento horizontal
if (kh <> 0 && !place_meeting(x+hsp, y, obj_solid) {
  if (abs(hsp) < maxhsp[hithsp])
  hsp += kh*0*5;

  image_xscale = 1+(2*(hsp<0));
  // Funciona para darle tiempo establecidos a cada aceleracion
  hcont += 1;
  if (hcont >= htime && hcont != 2) {
    hithsp = min(hithsp+1, 2);
    htime += room_speed*2;
    hcont = 0;
  }
}
else // Desaceleracion
if (hsp <> 0 && kh == 0) {
  var hx
  if (hithsp == 0)
      hx = 0.25;
      else
      hx = 0.5;

  hsp -= (sign(hsp)*hx);
  // Cambiar valores mientras se desacelera
  if (abs(hsp) > 4 && abs(hsp) < 7) {
    hithsp = 1;
    hcont = room_speed*3;
  }
  if (abs(hsp) > 0 && abs(hsp) < 4) {
    hithsp = 0;
    hcont = 0;
  }
}

/*Sumar hsp*/ x += hsp;
[/gml]

Creo que con lo primero de ese ejemplo de se puede lograr prácticamente lo mismo, bueno apenas acabo de pensarlo  :-[

intenta este sencillo.

[gml]///evento step

if keyboard_check(vk_right) and place_free(x+8,y) {

speed+=1
direction=0

}

if keyboard_check(vk_left) and place_free(x-8,y) {

speed+=1
direction=180

}

if speed>8 {

speed=8

}[/gml]

facilito, pero esos 8 de la speed y los place_free los puedes cambiar por los números que quieras
Azter