//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; } }
// 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); }