Junio 18, 2014, 07:07:21 PM Ultima modificación: Junio 20, 2014, 10:23:50 AM por djboro88
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:



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?

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....)

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:


¿Porque ocurre?

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:


¿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

#4 Junio 19, 2014, 10:35:56 PM Ultima modificación: Junio 20, 2014, 10:18:08 AM por djboro88
Te adjunto mi project, porque no se porque no me funciona.
Haber si me puedes dar una solución.

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?

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.

#7 Junio 20, 2014, 04:12:22 AM Ultima modificación: Junio 20, 2014, 04:18:10 AM por Karasuman
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).