Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: J.E.A en Septiembre 24, 2010, 07:00:28 AM

Título: Hacer que mi personaje resbale en una plataforma de hielo? (Ayuda)
Publicado por: J.E.A en Septiembre 24, 2010, 07:00:28 AM
Eso, como puedo hacer que mi personaje rebale en una plaaforma de hielo? ???
Título: Re: Hacer que mi personaje resbale en una plataforma de hielo?
Publicado por: Wadk en Septiembre 24, 2010, 08:37:59 AM
Veamos.
Lo primero es crear alg?n tipo de comprobaci?n que nos diga si el personaje est? en una plataforma de hielo o no. Un if, vamos.
Podr?a ser algo as?:
[gml]if(collision_point(x,y+1,objHielo,true,true))[/gml]
Luego, debes localizar en tu c?digo la parte en la que hac?s que el personaje deje de moverse cuando la tecla de movimiento es soltada, y antes de bajar la velocidad a 0, comprobar (con lo de arriba) si el personaje est? en el hielo, y si lo est?, baj?s s?lo un poco la velocidad.
Continuando, en la parte que hac?s que el personaje comience a moverse, antes de cambiar la velocidad comprobar si el personaje est? en el hielo, y si lo est?, aumentarla s?lo un poco.
Por ?ltimo, agregar otra vez la condici?n, esta vez en step en alg?n lado aislado, y si es falsa, cambiar inmediatamente la velocidad a 0 o a la velocidad normal de movimiento (si se est? presionando alguna tecla de movimiento).

Deber?as proporcionar m?s informaci?n si quer?s una respuesta m?s concreta. Por ejemplo, decirnos como funciona tu c?digo de movimiento, o mostr?rnoslo.
Título: Re: Hacer que mi personaje resbale en una plataforma de hielo?
Publicado por: J.E.A en Septiembre 24, 2010, 06:24:45 PM
Si, mis codigos son...

En Step lo tengo asi:

[gml]if place_free(x+0,y+1)

{gravity_direction=270
gravity=1.1}

else
{
gravity_direction=270
gravity=0}

[/gml]


En la colision con el suelo normal lo tengo:

[gml]if vspeed > 0 && y < other.y
{if place_free(x+0,y++vspeed)
{move_contact_solid(direction,12);
vspeed=0}
else
{move_contact_solid(direction,12);
vspeed=0}}[/gml]


En Left lo tengo:

[gml]if place_free(x-3,y+0)

x=x-3
y=y+0
[/gml]

En Right lo tengo:

[gml]if place_free(x+3,y+0)

x=x+3
y=y+0
[/gml]



y en Space el boton con el que salto lo tengo:

[gml]{if not place_free(x+0,y+1)
{vspeed=-10}}[/gml]

Título: Re: Hacer que mi personaje resbale en una plataforma de hielo? (Ayuda)
Publicado por: Ruisu~ en Septiembre 24, 2010, 10:39:09 PM
Recomiendo que pongas otro engine que utilize movimiento suavizado... y que cuando este sobre el hielo la aceleracion sea mas lenta y la friccion... creo que el fox engine soporta eso.
Título: Re: Hacer que mi personaje resbale en una plataforma de hielo? (Ayuda)
Publicado por: Wadk en Septiembre 24, 2010, 11:20:44 PM
A ver, hac? esto:
Agreg? en Create:
[gml]velocidad=0;
velocidad_max=3;[/gml]

Cambi? Step por:
[gml]if(keyboard_check(vk_left)){
    if(collision_point(x,y+1,objHielo,true,true)){
        velocidad=max(velocidad-1,velocidad_max*-1);
    }else{
        velocidad=velocidad_max*-1;
    }
}else if(keyboard_check(vk_right)){
    if(collision_point(x,y+1,objHielo,true,true)){
        velocidad=min(velocidad+1,velocidad_max);
    }else{
        velocidad=velocidad_max;
    }
}else{
    if(collision_point(x,y+1,objHielo,true,true)){
        if(velocidad>0){
            velocidad=max(velocidad-1,0);
        }else if(velocidad<0){
            velocidad=min(velocidad+1,0);
        }
    }else{
        velocidad=0;
    }
}

gravity=place_free(x+0,y+1)*1.1;

if(place_free(x+velocidad,y)){
    x+=velocidad;
}[/gml]

Y borr? lo que tengas en key left y right.
Ah, y ten?s que reemplazar donde dice objHielo por el nombre del piso congelado.

No lo prob?, no tengo el GM.
Título: Re: Hacer que mi personaje resbale en una plataforma de hielo? (Ayuda)
Publicado por: J.E.A en Septiembre 25, 2010, 01:15:24 AM
El codigo funciona perfecto, pero no resbala todavia jeje. Que puede ser?
Título: Re: Hacer que mi personaje resbale en una plataforma de hielo? (Ayuda)
Publicado por: Wadk en Septiembre 25, 2010, 01:59:31 AM
Para que podamos solucionar tu problema, ten?s que dar suficiente informaci?n.
Respond? lo siguiente:
?Qu? hiciste?
?Qu? esperabas?
?Qu? pas??
Título: Re: Hacer que mi personaje resbale en una plataforma de hielo? (Ayuda)
Publicado por: J.E.A en Septiembre 25, 2010, 06:51:11 AM
Saque lo de Left y Right. Esperaba que el personaje resbalara al caminar sobre el hielo. No paso nada. Cualquier cosa adjunto mi juego  :(
Título: Re: Hacer que mi personaje resbale en una plataforma de hielo? (Ayuda)
Publicado por: Wadk en Septiembre 25, 2010, 10:12:41 AM
Hombre, ten?s que ser m?s espec?fico. Y adjuntar tu juego no me va a servir porque uso Linux (aunque otro te podr?a ayudar si lo hac?s).

A ver, asumo que cuando dec?s "Saque lo de Left y Right", no es que s?lo hayas hecho eso, sino que seguiste todas mis instrucciones.
Despu?s, deber?as especificar a qu? te refer?s con "resbalar". Asum? que quer?as que el personaje fuera agarrando velocidad de a poco al empezar a caminar y tambi?n que la fuera perdiendo de a poco al dejar de hacerlo, pero podr?as querer otra cosa...
Y por ?ltimo "No paso nada" es muy ambiguo. ?A qu? te refer?s exactamente? ?El juego sigue funcionando de la misma forma que antes de aplicar los cambios? Asumiendo que sea as?, y que mis otras dos asunciones sean correctas, el problema debe ser la condici?n (collision_point(x,y+1,objHielo,true,true)). Pon? en step algo as?:
[gml]condicion=collision_point(x,y+1,objHielo,true,true);[/gml]
Y comprob? en el modo debug si la variable condici?n siempre vale 0 o llega a valer 1 cuando el personaje se para en el hielo.
Título: Re: Hacer que mi personaje resbale en una plataforma de hielo? (Ayuda)
Publicado por: J.E.A en Septiembre 25, 2010, 04:39:03 PM
Si segui todos tus pasos, yo quisiera que el personaje haga el efecto de resbalado como que en esa zona cueste caminar, o sea, vaya acelerando lentamente y despues al querer cambiar de direcci?n, izquierda o derecha, cueste en caminar para el lado contrario. Ojala me entindan, igual dejo el adjunto
Título: Re: Hacer que mi personaje resbale en una plataforma de hielo? (Ayuda)
Publicado por: zerozerito en Septiembre 25, 2010, 09:50:13 PM
amigo tu personaje no resbala por que usas el jump

osea

x+=3

entonces al usar el movimiento con x e y el objeto no resbala por que salta y no utiliza la velocidad

te recomiendo reemplazarlo por la hspeed

ya que la friccion o mas bien resbalar solo funciona con las variables de velocidad (hspeed y vspeed) y no con x e y

es por eso el error
Título: Re: Hacer que mi personaje resbale en una plataforma de hielo? (Ayuda)
Publicado por: Wadk en Septiembre 26, 2010, 12:01:27 AM
No s?, no puedo ver el editable pero a ver, lo que ten?as que hacer era agregar el c?digo que puse en Create, borrar TODO lo que ten?as en Step y poner el c?digo que puse en su lugar y borrar lo que ten?as en left y right. Todav?a no me respondiste, despu?s de hacer eso, ?qu? pasa exactamente? ?el juego sigue funcionando igual que antes o qu??
Título: Re: Hacer que mi personaje resbale en una plataforma de hielo? (Ayuda)
Publicado por: J.E.A en Septiembre 26, 2010, 12:38:17 AM
Hola Wadk, si que te respondi :-[, fijate arriba de zerozerito que esta mi comentario, dije que es lo que hace. Funciona igual a como estuvo siempre,unicamente que tiene los codigos que me diste, y funcionan bien .voy a probar lo que dijo zerozerito, capas que nada mas me falto eso.

Gracias por responderme :)

Ahora enseguida lo pruebo si no ma?ana y te cuento
Título: Re: Hacer que mi personaje resbale en una plataforma de hielo? (Ayuda)
Publicado por: Wadk en Septiembre 26, 2010, 03:35:16 AM
S?lo me hab?as descrito el efecto que quer?as, no lo que pas?...

Bueno, entonces, como dije, el error debe estar en la condici?n.
Hac? lo que dije, pon? esto en step:
[gml]condicion=collision_point(x,y+1,objHielo,true,true);[/gml]
Y fijate en el modo debug si el valor de la variable condici?n cambia a 1 cuando el personaje est? sobre el hielo.
Título: Re: Hacer que mi personaje resbale en una plataforma de hielo? (Ayuda)
Publicado por: J.E.A en Septiembre 26, 2010, 05:37:35 AM
Que raro, lo tengo tal como me lo diste Wadk

En Step lo tengo asi:

en el create esta asi:

[gml]velocidad=0;
velocidad_max=3;[/gml]

[gml]
if(keyboard_check(vk_left)){
    if (collision_point(x,y+1,Hielo,true,true)){
        velocidad=max(velocidad-1,velocidad_max*-1);
    }else{
        velocidad=velocidad_max*-1;
    }
}else if(keyboard_check(vk_right)){
    if(collision_point(x,y+1,Hielo,true,true)){
        velocidad=min(velocidad+1,velocidad_max);
    }else{
        velocidad=velocidad_max;
    }
}else{
    if(collision_point(x,y+1,Hielo,true,true)){
        if(velocidad>0){
            velocidad=max(velocidad-1,0);
        }else if(velocidad<0){
            velocidad=min(velocidad+1,0);
        }
    }else{
        velocidad=0;
    }
}

gravity=place_free(x+0,y+1)*1.1;

if(place_free(x+velocidad,y)){
    x+=velocidad;
}[/gml]


Este hielo que no resbala  XD .No de enserio que podra ser? que problemon.
Título: Re: Hacer que mi personaje resbale en una plataforma de hielo? (Ayuda)
Publicado por: Wadk en Septiembre 26, 2010, 08:32:58 AM
Ya te lo dije dos veces:
Cita de: Wadk en Septiembre 26, 2010, 03:35:16 AMBueno, entonces, como dije, el error debe estar en la condici?n.
Hac? lo que dije, pon? esto en step:
[gml]condicion=collision_point(x,y+1,objHielo,true,true);[/gml]
Y fijate en el modo debug si el valor de la variable condici?n cambia a 1 cuando el personaje est? sobre el hielo.
Título: Re: Hacer que mi personaje resbale en una plataforma de hielo? (Ayuda)
Publicado por: J.E.A en Septiembre 26, 2010, 05:13:13 PM
Ah ok, entonces tenia que fijarme ahi, lo pruebo y te digo, ojala que esta vez se pueda :-[