Un problema bastante común cuando creamos un videojuego de plataformas es que nuestro personaje parece quedarse pegado a una plataforma, y en vez de caer, se mantiene en el aire, sobre todo si además estamos dándole una fuerza o cambiando su velocidad en x.
Hay varias soluciones para resolver este problema:
La primera es que nuestras plataformas estén compuestas por varios gameobjects con box collider2D o polygon Collider 2D si fuera necesario y tener un material físico asociado a los mismos con Friction 0 y Bounciness 0.
El proceso sería:
- Creo un Game Object vacio , GameObject -> Create empy , lo re nombro a plataforma1
- Coloco mis Sprites de plataforma como hijos de plataforma1
- Añado un box collider 2D a la plataforma pero dejo la punta y el final sin cubrir.
- Renombro los Game Object de los sprites a Desliza1 y Desliza2
- Añado un box collider a cada uno
- Los coloco en la posición delantera y trasera de la plataforma
- Por lo tanto tendré 3 Box Collider en cada plataforma
- Creo un Material Fisico, dentro del proyecto , Boton derecho del raton -> Physics Material 2D, le doy Friction 0 y Bounciness 0. Lo llamo desliza
- A los box colliders 2D Desliza1 y Desliza2 les añado el material físico
- Listo ahora al tener una fricción de 0 el personaje cae.
La segunda solución es utilizar directamente un componente llamado Platform Effector, el cual hace que el personaje pueda atravesar las zonas que nosotros configuremos.
- Creo un Game Object vació , GameObject -> Create empy , lo re nombro a plataforma_linea
- Meto mi Sprite como hijo
- Añado un Box Collider 2D
- Creo un material fisico como el paso 9 anterior y lo añado al box collider
- Añado un Componente , desde Component-> Physics 2D-> Platform Effector
- En el componente marco la opcion Use Side Friction
- Listo
La tercera solución es la mas simple y responde a la siguiente pregunta, ¿Necesito detectar toda la plataforma o solo la linea superior?
- Creo un Game Object vació , GameObject -> Create empy , lo re nombro a plataforma_efecto
- Meto mi Sprite como hijo
- Añado un Edge Collider 2D
- Listo
La mejor solución dependerá del videojuego y del comportamiento del personaje que estemos buscando.
The ad is displayed on the page
current post: Unity 2D: No quedarse pegado a una plataforma, ID: 2276
Ad: Anuncio2 (2573)
Placement: After Content 2 (after-content_2)
Display Conditions
Ad | wp_the_query | |
---|---|---|
term_id | 0 | |
taxonomy | 0 | |
is_main_query | 1 | 1 |
is_rest_api | 0 | |
page | 0 | 1 |
numpages | 0 | 1 |
is_archive | 1 | |
is_search | 1 | |
is_home | 1 | |
is_404 | 1 | |
is_attachment | 1 | |
is_singular | 1 | 1 |
is_front_page | 1 | |
is_feed | 1 |
Find solutions in the manual