Noticias

¡Ayuda a la Comunidad GM, haz una donación!

* Sponsor

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Colisiones "deslizantes" [RESUELTO]  (Leído 717 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado avengeralt

  • Visitante
  • *
  • Puntos: 19
  • Mensajes: 9
    • Ver Perfil
en: Julio 22, 2021, 12:03:21 am
Mi pregunta es la siguiente: ¿Cómo puedo hacer que mi objeto Player cuando choque contra algún objeto irregular, por ejemplo una esquina, en vez de quedarse bloqueado al chocar, que este deslice buscando una nueva posición?

En mi mapa hay unos árboles, y al chocar contra el tronco, el personaje se queda totalmente parado. Puede moverse, y está todo bien, pero me gustaría mejorarlo haciendo que mi personaje deslice en el árbol en vez de quedarse totalmente quieto al chocar. ¿Es esto posible? ¿Cómo podría hacerlo? Gracias.
« Última modificación: Julio 22, 2021, 03:52:15 pm por avengeralt »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Clamud

Respuesta #1 en: Julio 22, 2021, 02:54:02 am
Se puede hacer de muchas formas. El método que me parece más fácil, cuando las máscaras de colisión son rectangulares, es que el movimiento se divide en 2 partes, una para cada eje.
Primero desplaza el personaje en el eje X, si detecta colisión que se desplace hasta luna posición en el borde del obstáculo.
Después desplaza el personaje en el eje Y, si detecta colisión también que se desplace hasta quedar en el borde del obstáculo.

Otra opción es pensar que los dos objetos son circulares. Cuando el personaje colisiona con el obstáculo se desplaza en dirección contraria al centro del obstáculo. Esta forma se puede hacer con poco código, pero debes entender un poco de matemáticas vectoriales.

 
Los siguientes usuarios dieron las gracias a este tema: avengeralt


Desconectado avengeralt

  • Visitante
  • *
  • Puntos: 19
  • Mensajes: 9
    • Ver Perfil
Respuesta #2 en: Julio 22, 2021, 02:36:38 pm
Se puede hacer de muchas formas. El método que me parece más fácil, cuando las máscaras de colisión son rectangulares, es que el movimiento se divide en 2 partes, una para cada eje.
Primero desplaza el personaje en el eje X, si detecta colisión que se desplace hasta luna posición en el borde del obstáculo.
Después desplaza el personaje en el eje Y, si detecta colisión también que se desplace hasta quedar en el borde del obstáculo.

Otra opción es pensar que los dos objetos son circulares. Cuando el personaje colisiona con el obstáculo se desplaza en dirección contraria al centro del obstáculo. Esta forma se puede hacer con poco código, pero debes entender un poco de matemáticas vectoriales.
MODIFICO PORQUE LO RESOLVÍ.

Muchas gracias :)
« Última modificación: Julio 22, 2021, 02:57:34 pm por avengeralt »