Пример #1
0
    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);
                }
            }
        }
    }
Пример #2
0
    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);
        }
    }
Пример #3
0
    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);
                }
            }
        }
    }
Пример #4
0
    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);
                    }
                }
            }
        }
    }
Пример #5
0
    //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;
    }
Пример #6
0
    //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;
        }
    }