void OnTriggerEnter(Collider other) { if (other.tag == "Interactuable") { InteractuableNPC interactuableNPC = other.GetComponentInParent <InteractuableNPC>(); if (interactuableNPC != null) { if (interactuableNPC.ID == IDInteractuable) { Manager.instance.DeleteNavMeshAgent(interactuableNPC.DevuelveNavhMeshAgent()); Destroy(gameObject); } } } }
public void MoverInteractuableEnEscena(int tipo, int IDInteractuable, Vector3 coord, Quaternion rot) { GameObject interactuable = GetInteractuable(IDInteractuable); //Si el interactuable no es un NPC, lo movemos directamente if (tipo != 0) { interactuable.transform.position = coord; interactuable.transform.rotation = rot; } //Si es un NPC, establecemos la ruta que debe seguir, si el NPC no se encuentra ya en exactamente esa posición else if (interactuable.transform.position != coord) { InteractuableNPC interactuableNPC = interactuable.GetComponent <InteractuableNPC>(); interactuableNPC.SetRuta(coord); } }
void OnTriggerExit(Collider other) { if (other.tag == "Interactuable") { InteractuableNPC interactuableNPC = other.GetComponentInParent <InteractuableNPC>(); if (interactuableNPC != null) { if (interactuableNPC.ID == IDInteractuable) { if (transporte != null) { transporte.transform.parent.GetComponent <InteractuableObjeto>().SetNavObstacle(true); } Destroy(gameObject); } } } }
void OnTriggerEnter(Collider other) { if (other.tag == "Interactuable") { InteractuableNPC interactuableNPC = other.GetComponentInParent <InteractuableNPC>(); if (interactuableNPC != null) { if (interactuableNPC.ID == IDInteractuable) { Manager.instance.DeleteNavMeshAgent(interactuableNPC.DevuelveNavhMeshAgent()); Destroy(other.transform.parent.gameObject); Destroy(gameObject); if (transporte != null) { transporte.transform.parent.GetComponent <InteractuableObjeto>().SetNavObstacle(true); } } } } }
//Crea un interactuable en la escena con las coordenadas y rotación especificadas public void CrearInteractuable(int IDInteractuable, int tipo, Vector3 coord, Quaternion rot) { GameObject interactuableGO; switch (tipo) { default: case 0: //Tipo NPC interactuableGO = (GameObject)Instantiate(Resources.Load("InteractuableNPC")); InteractuableNPC interactuableNPC = interactuableGO.gameObject.GetComponent <InteractuableNPC>(); interactuableNPC.ID = IDInteractuable; break; case 1: //Tipo Objeto interactuableGO = (GameObject)Instantiate(Resources.Load("InteractuableObjeto")); InteractuableObjeto interactuableObjeto = interactuableGO.gameObject.GetComponent <InteractuableObjeto>(); interactuableObjeto.ID = IDInteractuable; break; } interactuableGO.transform.position = coord; interactuableGO.transform.rotation = rot; }
//Crea un interactuable en la escena en un transporte que conecta con la escena anterior public void MoverInteractuableDesdeOtraEscena(int IDInteractuable, int tipo, int IDEscenaAnterior, Vector3 coord, Quaternion rot) { GameObject interactuableGO; switch (tipo) { default: case 0: //Tipo NPC interactuableGO = (GameObject)Instantiate(Resources.Load("InteractuableNPC")); InteractuableNPC interactuableNPC = interactuableGO.gameObject.GetComponent <InteractuableNPC>(); interactuableNPC.ID = IDInteractuable; //Si el interactuable es de tipo NPC, lo creamos en un transporte GameObject transporteGO = EncontrarTransporteEscena(IDEscenaAnterior); if (transporteGO != null) { interactuableGO.transform.position = transporteGO.transform.position; interactuableNPC.SetRuta(coord); GameObject rutaColliderGO = new GameObject("RutaCollider"); rutaColliderGO.transform.position = coord; BoxCollider boxCollider = rutaColliderGO.AddComponent <BoxCollider>(); boxCollider.size = new Vector3(3.7f, 6.68f, 1f); boxCollider.isTrigger = true; RutaCollider rutaCollider = rutaColliderGO.AddComponent <RutaCollider>(); rutaCollider.SetIDInteractuable(IDInteractuable); if (transporteGO.GetComponent <TransporteInter>().ComprobarSiEsTransporteObjeto()) { transporteGO.transform.parent.GetComponent <InteractuableObjeto>().SetNavObstacle(false); GameObject transporteColliderGO = new GameObject("TransporteCollider"); transporteColliderGO.transform.SetParent(transporteGO.transform, false); BoxCollider boxcollider = transporteColliderGO.AddComponent <BoxCollider>(); boxcollider.size = new Vector3(3.7f, 6.68f, 1f); boxcollider.isTrigger = true; SaliendoTransporteCollider saliendoTransporteCollider = transporteColliderGO.AddComponent <SaliendoTransporteCollider>(); saliendoTransporteCollider.SetIDInteractuable(IDInteractuable); saliendoTransporteCollider.SetTransporte(transporteGO); } } else { interactuableGO.transform.position = coord; interactuableGO.transform.rotation = rot; } break; case 1: //Tipo Objeto //Si el interatuable es de tipo objeto, lo creamos directamente interactuableGO = (GameObject)Instantiate(Resources.Load("InteractuableObjeto")); InteractuableObjeto interactuableObjeto = interactuableGO.gameObject.GetComponent <InteractuableObjeto>(); interactuableObjeto.ID = IDInteractuable; interactuableGO.transform.position = coord; interactuableGO.transform.rotation = rot; break; } }