Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: djboro88 en Junio 18, 2014, 07:07:21 PM

Título: [SOLUCIONADO] Problema con colision de dos players
Publicado por: djboro88 en Junio 18, 2014, 07:07:21 PM
Hola a todos, tengo un problema, me gustaría que al chocar los dos players que se controlan con un jostick, los dos se pararan uno al lado del otro y que no se solapasen.
Aquí os dejo un croquis con el problema:

(http://www.subeimagenes.com/img/crokis-995801.jpg)

Donde dice SI: es lo que me gustaría que ocurriera cuando se colisionasen ambos objetos, he puesto el evento Collision con obj_Verde y obj_Rojo que su sea 0, pero no funciona, ya que se me quedan solapados (en parte) como indico en la imagen que dice NO.

¿Alguna forma de solucionar esto?
Título: Re:Problema con colision de dos players
Publicado por: TLT96 en Junio 19, 2014, 02:51:33 AM
Puedes utilizar una colision mas "profesional"

o.... en el evento colision le das a Execute Code (Un papel blanco)
y agregas esto

x=xprevious
y=yprevious


Eso es mayormente para evitar ese tipo de cosas (Te devuelve a la posicion donde no ocurria dicho evento....)
Título: Re:Problema con colision de dos players
Publicado por: djboro88 en Junio 19, 2014, 08:51:42 AM
Me sigue dando el mismo problema.

Hay dos objetos:
obj_rojo
Tiene la propiedad de SOLID
En el evento COLLISION con el OBJ_VERDE he puesto el codigo:
x=xprevious
y=yprevious


obj_verde
Tiene la propiedad de SOLID
En el evento COLLISION con el OBJ_ROJO he puesto el codigo:
x=xprevious
y=yprevious


Al ejecutar el juego y chocar los dos players, ocurre esto:
(http://www.subeimagenes.com/img/captura-996358.JPG)

¿Porque ocurre?
Título: Re:Problema con colision de dos players
Publicado por: TLT96 en Junio 19, 2014, 05:06:04 PM
Cita de: djboro88 en Junio 19, 2014, 08:51:42 AM
Me sigue dando el mismo problema.

Al ejecutar el juego y chocar los dos players, ocurre esto:
(http://www.subeimagenes.com/img/captura-996358.JPG)

¿Porque ocurre?

WTF?!!?
A ver..... lo unico que se me ocurre es que tienes alguna mask o configuraste alguna...... Hice un Example, puse ambos objetos solid como mencionaste, ademas agregue unos muros (Se hacen igual....)

Tiene que servir...... Es imposible que haya ayudado erroneamente 2 veces (A pesar de que me hiba bien a mi xDD)

Ve en adjuntos ;P
Título: Re:Problema con colision de dos players
Publicado por: djboro88 en Junio 19, 2014, 10:35:56 PM
Te adjunto mi project, porque no se porque no me funciona.
Haber si me puedes dar una solución.
Título: Re:Problema con colision de dos players
Publicado por: TLT96 en Junio 20, 2014, 12:44:18 AM
Cita de: djboro88 en Junio 19, 2014, 10:35:56 PM
Te adjunto mi project, porque no se porque no me funciona.
Haber si me puedes dar una solución.

O.O, nose que pasa...... no me funciona o.o (Note que en un xprevious dice -16.... aunque eso no es el problema....)
Tal vez sea la manera de moverse.... (No se....)

Me rindo.... (Nunca lo habia hecho)
Dejo el tema en manos de alguien mas..... Penumbra?
Título: Re:Problema con colision de dos players
Publicado por: learsi en Junio 20, 2014, 01:35:59 AM
He probado el juego, y me pasa lo mismo.

Creo que el problema es que ambos jugadores tienen el mismo código y se mueven a la vez. He eliminado el código del step de uno de ellos y las colisiones las hace perfectas. No sé muy bien la mecánica del juego, pero es un jugador que mueve ambos cuadrados o dos jugadores que mueven independientemente los cuadrados con diferentes controles? porque si es lo segundo, hay un control para los dos jugadores y posiblemente por eso se vuelven locas las colisiones.
Título: Re:Problema con colision de dos players
Publicado por: Karasuman en Junio 20, 2014, 04:12:22 AM
Hay te resolví tu problema, pruebalo y me comentas que tal va  :).
Cambie lo siguiente en tus dos players, ademas le quite lo del solid.

switch lad
{
    case d_Up:
         {
          if(((y-16)>0) and !place_meeting(x,y-16,obj_RedPlayer)){y -=16};break;
         }
    case d_Down:
         {
          if(((y+16)< room_height) and !place_meeting(x,y+16,obj_RedPlayer)){y +=16};break;     
         }
    case d_Left:
         {
          if(((x -16)> 0) and !place_meeting(x-16,y,obj_RedPlayer)){x -=16} ;break;       
         }
    case d_Right:
         {
          if(((x+16)< room_width) and !place_meeting(x+16,y,obj_RedPlayer)){x +=16} ;break;       
         
         }
}

Te faltaba validar que dejara de moverse si choca con el otro objeto player, agregándole !place_meeting(x,y-16,obj_RedPlayer) se arreglo.
Para el player Green le agregue esto en el codigo anterior: !place_meeting(x,y-16,obj_RedPlayer).
Para el player Red le agregue esto en el codigo anterior: !place_meeting(x,y-16,obj_GreenPlayer).
Título: Re:Problema con colision de dos players
Publicado por: djboro88 en Junio 20, 2014, 10:17:16 AM
Va perfecto !!

Muchas gracias !!  ;D