Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: lolito24 en Agosto 21, 2018, 04:21:13 AM

Título: problema colision
Publicado por: lolito24 en Agosto 21, 2018, 04:21:13 AM
hola necesito ayuda con la colision al mover el personaje y llegar digamos un muro se detiene 5 pixeles antes y como es un juego de resolucion pequeña se nota bastante la distancia, es en gms2 y ya probe las soluciones de gms 1 y no funcionan.
Título: Re:problema colision
Publicado por: 3dgeminis en Agosto 21, 2018, 03:57:00 PM
Que codigos estas usando ?
Título: Re:problema colision
Publicado por: lolito24 en Agosto 21, 2018, 04:41:12 PM
Cita de: 3dgeminis en Agosto 21, 2018, 03:57:00 PM
Que codigos estas usando ?
gml este /// COLISION

pm = place_meeting(x+hspeed,y+vspeed,object2);

if (pm) {
   ///comprobar colision
   for(var i=0;i<abs(vspeed);i++){
      if (place_meeting(x+sign(hspeed),y,object2)) then break;
      x += sign(hspeed);
   }
   
   hspeed = 0;
   
}   
Título: Re:problema colision
Publicado por: somnus en Agosto 21, 2018, 04:54:10 PM
intenta implementar el engine de colisiones que se encuentra en la seccion de menus, te debe bastar para lo que necesitas sin que te quiebres la Cabeza, solo ten cuidado de tener tus mascaras de collision del mismo tamano
Título: Re:problema colision
Publicado por: dixon2010 en Agosto 21, 2018, 10:06:26 PM
Hola, buenas tardes.

1.Error en linea 3 "vspeed" no se recomienda en colisión horizontal.
2.Las colisiones verticales y horizontales pueden tratarse por separado en plataformas.
3.Debes decirle al objeto que regule su velocidad.
4.Existen tres clases de movimiento horizontal:
   a. la suma de x
   b. hspeed
   c. speed + direction 0, 180, -180
5.La suma de x no se lleva con hspeed, pues hspeed lo gobierna todo.

[EVENTO STEP]
b1=keyboard_check(37)
b3=keyboard_check(39)
v=(b3-b1)*6
//COLISIÓN
while(place_meeting(x+v,y,object2))v-=1*sign(v)
x+=v