Enero 11, 2018, 05:00:01 PM Ultima modificación: Enero 11, 2018, 05:48:27 PM por Mental.Gif
Hola buenas, el problema que tengo (soy nuevo en game maker) esta en las colisiones, frenar el personaje contra un bloque de pared, y tambien lo de activar la gravedad para que caiga en el suelo (adjunte un video del problema en este asunto, que esta practicamente flotando en el aire el personaje)

ah, y este Este es el codigo que estoy utilizando en "objeto_Player" >>> Step:

//control del personaje - teclado
var keyLeft = -keyboard_check(vk_left);
var keyRight = keyboard_check(vk_right);

//mouvimiento del personaje
var numMove = keyLeft + keyRight;

if (numMove != 0) numMirror = numMove;

numVX = numMove * 4;

//Animation
if (numMove == 0) sprite_index = Sprite_Prota_Quiet;
else sprite_index = Spr_Prota_run;

x += numVX;

//Hotizontal Collision - [b]que pongo aqui??[/b]



tambien puse en "objeto_Player" >>> Create:

numSX = 0;
numMirror = 1;

y en "objeto_Player" >>> Draw:

draw_sprite_ext(sprite_index, image_index,x,y,numMirror,image_yscale, 0, c_white, 1);


..me imagino que lo del codigo "Mirror" sea para las teclas izquierda/derecha del personaje, activando el sprite del personaje corriendo en modo espejo para que pueda verse en ambos sentidos.

y eso, que me perdi en el horizontal collision.. ya que segui varios videos tutoriales a la vez y mezcle un codigos de un youtuber con otro codigo diferente y no se complementaban ambos codigos.. ya que usaban metodos distintos para llegar al mismo resultado..
Pues eso, muchas gracias de antemano!!

bueno veo que la estructura es parecida al código de shaun spalding eso es bueno te invito veas este vídeo contiene todo lo que necesitas para empezar con las colisiones:

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

si quieres un codigo ya hecho te invito veas el code source para un juego de plataformas que ya viene equipado con todo lo que nesecitas:

http://www.comunidadgm.org/desarrollo-de-scripts/platformer-'engine'-source-code/


suerte en eso!
Programame! como a una de tus árcades chinas

GET BEHIND ME DOCTOR!

#2 Enero 11, 2018, 11:56:59 PM Ultima modificación: Enero 11, 2018, 11:58:59 PM por Mental.Gif
Cita de: cristopher2545 en Enero 11, 2018, 10:06:03 PM
bueno veo que la estructura es parecida al código de shaun spalding eso es bueno te invito veas este vídeo contiene todo lo que necesitas para empezar con las colisiones:

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

si quieres un codigo ya hecho te invito veas el code source para un juego de plataformas que ya viene equipado con todo lo que nesecitas:

http://www.comunidadgm.org/desarrollo-de-scripts/platformer-'engine'-source-code/


suerte en eso!

muchisimas gracias!!! de verdad me ayudo mucho, solo una cosa, estoy 3 cuartos de hora dando vueltas al codigo de shaun spalding y no hay manera en la que encuentre el error... cuando pulso la tecla izquierda el personaje se mueve incorectamente hacia la derecha, la tecla derecha hace bien su trabajo pero la izquierda hace que mi personaje sigue la misma ruta que la derecha.. me frustra mucho no encontrar el problema, ya que parece una chorrada de lo mas facil del mundo en resolver.
este es el codigo Event del protagonista:


//get the player's input
key_right = keyboard_check(vk_right);
key_left = keyboard_check(vk_left);
key_jump = keyboard_check_pressed(vk_space);

//calculate movement
var move = key_right - key_left;
hsp = move * walksp;
vsp = vsp + grv;

if (place_meeting(x,y+1,objeto_Block)) && (key_jump)
{
vsp = -7;
}

//horizontal collision
if (place_meeting(x+hsp,y,objeto_Block))
{
while (!place_meeting(x+sign(hsp),y,objeto_Block))
{
x = x + sign(hsp);
}
hsp = 0;
}
x = x + hsp;


//Vertical collicion

if (place_meeting(x,y+vsp,objeto_Block))
{
while (!place_meeting(x,y+sign(vsp),objeto_Block))
{
y = y + sign(vsp);
}
vsp = 0;
}

y = y + vsp;

//Animation
if (!place_meeting(x,y+1,objeto_Block))
{
sprite_index = Sprite_Prota_Quiet;
image_speed = 2;
if (sign(vsp) > 0) image_index =1; else image_index = 0;
}
else
{
image_speed = 1;
if (hsp == 0)
{
sprite_index = Sprite_Prota_Quiet;
}
else
{
sprite_index = Spr_Prota_run;
}
}

if (hsp != 0) image_xscale = sign(hsp);



y en Create puse:

//Inizialize variables
grv = 0.3
hsp = 0;
vsp = 0;
walksp = 4;



Siento el doble post pero el tema ya esta resuelto al 100% !!!
el problema de la tecla izquierda/derecha que mencione en el mensaje anterior, se resulvio reiniciando el programa :-[
un bug, si.


muchas gracias  cristopher2545 !

-tema resuelto-