Personaje pillado

junkzo

Pos, estoy haciendo un proyecto con el Unity en 2D y cuando empiezo a avanzar el personaje, es como que se queda atascado o que el suelo no este bien por el tema del box colider, pero reviso todos los bloques del suelo están en el mismo nivel, no se que mas hacer. Aquí os dejo un pequeño gif.

https://gyazo.com/3f85ea61e2f856533a09f8f1146d7c95

PaCoX

intenta cambiar el box colider por un capsule collider a ver

1 1 respuesta
junkzo

#2 Pues ha funcionado xD, gracias maquina, crack !!

2 respuestas
Jastro

No uso Unity. Pero supongo que debe tener algo, que te dibuje las hitbox de todos los elementos. Si lo consigues vuelve a pasar gif, probablemente tengas algo chocando y no detectes el motivo.

Es curioso que se atasca en el arbusto, que tiene pinta de ser un prop sin mas no?

#3 que rapido xDDDD

1 1 respuesta
junkzo

#4 Llevo 4 capas distintas, Background, Foreground, Midground y player

gForce

#3 Para alinear correctamente usa la tecla V

2
1 comentario moderado
kesada7

Eso está ocurriendo porque estás usando box collider en el personaje, y luego varios box collider en los pequeños bloques de las plataformas, esto hace que unity a veces detecte las colisiones entre los vertices de cada box y box en la plataforma y al chocar pues se para. Para solucionarlo hay 2 formas, una es usar un circle collider para el personaje, y la otra es usar un único box collider para toda la plataforma en vez de uno para cada bloque. A mi personalmente me gusta una mezcla de las dos pero eso depende de como gestiones tus tiles sprite, ya que si lo tienes ya hecho para que cada sprite tenga su collider entiendo que es más comodo y con poner el circle collider te sirve.

PD: ojalá al pobre mario le hubieran puesto un circle collider y no un box en sus tiempos :(

6
uchar

Siempre puedes optar por otro tipo de colisiones.....

1
3 meses después
kesada7

Bueno sé que ya ha pasado bastante tiempo de esto pero me he encontrado con un componente que no conocía, por lo tanto lo que digo en #8 no es del todo cierto, hay otra opción más y por lo visto es la "más correcta". El problema que le ocurre a #1 sobre problemas con las colisiones y el personaje que se frena en las esquinas es algo bien conocido en unity y siempre hasta ahora la solución que encontré en foros y youtubers de unity, bastantes reconocidos por cierto, eran las que yo comentaba en #8 de ponerle un circle collider al personaje en los pies en vez de un box, o la de no tener los colliders en el tilemap para cada sprite, sino un unico collider para toda la plataforma del conjunto de sprites.

Pero claro la nueva herramienta de tilemap de unity 2017 te permite tener los collider en tu tilemap y esto es muy comodo, ya que según vas creando niveles ya tienes las colisiones hechas, y no tendría mucho sentido que esto viniera así si no funcionara correctamente.

Pues ahí es donde entra el componente "Composite Collider 2D" que lo que hace es "fusionar" por decirlo de alguna forma todas las collisiones que se solapan. No se si mi explicacion se entiende muy bien pero creo que cuando veáis el siguiente video lo vais a entender perfactamente y por que esto soluciona el problema. Lo dejo a partir del minuto donde viene el ejemplo más claro:

El problema en juegos de plataformas es el comunmente más conocido, pero también existen en otros casos, por ejemplo el otro día vi un video donde creaban un mapa 2D procedural aleatorio estilo al juego de binding of isaac, y en el script había una parte donde tenía que comprobar que no se generaran collisiones solapadas y arreglarlo con algún hardcode raro. Bien pues en este caso esto también nos serviría.

En fin perdón por si he escrito demasiado pero me pareció interesante la info y me hace reflexionar sobre cuantas cosas más estaremos haciendo mal, o de la forma menos optima, porque claro las otras soluciones funcionan y te solventa el problema y de hechos son las más extendidas parece ser, pero si usa las herramientas que debes todo es más fácil.

Usuarios habituales

  • kesada7
  • uchar
  • SpiderClon
  • gForce
  • junkzo
  • Jastro
  • PaCoX