// Update is called once per frame void Update() { Vector3 guixeta_pos = guixeta_id.transform.position; Vector3 my_pos = transform.position; if (estat == 0) //Anar a la seva guixeta { anar_a_la_cua(guixeta_id.cua); //Punt: La ultima posicio de la cua Vector3 pos_final = new Vector3(guixeta_pos.x, guixeta_pos.y, guixeta_pos.z - cua); if (Vector3.Distance(pos_final, my_pos) < 1 && ncua == guixeta_id.cua) { estat = 1; guixeta_id.aumenta_cua(gameObject); } } else if (estat == 1) //Agafar el seu lloc a la cua { transform.position = new Vector3(my_pos.x, my_pos.y, guixeta_pos.z - cua); estat = 2; } else if (estat == 2) //Esperant a la cua (quiet) { if (pot_avansar) //Si reb una crida desde la guixeta dient que pot avansar 1 posicio { pot_avansar = false; nova_pos_cua = ncua - 1; estat = 3; //Si la cua ha avançat, pasar a l'estat de caminar } if (ncua == 0) { estat = 4; } } else if (estat == 3) //Avançar 1 posicio dintre de la cua { anar_a_la_cua(nova_pos_cua); //Punt: Posicio actual menys la distancia guanyada ncua - (ncua - guixeta_id.cua) Vector3 pos_final = new Vector3(guixeta_pos.x, guixeta_pos.y, guixeta_pos.z - cua); if (Vector3.Distance(pos_final, my_pos) < 1) { estat = 2; } //Si ja has arribat al teu nou lloc, pasar a l'estat d'aturat } else if (estat == 4) //Sent ates per l'encarregat de la guixeta { temps_atenent += Time.deltaTime; if (temps_atenent > guixeta_id.temps_atencio) { guixeta_id.redueix_cua(); if (papers_en_regla) { estat = 5; } else { estat = -1; } } } else if (estat == 5) //Traspassar la guixeta { //Destroy(gameObject); if (esquiva_guixeta_x > 0) { float ttt = Time.deltaTime * speed; esquiva_guixeta_x -= ttt; transform.position = new Vector3(transform.position.x + ttt, transform.position.y, transform.position.z); } else { if (esquiva_guixeta_z > 0) { float ttt = Time.deltaTime * speed; esquiva_guixeta_z -= ttt; transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + ttt); } else { estat = 6; } } } else if (estat == 6) //Anar fins a la porta d'embarcament { //transform.position = new Vector3 (transform.position.x, transform.position.y, transform.position.z + Time.deltaTime*speed); 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) { estat = 7; porta_id.incrementar_persones(); } } else if (estat == 7) //Esperar a que arribi el seu avio i despres pujar-hi quan ho permeti { if (porta_id.hi_ha_avio) { avio_id = porta_id.avio; anar_a_lavio(); if (Vector3.Distance(transform.position, avio_id.transform.position) < 1) { avio_id.GetComponent <AvoMVT>().sumar_passatger(); porta_id.decrementar_persones(); Destroy(gameObject); } } } else if (estat == -1) { if (esquiva_guixeta_x > 0) { float ttt = Time.deltaTime * speed; esquiva_guixeta_x -= ttt; transform.position = new Vector3(transform.position.x + ttt, transform.position.y, transform.position.z); } else { transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z - Time.deltaTime * speed); if (transform.position.z < -41) { Destroy(gameObject); } } } }
public void pujar_passatgers(AvoMVT go_avio) { hi_ha_avio = true; avio = go_avio; }