A ver si alguien me ilumina...
Quiero meter algo de inercia a mi personaje para que no pare en seco. He visto algunos ejemplos aqui mismo en el foro pero no acabo de dar con la tecla correcta.
Esta es la parte del codigo en la que se maneja a mi personaje (Gentileza del makero Texic):
if keyboard_check(vk_right) {repeat(3) {if place_free(x+1,y) {x+=1 mov=1 image_xscale=1}}}
if keyboard_check(vk_left) {repeat(3) {if place_free(x-1,y) {x-=1 mov=1 image_xscale=-1}}}
Se que hay que crear una variable que se reste cuando dejas de pulsar pero con ese codigo no se como aplicarla sin tener que rehacerlo todo.
Mmmm... Bueno declara una variable llamala "vel"
y cambia en el repeat(3) por esto repeat(vel)
Event create
vel=0;
ahora en el event step usas esto.
if keyboard_check(vk_right)
or keyboard_check(vk_left)
{
if vel < 3
{vel+=.1;}
}
else
{
if vel > 0
{vel-=.1;}
}
if keyboard_check(vk_right) {repeat(vel) {if place_free(x+1,y) {x+=1 mov=1 image_xscale=1}}}
if keyboard_check(vk_left) {repeat(vel) {if place_free(x-1,y) {x-=1 mov=1 image_xscale=-1}}}
Lo que propones es una de las cosas que probe, pero al estar el movimiento del sprite dentro de un if, este solo se produce si pulsas dicha tecla con lo que si no la òptimes, el personaje se queda parado en seco.
Tenes razon no lo tome en cuenta.
Declara la var direc=0;
if keyboard_check(vk_right)
or keyboard_check(vk_left)
{
if vel < 3
{vel+=.1;}
}
else
{
if vel > 0
{vel-=.1;}
}
if keyboard_check(vk_right)
{direc=1;}
else
if keyboard_check(vk_left)
{direc=0;}
if direc
{repeat(floor(vel)) {if place_free(x+1,y) {x+=1}} if place_free(x+frac(vel),y) {x+=frac(vel)}}
else
if !direc
{repeat(floor(vel)) {if place_free(x-1,y) {x-=1}} if place_free(x-frac(vel),y) {x-=frac(vel)}}
Cita de: elviskelley en Febrero 24, 2013, 01:44:11 AM
Tenes razon no lo tome en cuenta.
Declara la var direc=0;
if keyboard_check(vk_right)
or keyboard_check(vk_left)
{
if vel < 3
{vel+=.1;}
}
else
{
if vel > 0
{vel-=.1;}
}
if keyboard_check(vk_right)
{direc=1;}
else
if keyboard_check(vk_left)
{direc=0;}
if direc
{repeat(floor(vel)) {if place_free(x+1,y) {x+=1}} if place_free(x+frac(vel),y) {x+=frac(vel)}}
else
if !direc
{repeat(floor(vel)) {if place_free(x-1,y) {x-=1}} if place_free(x-frac(vel),y) {x-=frac(vel)}}
Ayer estuve liado al tema (a partir de la info que me diste y mirando por el foro) y al final consegui tanto inercia al empezar a moverse como al soltar las teclas. Tambien la puedo modificar en funcion de la superficie que pise el personaje o de si esta nadando o andando mediante una variable que hace de tope.
Ya tenia una variable similar a la que propones de direc y la aproveche. Gracias de todos modos.