Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: jorgeelalto en Diciembre 06, 2012, 07:10:32 PM

Título: Saber la dirección de la colisión
Publicado por: jorgeelalto en Diciembre 06, 2012, 07:10:32 PM
Hola a todos:

Quería preguntar, ¿cómo se puede saber dónde ha colisionado un objeto con otro? Vamos a poner un ejemplo práctico:

Tengo 2 cuadrados, uno encima de otro. ¿Cómo puedo hacer que el cuadrado de arriba, por ejemplo, se mueva si colisiona por debajo con el otro cuadrado?

Estoy haciendo un generador de mundo aleatorio y quiero saber donde colisiona, las porciones de tierra unas con otras... ??? ???
Título: Re:Saber la dirección de la colisión
Publicado por: JuanP en Diciembre 06, 2012, 07:58:04 PM
Hola.
Se me ocurre algo como:
// en el evento colision
if bbox_top < other.bbox_bottom
  //colisono por debajo
else if bbox_bottom < other.bbox_top
       // colisiono por arriba
else if bbox_left > other.bbox_right
       // colisiono por la izquierda
else if bbox_right < other.bbox_left
       // colisiono por la derecha

Puede que este incorrecto pero esa es la idea :D
Título: Re:Saber la dirección de la colisión
Publicado por: jorgeelalto en Diciembre 06, 2012, 08:24:40 PM
Gracias por responder!

Es mas o menos lo que buscaba, pero es de bbox ¿que es?
Título: Re:Saber la dirección de la colisión
Publicado por: JuanP en Diciembre 06, 2012, 08:40:27 PM
Son propiedades de los objetos que ya están definidos por gamemaker como x, y, sprite_width, sprite_height son usados para detectar colision rectangular significa bounding box (cuadro delimitador) la puedes modificar en las propiedades del sprite, para que te des una mejor idea si tienes el punto de origen y la colision por defeult en el sprite: bbox_top equivale a y, bbox_left a x, bbox_bottom a y + sprite_height, bbox_rigth a x + sprite_width. Espero haya quedado un poco mas claro  :-[
Título: Re:Saber la dirección de la colisión
Publicado por: jorgeelalto en Diciembre 06, 2012, 09:15:17 PM
Aaaaah! OK, ya me ha quedado claro.  :D :D :) Y cómo puedo hacer que detecte si colisiona con cualquier objeto?
Título: Re:Saber la dirección de la colisión
Publicado por: Creador de juegos GM en Diciembre 06, 2012, 09:21:37 PM
directamente pones lo mismo solamente que en todos los objetos
Título: Re:Saber la dirección de la colisión
Publicado por: JuanP en Diciembre 06, 2012, 10:05:58 PM
"other" también es una variable definida por GM y solo usada dentro del evento Collision; es decir tu tienes un objeto1 y objeto2 por ejemplo en objeto1 creas un evento Collision y seleccionas objeto2, en ese evento pones el código que puse antes y así para todos los objetos que necesites
Título: Re:Saber la dirección de la colisión
Publicado por: jorgeelalto en Diciembre 07, 2012, 11:22:50 AM
AAh ok ahor ya me ha quedado claro del todo!  :D Gracias a todos!!!