Diciembre 30, 2018, 05:46:46 PM Ultima modificación: Enero 02, 2019, 12:54:43 AM por Ikaro3d
Hola compañeros se como utilizar estas dos funciones, por separado o plece_free  para las direcciones de movimiento Y colisionar

como puedo utilizar corectamente las dos funciones juntas , al colisionar no se me mueve por culpa de que tengo los movimintos de esta forma y no por separado


if place_free (x-4,y) {




  xx += (keyboard_check(ord("D"))  -keyboard_check(ord("A")) ) *v;

  x=lerp(x,xx,0.2);}

  yy += (keyboard_check(ord("S"))  -keyboard_check(ord("W"))) *v;

    y=lerp(y,yy,0.2);

}

¿Qué intentas hacer con lerp?

lerp es compatible con todo, ya que devuelve un simple número, sólo debes hacer bien tus cálculos.
Si lo que quieres es limitar los valores, puedes usar clamp()

Hola ynfiniti, lo que intento es que mi nave colision para que no se salga de la room, tengo unos bloques colocados alrededor, los movimientos están en xx y yy con la función lerp y no se como programar la función place_free funcione correctamente con las direcciones , soy muy novato

Hola! entonces quite los bloque por que ya no los necesita y ponga este codigo

//Impedir que el personaje salga de los límites de la habitación

x = clamp(x, 16, room_width-16) //esto es para los lados 


y = clamp(y, 64, room_height-110)//esto es para arriba y abajo

Nota: usted ajustelos a su modo adecuado :)

saludos y bendiciones

#4 Diciembre 30, 2018, 09:26:45 PM Ultima modificación: Diciembre 30, 2018, 09:30:09 PM por Ikaro3d
Hola Eams y Ynfiniti   he colocado la función  clamp me hace un efecto muy raro ,dependiendo si lo pongo antes o después que el lerp, si lo pongo antes cuando llega el mínimo empieza como a revotar , y si lo dejo despues funciona , se para en el limite ,pero para ir a la dirección contraria ,todo el tiempo que mantengo  tecla hacia arriba  ,luego para moverse hacia abajo tarda el mimso tiempo en moverse  ,si he presionado estando parado 10 fps ,cuando presiono hacia abajo tarda en moverse esos 10 fps que he apretado de mas en moverse es como si la dirección siguiera sumándose o restándose

  xx += (keyboard_check(ord("D"))  -keyboard_check(ord("A")) ) *v;

       x=lerp(x,xx,0.2);

  yy += (keyboard_check(ord("S"))  -keyboard_check(ord("W"))) *v;

       y=lerp(y,yy,0.2);



x = clamp(x, 850, room_width-110) //esto es para los lados 


       y = clamp(y, 500, room_height-110)//esto es para arriba y abajo





#6 Diciembre 30, 2018, 11:37:40 PM Ultima modificación: Diciembre 31, 2018, 01:37:50 AM por Ikaro3d
Te refieres a borrarla ?si lo que quiero que el objeto que tengo con lerp me  utilice esa función  ,es una nave y cuando dejo de pulsar desacelera

no hay otro metodo?

soy un pesado lo se jeje

#7 Diciembre 31, 2018, 12:57:18 AM Ultima modificación: Diciembre 31, 2018, 03:45:24 PM por Ikaro3d
 A qui dejo un avance de lo que estoy haciendo
https://youtu.be/X_08LV5Q_VA

Va quedando muy bien el juego.

Esto parece que funciona
[gml]
xx += (keyboard_check(ord("D")) - keyboard_check(ord("A"))) * v;
yy += (keyboard_check(ord("S")) - keyboard_check(ord("W"))) * v;

x = lerp(x, xx, 0.2);
y = lerp(y, yy, 0.2);

if (x < 16) {
   x = 16;
   xx = x;
}
if (x > room_width-16) {
   x = room_width-16;
   xx = x;
}
if (y < 16) {
   y = 16;
   yy = y;
}
if (y > room_height-16) {
   y = room_height-16;
   yy = y;
}
[/gml]
Cambia 16 por un valor que se ajuste al tamaño de la nave

Deberías alinear el código para que sea más fácil de leer.

Gracias en un rato lo pruebo a ver si aparte de que funcione lo entiendo  :D feliz año nuevo


https://youtu.be/X_08LV5Q_VA

#10 Enero 02, 2019, 12:47:40 AM Ultima modificación: Enero 02, 2019, 12:49:31 AM por Ikaro3d
Cita de: Clamud en Diciembre 31, 2018, 05:43:23 AM
Va quedando muy bien el juego.

Esto parece que funciona
[gml]
xx += (keyboard_check(ord("D")) - keyboard_check(ord("A"))) * v;
yy += (keyboard_check(ord("S")) - keyboard_check(ord("W"))) * v;

x = lerp(x, xx, 0.2);
y = lerp(y, yy, 0.2);

if (x < 16) {
   x = 16;
   xx = x;
}
if (x > room_width-16) {
   x = room_width-16;
   xx = x;
}
if (y < 16) {
   y = 16;
   yy = y;
}
if (y > room_height-16) {
   y = room_height-16;
   yy = y;
}
[/gml]
Cambia 16 por un valor que se ajuste al tamaño de la nave

Deberías alinear el código para que sea más fácil de leer.
Funciona a la perfección gracias!! lo mejor ,es que lo  entendido   :) ,ahora me toca experimentar ,cambiar los valores por una variable y que se vaya ajustando al zoom de la cámara