Jump to content
Cachumba

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

Recommended Posts

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

Edited by Cachumba

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

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

Share this post


Link to post
Share on other sites

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...