Example #1
0
    //Estats:
    //0 -> anant cap a la seva guixeta
    //1 -> ha agafat lloc a la cua
    //2 -> esta esperant dintre de la cua
    //3 -> mentre espera la cua avanca una mica
    //4 -> esta sent ates per l'encarregat de la guixeta
    //5 -> Traspassar la guixeta
    //6 -> Anar a la porta d'embarcament
    //7 -> Esperar a que l'avio arribi a la porta d'embarcament i quan hi sigui i ho permeti, pujar-hi

    void Start()
    {
        rate_papers_regla = GameObject.Find("ControlGlobal").GetComponent <CreaPassatgers>().rate_papers_regla;

        guixeta_numero = Mathf.RoundToInt(Random.Range(1, 22));
        guixeta_id     = GameObject.Find("Guixeta (" + guixeta_numero.ToString() + ")").GetComponent <ControlGuixeta>();
        temps_atenent  = 0;
        pot_avansar    = false;

        porta_numero = Mathf.RoundToInt(Random.Range(1, 12));
        porta_id     = GameObject.Find("Porta (" + porta_numero.ToString() + ")").GetComponent <ControlPorta>();
        porta_dec_x  = Random.Range(-10, 10);
        porta_dec_z  = Random.Range(-10, 10);

        papers_en_regla = true;
        if (Random.Range(0, 100) > rate_papers_regla)
        {
            papers_en_regla = false;
        }
    }
Example #2
0
    // Update is called once per frame
    void Update()
    {
        Vector3 old_pos = transform.position;

        if (estat == -1)         //Aterrar
        {
            transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z - speed * Time.deltaTime);

            if (transform.position.y > 2)
            {
                transform.position = new Vector3(transform.position.x, transform.position.y - speed * Time.deltaTime * 0.5f, transform.position.z);
            }

            if (transform.position.z < 197)
            {
                estat = 0;
            }
        }
        else
        if (estat == 0)  //Anar a Manteniment


        {
            anar_a_manteniment();
        }

        else if (estat == 1)   //Rebre manteniment
        {
            temps += Time.deltaTime;
            if (temps >= temps_manteniment)
            {
                estat = 2;
            }
        }

        else if (estat == 2)   //Anar a Hangar


        {
            anar_a_hangar();
        }

        else if (estat == 3)   //Buscar porta
        {
            porta = controlador.GetComponent <CreaAvions>().get_porta();
            //print("porta " + porta);
            if (porta != -1)
            {
                porta_id = GameObject.Find("Porta (" + porta.ToString() + ")").GetComponent <ControlPorta>();
                if (porta > 6)
                {
                    porta_dec_x = 0;
                    porta_dec_z = 12;
                }
                else
                {
                    porta_dec_x = 12;
                    porta_dec_z = 0;
                }
                estat = 4;
            }
        }

        else if (estat == 4)   //Anar a porta
        {
            anar_a_la_porta();
            Vector3 porta_pos       = porta_id.transform.position;
            Vector3 posicio_aparcar = new Vector3(porta_pos.x + porta_dec_x, transform.position.y, porta_pos.z + porta_dec_z);
            if (Vector3.Distance(transform.position, posicio_aparcar) < 1)
            {
                porta_id.pujar_passatgers(this);
                estat = 5;
            }
        }

        else if (estat == 5)   //Esperar a que pujin els passatgers

        {
            espera_hora_marxar += Time.deltaTime;
            if (espera_hora_marxar > temps_espera_porta)
            {
                hora_de_marxar = true;
            }

            if (passatgers >= 150 || hora_de_marxar)
            {
                porta_id.tancar_porta();
                estat = 6;
            }
        }
        else if (estat == 6)                 //Esperar a que la pista d'enlairament estigui lliure
        {
            if (pistaE2.is_free())
            {
                estat = 7;
                pistaE2.reservar();
            }
        }
        else if (estat == 7)                 //Anar a la pista d'enlairament
        {
            anar_a_pistaE();
        }
        else if (estat == 8)                 //Enlairar-se
        {
            transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + speed * Time.deltaTime);

            if (transform.position.z > 203)
            {
                transform.position = new Vector3(transform.position.x, transform.position.y + speed * Time.deltaTime * 0.5f, transform.position.z);
            }

            if (transform.position.y > 24)
            {
                pistaE2.lliberar();
                creador.llibera_porta(porta);
                Destroy(gameObject);
            }
        }



        ///////////////////
        /// ///////////////
        /// LA FUNCIO PUJAR_PASSATGERS() porta_id.pujar_passatgers(this); ES CRIDA QUAN L'AVIO ESTIGUI LLEST PER QUE LA GENT HI PUJI
        /// LA IDEA ES QUE UN COP L'AVIO ARRIBI A LA PORTA D'EMBARCAMENT ESPERI UNA ESTONA ABANS D'ACEPTAR GENT.
        ///
        ///
        /// QUAN L'AVIO JA NO ADMETI MES PASSATGERS HA DE CRIDAR LA FUNCIO TANCAR_PORTA() porta_id.tancar_porta(); PER QUE LA GENT DEIXI DE PUJAR.
        /// LA IDEA ES QUE TANQUI LA PORTA I DESPRES VAGI A LA PISTA D'ENLAIRAMENT
        /// ///////////////
        /// ///////////////


        Vector3 new_pos = transform.position;

        float angle = Mathf.Atan2(old_pos.x - new_pos.x, old_pos.z - new_pos.z) * Mathf.Rad2Deg;

        transform.eulerAngles = new Vector3(270, angle + 90, 0);
    }