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
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
debes de quitar ya el lerp solo deja la funcion en step y listo
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
A qui dejo un avance de lo que estoy haciendo
https://youtu.be/X_08LV5Q_VA (ftp://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 (https://youtu.be/X_08LV5Q_VA)
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