Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: zorge en Enero 11, 2016, 10:19:27 PM

Título: colision con plataforma por abajo
Publicado por: zorge en Enero 11, 2016, 10:19:27 PM
Hola nuevamente, muy a duras penas y con un esfuerzo titanico he conseguido entre ayuda de la gente de aquí ayuda de tutoriales y algo de ayuda divina, que mi player haga todos los movimientos y colisiones geniales escepto la de choque con el techo que se me queda trabado llevo desde esta mañana con este mismo problema y como os digo he revisado tutoriales y todo me falla si algún alma cándida quisiera echarme una pequeña manita....
PD : dejo un editable con el ejemplo en si de como tengo todo hasta ahora

Gracias de antemano a todos.
Título: Re:colision con plataforma por abajo
Publicado por: kostra en Enero 12, 2016, 12:20:01 AM
yo para que no se pegue con el techo suelo poner siempre únicamente if !place_free(x,y-1) y += 1;
Título: Re:colision con plataforma por abajo
Publicado por: zorge en Enero 12, 2016, 12:39:43 AM
nada no me funciona de ninguna manera eso kostra derrepente mi player empieza a rebotar..........
Título: Re:colision con plataforma por abajo
Publicado por: kostra en Enero 12, 2016, 12:40:38 AM
cómova a rebotar si con lo que te puse detecta lo de arriba, explicate :S representa que tienes gravedad
Título: Re:colision con plataforma por abajo
Publicado por: zorge en Enero 12, 2016, 12:43:14 AM
pues lo que te digo que se comporta de una manera algo rara   XDXD seguramente sea porque mi organización de código es bastante mala y cualquiera de las cosas que haya hecho entre en conflicto de alguna manera con el código que me has dado así que como te digo rebota......XDXD
Título: Re:colision con plataforma por abajo
Publicado por: kostra en Enero 12, 2016, 12:44:17 AM
ya tardas en plasmar todo tu código aquí xD o quieres que te pase el engine platform que uso yo siempre?
Título: Re:colision con plataforma por abajo
Publicado por: zorge en Enero 12, 2016, 12:50:19 AM
he dejado un edítable si te vale???si no escribo todo el código XDXD jajaja obviamente también me encantaría tener tu engine ya que desgraciadamente en gml soy un poco lastimoso y en España hay pocos sitios en los que enseñen gml..... pero bueno XD

Título: Re:colision con plataforma por abajo
Publicado por: kostra en Enero 12, 2016, 12:56:13 AM
mejor sí, te paso lo ke uso, pk ando bebido y no soy capaz de ayudarte mirando tu engine ahora, para mí ahora, un libro de niños de 3 años es ilegible xD
[gml]///plat_create(spd,jmp,grv)
/*
0 velocidad
1 salto
2 gravity

ejemplo: plat_create(4,10,1);
*/
walksp = argument0;
jumpsp = argument1;
grav = argument2;
hsp = 0;
vsp = 0;
ground = 1;
[/gml]
[gml]///plat_step(mode,spr_stand,spr_walking,spr_in_air)
/*
0 mode (0 = flechas, 1 = WASD)
1 spr quieto
2 spr corriendo
3 spr en el aire

ejemplo: plat_step(1,spr_stand,spr_walk,spr_air);
*/

if argument0 <= 0
{
    KEY_RIGHT=keyboard_check(vk_right);
    KEY_LEFT=keyboard_check(vk_left);
    KEY_JUMP=keyboard_check_pressed(vk_up);
    KEY_FALL=keyboard_check_released(vk_up);
}
else
{
    KEY_RIGHT=keyboard_check(ord('D'));
    KEY_LEFT=keyboard_check(ord('A'));
    KEY_JUMP=keyboard_check_pressed(ord('W'));
    KEY_FALL=keyboard_check_released(ord('W'));
}
   
if (KEY_RIGHT)
{
   hsp=walksp;
   image_xscale=1;
}
if (KEY_LEFT)
{
   hsp=-walksp;
   image_xscale=-1;
}
if (!KEY_RIGHT and !KEY_LEFT) hsp=0;
if (!place_free(x+hsp,y))
{
   if (hsp!=0)
      while (place_free(x+sign(hsp),y))
         x+=sign(hsp);
   hsp=0;
}
x+=hsp;
if (!place_free(x,y+1)) grounded=1;
else grounded=0;
if (KEY_JUMP and grounded)
{
   vsp=-jumpsp;
}
if (KEY_FALL and !grounded and vsp<-1) vsp=-1;
if (!grounded) vsp+=grav;
if (!place_free(x,y+vsp) && vsp<0)
{
   while (place_free(x,y+sign(vsp))) y+=sign(vsp);
   vsp=0;
}
if (!place_free(x,y+vsp) and vsp>0)
{
   var cc;
   cc=vsp+1;
   while (place_free(x,y+1) and cc>=0) y+=1;
   grounded=1;
   vsp=0;
}
y+=vsp;
if (grounded)
{
   if (hsp==0)
   {
      sprite_index=argument1;
   }
   else
   {
      if (sprite_index!=argument2)
      sprite_index=argument2;
   }
}
else
{
   sprite_index=argument3;
}
[/gml]
Título: Re:colision con plataforma por abajo
Publicado por: zorge en Enero 12, 2016, 01:20:47 AM
te lo agradezco aunque creo que es algo complejo para mi tu sistema voy a intentar implementarlo con el que ya tengo a ver si doy con la solución a todos mis males XD
Título: Re:colision con plataforma por abajo
Publicado por: kostra en Enero 12, 2016, 01:22:30 AM
pero si tienes anotado hasta ejemplos xDD
es copypaste practicamente xd
Título: Re:colision con plataforma por abajo
Publicado por: zorge en Enero 12, 2016, 01:29:59 AM
Si jajajaaj pero el problema que aunque sea copy paste a veces al tener tanto lío en mi código interno luego no suelen quedar bien jajajaj
Título: Re:colision con plataforma por abajo
Publicado por: kostra en Enero 12, 2016, 01:33:15 AM
por eso te pasé SCRIPTS para que no se te mezcle con tus cosas xD, te has parado a prestarle una MÍNIMA atención a lo que te puse? xD
Título: Re:colision con plataforma por abajo
Publicado por: zorge en Enero 12, 2016, 01:35:44 AM
si pero querido kostra me temo que aun soy algo novato para entender el funcionamiento..... :(
Título: Re:colision con plataforma por abajo
Publicado por: bygdle en Enero 12, 2016, 01:36:33 AM
Que esto no es un chat por Dios!
¿Van a escribir una frase por post?
XD :-[
Título: Re:colision con plataforma por abajo
Publicado por: kostra en Enero 12, 2016, 01:41:39 AM
1- crea un script llamado "plat_create" con el primer código
2- crea un script llamado "plat_step" con el segundo código
3- en el player, evento create escribe plat_create(velocidad,velocidad_de_salto,gravedad);
por ejemplo plate_create(5,15,1);
4- en el player, evento step escribe plat_step(modo,sprite_quieto,sprite_corriendo,sprite_en_el_aire);
por ejemplo plat_step(1,spr_quieto,spr_caminando,spr_salto);

siendo el modo, 0 para las flechas del teclado, 1 para W,S,A,D   elije el que más te guste.

5- FIN disfruta de tu platformer del futuro xD
Título: Re:colision con plataforma por abajo
Publicado por: zorge en Enero 12, 2016, 01:54:59 AM
Vale, no había leído lo de los script....XDXD igualmente aunque es funcional tiene fallitos y luego cuando siga implementando mas opciones me va a ser muy difícil de ajustar creo yo XDXD ya que mi personaje tiene un argumento mas que seria walk with gun y ese no esta en tu engine..... XDXD
Título: Re:colision con plataforma por abajo
Publicado por: kostra en Enero 12, 2016, 02:03:43 AM
que no esté no significa que sea un error xD
dale, estúdiatelo con calma e implementa eso que dices :B
Título: Re:colision con plataforma por abajo
Publicado por: zorge en Enero 12, 2016, 02:20:08 AM
XDXD no me referia a eso como error eee..... XDXD lo del fallito es una cosa que ya pregunte en el foro que pasaba y es que cuando presionas por ejemplo der y le das a izq en vez de seguir hacia adelante se va a izq y con la izq por ejemplo no pasa eso ...XDXD igualmente estudiare lo que me has dejado y por supuesto agradecerte la ayuda.
Título: Re:colision con plataforma por abajo
Publicado por: kostra en Enero 12, 2016, 02:26:38 AM
eso solo pasa usando hspeed, usando incremento y decremento de la x, eso es imposible de que pase :/
Título: Re:colision con plataforma por abajo
Publicado por: zorge en Enero 12, 2016, 02:32:59 AM
Pues te aseguro que pasa......cuando voy a der obviamente pulso la tecla asignada a der en este caso es la flecha si mantengo pulsada der y mientras sigue pulsada pulso izq se va a la izq te lo aseguro ademas no hay conflicto con ningún codigo mio ya que lo borre todo.... y cuando dejo pulsado izq y pulso der no pasa nada que es como debería pasar con der
Título: Re:colision con plataforma por abajo
Publicado por: kostra en Enero 12, 2016, 02:40:43 AM
ejemplo:
tecla izq: x -= 4;
tecla der: x += 4;

1 step, x se le resta 4 y se le suma 4, x = x

ES COMPLETAMENTE IMPOSIBLE!!!
Título: Re:colision con plataforma por abajo
Publicado por: zorge en Enero 12, 2016, 02:46:12 AM
pues te lo puedo asegurar que asi sucede,solo cuando pulso primero der que izq si pulso primero izq y mientras tanto `pulso der sigue a izq pero si pulso der y mientras lo mantengo pulso izq se va a izq y no hay mas codigo que el que tu me has dado
Título: Re:colision con plataforma por abajo
Publicado por: kostra en Enero 12, 2016, 02:51:20 AM
pero ese código usa algo similar a hspeed, pero propia xD, pensé que decías otra cosa, en ese caso, asía ojo, cambia las lineas "hsp=walksp;" y "hsp=-walksp;" por "hsp+=walksp;" y "hsp-=walksp;" y por último borra la linea que dice "x+=hsp;"
Título: Re:colision con plataforma por abajo
Publicado por: zorge en Enero 12, 2016, 03:03:24 AM
si quito la ultima linea la de x+ hsp el player no se mueve a ningun lado dejandola arregla el problema solo que la velocidad se multiplica por step
Título: Re:colision con plataforma por abajo
Publicado por: kostra en Enero 12, 2016, 03:05:12 AM
disculpa,cambia las dos primeras que dije por x+=walksp y x-=walksp :B
Título: Re:colision con plataforma por abajo
Publicado por: zorge en Enero 12, 2016, 03:07:37 AM
pero ahora tampoco valdria XDXDXD ya que ahora se anulan ambas velocidades y si pulso der y pulso izq se queda parado cuando lo que deberia es sergui a der que se presiono primero......ademas ahora las colisiones tampoco funcionan bien XDXD
Título: Re:colision con plataforma por abajo
Publicado por: kostra en Enero 12, 2016, 03:10:50 AM
tio tengo sueño, mañana te ayudo xD, dile a Niu, que no duerme xD
Título: Re:colision con plataforma por abajo
Publicado por: zorge en Enero 12, 2016, 03:15:44 AM
jajaja no te preocupes muchas gracias igualmente :)
Título: Re:colision con plataforma por abajo
Publicado por: Clamud en Enero 12, 2016, 03:09:22 PM
Ya revisé tu proyecto, creo que es mejor que lo re-escribas, porque el código está demasiado disperso y ademas las colisiones se detectan de un modo más complicado de lo que deberían. Sigue los consejos de kostra, también puedes encontrar varios ejemplos en la comunidad y otros lugares de internet.