Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: Cachumba en Enero 21, 2016, 04:43:02 PM

Título: [Solucionado] Deshabilitar colisión entre dos objetos no permanentemente
Publicado por: Cachumba en Enero 21, 2016, 04:43:02 PM
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!!
Título: [Solucionado] Deshabilitar colisión entre dos objetos no permanentemente
Publicado por: juanma_teso en Enero 21, 2016, 07:18:54 PM
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.
Título: [Solucionado] Deshabilitar colisión entre dos objetos no permanentemente
Publicado por: Cachumba en Enero 21, 2016, 07:27:25 PM
Eso hice en un principio, pero me interesa que únicamente no colisione con un objeto, con los demás sí.
Título: [Solucionado] Deshabilitar colisión entre dos objetos no permanentemente
Publicado por: leocub58 en Enero 21, 2016, 07:52:27 PM
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!
Título: [Solucionado] Deshabilitar colisión entre dos objetos no permanentemente
Publicado por: juanma_teso en Enero 21, 2016, 08:52:14 PM
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.
Título: [Solucionado] Deshabilitar colisión entre dos objetos no permanentemente
Publicado por: Cachumba en Enero 21, 2016, 10:30:35 PM
[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!!