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!!