Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: LuciaHedgehog en Diciembre 02, 2018, 07:52:07 AM

Título: Como repeler objetos al colisionar?
Publicado por: LuciaHedgehog en Diciembre 02, 2018, 07:52:07 AM
Hola buenas noches uwu no he preguntado desde hace mucho, pero bueno... lo que necesito que me solucionen, es como hacer que un objeto al colisionar con otro se mueva por el eje x y si hay otro objeto pegado al lado donde no hay espacio, este se vaya luego luego al otro lado (no tengo codigo para especificar, ya que no me ha salido y solo puros errores  :'( :'( ) si me pueden responder gracias de antemano uwu, nos vemos
Título: Re:Como repeler objetos al colisionar?
Publicado por: Clamud en Diciembre 02, 2018, 03:41:43 PM
Si el movimiento es en 2 dimensiones, lo más fácil es usar el sistema de física.
Si es en 1 dimensión, como empujar una caja sobre el piso, puedes seguir estos pasos:
No tengo un código a la mano. Puedes buscar en el foro, recuerdo que esto se ha discutido algunas veces.
Título: Re:Como repeler objetos al colisionar?
Publicado por: elviskelley en Diciembre 02, 2018, 05:16:04 PM
la cosa es que faltan datos para poder ayudarte, ejemplo, primero debes decir el juego es en 2D, isometrico, Cenital, vista plataformas, 3D, etc... ya que el codigo va a cambiar para cada ocacion.
recuerdo que para empujar cajas solo se colocaba en el objecto a mover un codigo para dectetar la colision y moverse en direccion a ese personaje contra el que colisiona:
ejemplo si fuera un plataformas y mueves una caja.
llamare al personaje oMario y a la caja oCaja.
en el event end step de la caja
if place_meeting(x-16,y,oMario) then
{direction +oMario.direction speed=oMario.speed}
else
if place_meeting(x+16,y,oMario) then
{direction +oMario.direction speed=oMario.speed}
else
{speed=0;}

eso seria todo...
en un cenital 2D
seria if collision_circle(xxxxyyyoMario) then
{direction=oMario.direction-1; speed=oMario.speed;}
else
{speed=0}

ojo el codico no esta pulido solo te doy ua idea basica.
Título: Re:Como repeler objetos al colisionar?
Publicado por: LuciaHedgehog en Diciembre 03, 2018, 07:40:31 PM
ahh lo que quiero es para un juego como tipo gun.smoke osea como un shooter vertical, pero te menciono que el personaje se mueve un pixel arriba, junto con las paredes y las views tambien ya que el escenario esta quieto, pero como le haria para meter ese pixel de moviento hacia arriba al jugador o el personaje que este asi?, porque creo que si lo hago asi como tu lo dices se iria para abajo o mas bien como se atoraria y se iria para abajo, pero lo demas estaria bien.... porfa  :), pero tambien probare tu codigo y vere si le hayo algo uwur


Cita de: elviskelley en Diciembre 02, 2018, 05:16:04 PM
la cosa es que faltan datos para poder ayudarte, ejemplo, primero debes decir el juego es en 2D, isometrico, Cenital, vista plataformas, 3D, etc... ya que el codigo va a cambiar para cada ocacion.
recuerdo que para empujar cajas solo se colocaba en el objecto a mover un codigo para dectetar la colision y moverse en direccion a ese personaje contra el que colisiona:
ejemplo si fuera un plataformas y mueves una caja.
llamare al personaje oMario y a la caja oCaja.
en el event end step de la caja
if place_meeting(x-16,y,oMario) then
{direction +oMario.direction speed=oMario.speed}
else
if place_meeting(x+16,y,oMario) then
{direction +oMario.direction speed=oMario.speed}
else
{speed=0;}

eso seria todo...
en un cenital 2D
seria if collision_circle(xxxxyyyoMario) then
{direction=oMario.direction-1; speed=oMario.speed;}
else
{speed=0}

ojo el codico no esta pulido solo te doy ua idea basica.
Título: Re:Como repeler objetos al colisionar?
Publicado por: LuciaHedgehog en Diciembre 04, 2018, 07:30:05 AM
- Gracias por comentar, pero no puedo usar un sistema de fisica por que no lo necesito y se veria raro ala hora de correr el juego ya que es un shooter vertical..
-la verdad recuerdo un codigo como en el comentario de abajo, pero mas cortito, solo que como mi jugador se mueve 1 pixel todo el tiempo, ala hora de colisionar este se atora, pero cumple con lo de detectar si hay los espacios suficientes del eje x, pero le falta el y no se como añadirselo  :'(
- Y en el ultimo punto que me dices, si lo he preguntado antes, pero me lo borraron y tuve que preguntar de nuevo y busqué pero no habia resultados :,v


Cita de: Clamud en Diciembre 02, 2018, 03:41:43 PM
Si el movimiento es en 2 dimensiones, lo más fácil es usar el sistema de física.
Si es en 1 dimensión, como empujar una caja sobre el piso, puedes seguir estos pasos:

  • mover al personaje
  • detectar colisión con la caja y mover la caja si es necesario
  • la caja detecta colisión con otros bloques y se mueve a una posición sin colisión
  • al final el personaje detecta colisión con otros bloques y cajas y se mueve a una posición sin colisión
No tengo un código a la mano. Puedes buscar en el foro, recuerdo que esto se ha discutido algunas veces.
Título: Re:Como repeler objetos al colisionar?
Publicado por: Clamud en Diciembre 09, 2018, 02:37:51 PM
Detalla lo que debe suceder cuando colisiona en Y. ¿El personaje no debe seguir avanzando?
Título: Re:Como repeler objetos al colisionar?
Publicado por: kostra en Diciembre 09, 2018, 03:41:34 PM
Ni que sea una imagen xD