Julio 22, 2021, 12:03:21 AM Ultima modificación: Julio 22, 2021, 03:52:15 PM por avengeralt
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.

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.

#2 Julio 22, 2021, 02:36:38 PM Ultima modificación: Julio 22, 2021, 02:57:34 PM por avengeralt
Cita de: Clamud 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.
MODIFICO PORQUE LO RESOLVÍ.

Muchas gracias :)