Septiembre 24, 2010, 07:00:28 AM Ultima modificación: Septiembre 24, 2010, 06:25:32 PM por J.E.A
Eso, como puedo hacer que mi personaje rebale en una plaaforma de hielo? ???
Cada día que pasa estoy mas enamorado de Holly Earl.

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.
Vim.

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]

Cada día que pasa estoy mas enamorado de Holly Earl.

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.

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.
Vim.

El codigo funciona perfecto, pero no resbala todavia jeje. Que puede ser?
Cada día que pasa estoy mas enamorado de Holly Earl.

Para que podamos solucionar tu problema, ten?s que dar suficiente informaci?n.
Respond? lo siguiente:
?Qu? hiciste?
?Qu? esperabas?
?Qu? pas??
Vim.

Saque lo de Left y Right. Esperaba que el personaje resbalara al caminar sobre el hielo. No paso nada. Cualquier cosa adjunto mi juego  :(
Cada día que pasa estoy mas enamorado de Holly Earl.

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.
Vim.

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
Cada día que pasa estoy mas enamorado de Holly Earl.

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

Mi nuevo juego Infeccion
http://www.comunidadgm.org/index.php?topic=12886.0

Mi juego iluminacion
http://www.comunidadgm.org/index.php?topic=12843.0

Que hacer si tu antivirus te detecta un juego que has creado como virus?

http://www.comunidadgm.org/index.php?topic=12632.0

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??
Vim.

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
Cada día que pasa estoy mas enamorado de Holly Earl.

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.
Vim.

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.
Cada día que pasa estoy mas enamorado de Holly Earl.