Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

[Solucionado] Deshabilitar colisión entre dos objetos no permanentemente

Iniciado por Cachumba, Enero 21, 2016, 04:43:02 PM

Tema anterior - Siguiente tema
Buenas, soy nuevo en Unity y se me ha presentado la siguiente duda:

¿Cómo puedo deshabilitar la colisión entre dos objetos de forma no permanente? Por ejemplo: Mientras el objeto X esté en el trigger T, no recibirá colisiones del objeto Y. Pero en cuanto salga del trigger podrá volver a recibir colisiones de Y.

Me suena que había una función para deshabilitar las colisiones entre dos objetos pero creo que era permanentemente en la scene.
¿Alguien sabe cómo solucionarlo, o sabe alguna forma más eficiente de hacerlo?

Gracias!!

No sé si se pueda deshabilitar la función, a no ser que quites el rigidbody o el collider, pero quizá sea más fácil poner un booleano en el 'OnCollisionEnter', y activarlo cuando entras o sales del trigger T.

Eso hice en un principio, pero me interesa que únicamente no colisione con un objeto, con los demás sí.

function OnCollisionEnter (col : Collision) {if(col.gameObject.tag == "TAG"){    gameObject.GetComponent(BoxCollider).isTrigger = true; }} function OnTriggerExit (col : Collider) {if(col.gameObject.tag == "TAG"){    gameObject.GetComponent(BoxCollider).isTrigger = false; }} Prueba esto, a ver si furula!

Pues no estabas lejos, porqué no intentas 'if(colision.tag == "tag" && !elBoolActivo)' así sólo detectas la colisión con ese objeto si está fuera del trigger.

[quote author=juanma_teso" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34962" data-ipsquote-contentcommentid="126360 date=1453405934]Pues no estabas lejos, porqué no intentas 'if(colision.tag == "tag" && !elBoolActivo)' así sólo detectas la colisión con ese objeto si está fuera del trigger.[/quote]Vale, ya lo he apañado. Con el bool me indicaba si estaba en el trigger que me hacía ignorar la colisión con el objeto, y usando GameObject.Find("objeto").GetComponent<Collider>().isTrigger = true; para hacer que no tuviera colisión con él. ¡¡Gracias a los que habéis contestado!!

Etiquetas: