Junio 11, 2011, 07:50:03 PM Ultima modificación: Junio 11, 2011, 07:58:39 PM por maxi87
hola!! volvi despues de mucho
y sigo con problemas  :-[ y encima lo poco q sabia de gml casi se me borro pero estoy intentando usar execute code al maximo posible jaja
el titulo adelanta algo pero...
como hago para q cuando toque la "D" (por ej) mi personaje gradualmente acelere hacia la derecha hasta q si llega a la velocidad maxima se mantenga en esa velocidad y cuando suelte la "D" desacelere en la mitad del tiempo de la aceleracion
para q se ubiquen mejor es un plataformas
tenia una idea de combinar press y release keys con hspeed pero no funciono... o algo hice mal
...viendo si sale algun shooter de plataformas...

ya intentaste esto:
En el evento create
[gml]
corriendo=false
[/gml]

En el evento de presionar la tecla D
[gml]
corriendo=true;
if(speed<velocida_maxima)
{
  speed+=2 //por decir que aumenta gradualmente de 2 en 2
}
[/gml]

y en el evento de soltar la tecla D
[gml]
corriendo=false
[/gml]

Y en Step
[gml]
if(corriendo==false && speed>0)
{
  speed-=2 //por decir que se reduce de 2 en 2
}
if(speed<0)//por cualquier cosa
{
  speed=0
}
[/gml]

Y para desplazarte hacia la izquierda y derecha puedes usar una variable de direccion que valga 1 cuando sea hacia la derecha y -1 cuando sea hacia la izquierda, as? solo basta con calcula hspeed as?:
[gml]
hspeed=speed*direccion;
[/gml]

:-[

Te dejo como lo har?a yo.
Create:
[gml]_speed = 0;   // La velocidad actual. El gui?n bajo es para que no se use la variable speed del GM.
maxspeed = 5;  // Esta es la velocidad m?xima.
accel = .25;  // La aceleraci?n.
_friction = .5;  // La fricci?n con el suelo.[/gml]

Step:
[gml]if (keyboard_check(vk_left)) {
    _speed = max(_speed - accel, -maxspeed);
} else if (keyboard_check(vk_right)) {
    _speed = min(_speed + accel, maxspeed);
} else {
    if (_speed < 0) {
        _speed = min(_speed + _friction, 0)
    } else {
        _speed = max(_speed - _friction, 0)
    }
}

if (_speed < 0) {
    move_contact_solid(0, -_speed);
} else {
    move_contact_solid(180, _speed);
}[/gml]

Pod?s modificar los valores en create para que quede como quieras.
Vim.