Jump to content
UnitySpain

Aceptamos donaciones vía Paypal.

UnitySpain.com es un servicio gratuito, pero mantener la Comunidad conlleva una serie de gastos.

Fondo Anual Unityspain: Donados 58,34€ de 150,00€

  • Servidor: Dominio.com y Hosting Web
  • Mantenimiento de los Foros
  • Contenido y Servicios Extras
  • Mantenimiento para Redes Sociales
Sign in to follow this  
Megadok

Colisión con NPCS

Recommended Posts

Tengo un juego top down 2d. Me gustaría que los npcs y el heroe no se pudieran empujar cuando colisionaran, simplemente que se quedaran quietos. Ambos utilizan rigidbody2D y velocity para moverse.Chocar pero no empujarse. ¿Alguna idea?

Share this post


Link to post
Share on other sites

Un tema de la mass que tengan y también el valor de drag (hablo de memoria con los rb 3d). Si son iguales y el otro no tiene mucha velocidad. También no sé si el rb 2d tiene physics material para hacer un pequeño rebote.

Share this post


Link to post
Share on other sites

Hola Megadok

Si usas las físicas de Unity rigidbody, pues sí, el valor mass y el drag que menciona iRobb podrían ayudar en ese aspecto.

Hace un par de semanas hice una pequeña escena jugando con esos componentes, puse una pelota que botaba constantemente entre dos rampas, y una cápsula que movías con el teclado.

- Si la masa de la pelota, era superior a la de la cápsula, la pelota empujaba la cápsula al chocarle.

- Si la cápsula tenía más masa que la pelota, esta no empujaba si no que rebotaba también como si chocara con otro objeto sólido.

 

Aunque tuve dos problemas,

1º Estos valores tenían se veían afectados también por la fuerza con la que se mueve el objeto. Se podía dar el caso de que cuando la cápsula tuviese más masa que la pelota, a lo mejor la pelota si tenía poca fuerza, no podía mover la cápsula, pero si esta venía con mucha fuerza, sí podía mover la cápsula un poco, esto se podía evitar aumentando mucho la masa de la cápsula, aunque siempre pasará lo mismo, mayor fuerza -> más masa es necesaria para que no le afecte...

Entiendo que en un juego, se supone que las fuerzas están más o menos controladas, no es que ninguna fuerza vaya a descontrolarse... pero en fin, más baja o más alta, siempre habrá una "frontera".

2º El otro problema es que quizás la pelota no podía empujar a la cápsula, pero la cápsula sí podía empujar la pelota. Por lo que no sé si eso es lo que realmente quieres en tu juego (que los enemigos no empujen al jugador, pero el jugador sí empuje a los enemigos. Ó viceversa). Tal vez incrementando el drag podría ayudar a esto. (aunque tendrás que modificarlo cuando quieras mover al personaje o puede que el drag también impida que el personaje se traslade...)


/-----------------------------/

A mi se me ocurren 2 opciones.

1º en vez de usar el sistema de físicas de Unity, hacer los personajes con character controller, este componente también tiene una función Move y reacciona ante los colliders, pero no aplica tantas fuerzas físicas como el rigidbody (aunque eso significa que hay que programar más).

2º usando el sistema de físicas, pero poniendo un trigger alrededor de los enemigos de modo que cuando el jugador entre en ellos, la velocidad de las físicas en el rigidbody pase a ser [0,0,0]. Necesitará pulirlo, especialmente para que no se quede atascado dentro (por ejemplo, que el "bloqueo" solo se ponga si el movimiento se está realizando en la dirección dónde está el enemigo).

Me gusta más la 1º, pero supongo que depende de la clase de juego que estés haciendo. O_ò
 

Edited by Antonio

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...