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
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.