Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Ikaro3d en Diciembre 30, 2018, 05:46:46 PM

Título: funcion lerp + place_free inconpatibles ?(solucionado)
Publicado por: Ikaro3d en Diciembre 30, 2018, 05:46:46 PM
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);

}
Título: Re:funcion lerp + place_free inconpatibles ?
Publicado por: Ynfiniti en Diciembre 30, 2018, 06:03:58 PM
¿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()
Título: Re:funcion lerp + place_free inconpatibles ?
Publicado por: Ikaro3d en Diciembre 30, 2018, 07:36:30 PM
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
Título: Re:funcion lerp + place_free inconpatibles ?
Publicado por: eams1986 en Diciembre 30, 2018, 08:29:47 PM
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
Título: Re:funcion lerp + place_free inconpatibles ?
Publicado por: Ikaro3d en Diciembre 30, 2018, 09:26:45 PM
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



Título: Re:funcion lerp + place_free inconpatibles ?
Publicado por: eams1986 en Diciembre 30, 2018, 11:13:56 PM
debes de quitar ya el lerp solo deja la funcion en step y listo
Título: Re:funcion lerp + place_free inconpatibles ?
Publicado por: Ikaro3d en Diciembre 30, 2018, 11:37:40 PM
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
Título: Re:funcion lerp + place_free inconpatibles ?
Publicado por: Ikaro3d en Diciembre 31, 2018, 12:57:18 AM
 A qui dejo un avance de lo que estoy haciendo
https://youtu.be/X_08LV5Q_VA (ftp://youtu.be/X_08LV5Q_VA)
Título: Re:funcion lerp + place_free inconpatibles ?
Publicado por: 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.
Título: Re:funcion lerp + place_free inconpatibles ?
Publicado por: Ikaro3d en Diciembre 31, 2018, 04:04:58 PM
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 (https://youtu.be/X_08LV5Q_VA)
Título: Re:funcion lerp + place_free inconpatibles ?
Publicado por: Ikaro3d en Enero 02, 2019, 12:47:40 AM
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