Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: kostra en Noviembre 04, 2014, 02:54:55 PM

Título: busco un engine plataforma bien preciso
Publicado por: kostra en Noviembre 04, 2014, 02:54:55 PM
hola, miren a parte de mi proyecto rancio del pong solitario, ando empezando uno de plataformas, pero con la peculiaridad de que usaré sprites exageradamente pequeños, augmentados con la view, entonces, pasa que con los atributos del player, en muchas ocasiones al tocar el suelo, pues como se ve de tan cerca, se paprecia uno o dos píxels vacíos, por lo que el player, en ocasiones, vuela, y no tiene nada que ver con la mask... actualmente yo uso un engine plataformero que lo tengo en un scrip guardado y siempre que hago un juego plat, lo importo y le pongo atributos a mi gusto, claro que ahora, este engine no me sirve por esto... lo que uso ahora es.

script plat_create:
walksp = argument0;
jumpsp = argument1;
grav = argument2;
hsp = 0;
vsp = 0;
ground = 1;


script plat_step:
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;
}

lo del principio, el argument0 es para elegir con qué teclas son, eso fue un apaño mío por comodidad xd

entonces el player en create:
plat_create(3,6,0.6);
y en su step:
plat_step(0,sstand,swalk,sair);

os pongo lo que uso, por si se os ocurre una pequeña edición para perfeccionar la colisión con el suelo, pero si alguien tiene ya un engine que suela usar que le vaya bien, pues se agradecería mucho :)
Título: Re:busco un engine plataforma bien preciso
Publicado por: eams1986 en Noviembre 04, 2014, 03:00:55 PM
hola mire este a ver que le parece

https://www.youtube.com/watch?v=IysShLIaosk

Saludos
Título: Re:busco un engine plataforma bien preciso
Publicado por: Clamud en Noviembre 04, 2014, 03:14:42 PM
Lo que debes hacer es guardar la posición del personaje (y demás objetos) en unas variables diferentes a xy, haciendo el movimiento sin utilizar las variables predefinidas de GM (como en tu script de plataformas). Cuando vas a dibujar el personaje asignas las variables xy redondeando las posiciones con punto flotante (función round), así el personaje queda dibujado dentro de pixeles enteros.
Título: Re:busco un engine plataforma bien preciso
Publicado por: kostra en Noviembre 04, 2014, 03:27:29 PM
clamud, pasa que con los engines plataformeros siempre fui un negado y siempre me hago el lio, por lo que pillé de porai uno hecho que ya me iba bien, normalmente, hasta ahora... es por eso que sobre lo que me dices... no me entero de nada xd

eams, gracias a ver luego lo miro que ahora tengo que ir a tirar sacos de runas, luego cuando venga lo pruebo xd
EDITO: eams, no me sirve nada ese tuto, lo he seguido al pie de la letra y nisiquiera funciona, no cae abajo por gravedad y las dos teclas me hacen ir a la derecha, lo he revisado bien por si me equivocaba en algún signo pero nada, alomejor es porque en el estudio será diferente?, me extraña pero eso... que no me va :(
EDITO 2: ok ya encontré mi error, pero tampoco me sirve, es igual el engine, no es preciso como buscaba, gracias igual eeh ;)