示例#1
0
 void OnTriggerStay(Collider other)
 {
     if (other.tag == "Strefa")     //Update strefy po przejściu.
     {
         //print("Wszedłem do strefy " + other.gameObject.GetComponent<Strefa>().numerStrefy);
         obecnaStrefa = other.gameObject.GetComponent <Strefa>();
         mozliwySklep = obecnaStrefa.sklep;
         mozliwaLawka = obecnaStrefa.lawka;
     }
 }
示例#2
0
    void IdzDo(GameObject waypoint)
    {
        if (waypoint != null && !siedzi) //Idź do
        {
            //Obrót
            Vector3 relativePos = waypoint.transform.position + margines - transform.position;
            relativePos.y = 0.0f;
            if (relativePos != Vector3.zero)
            {
                transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.LookRotation(relativePos), rotspeed);
            }
            //Przesunięcie
            transform.position = Vector3.MoveTowards(transform.position, waypoint.transform.position + margines, moveSpeed * Time.deltaTime); // Idź w stronę waypointa.
            if (transform.position == waypoint.transform.position + margines)                                                                 //Czy dotarł do celu?
            {
                switch (numerDocelowegoWP)                                                                                                    //Bazujac na tym gdzie klient wlasnie dotarl:
                {
                case 0:                                                                                                                       //WP_IN
                    WybierzWaypoint(1);
                    break;

                case 1:                       //WP_Center
                    if (mozliwySklep != null) //Sprawdź czy sklep w ogóle istnieje.
                    {
                        if (mozliwySklep.MaMiejsce())
                        {
                            mozliwySklep.UstawWKolejce();
                            WybierzWaypoint(2);
                        }
                        else     //Zadecyduj czy isc na ławkę (Jeśli strefa ją posiada!) czy do WP_Out:
                        {
                            if (obecnaStrefa.lawka != null)
                            {
                                if (obecnaStrefa.lawka.MaMiejsce())
                                {
                                    mozliwaLawka.UstawWKolejce();
                                    WybierzWaypoint(3);
                                }
                                else     //Jeśli ławka nie ma wolnego miejsca:
                                {
                                    IdzDoKolejnejStrefy();
                                }
                            }
                            else     //Jeśli w strefie nie ma ławki:
                            {
                                IdzDoKolejnejStrefy();
                            }
                        }
                    }
                    else     //Jeśli sklepu nie ma idź do kolejnej strefy:
                    {
                        IdzDoKolejnejStrefy();
                    }
                    break;

                case 2:     //WP_Shop

                    break;

                case 3:     //WP_Bench

                    break;

                case 4:     //Ostatni waypoint (leży już w innej strefie)
                    WybierzWaypoint(1);
                    break;

                default:
                    break;
                }

                //Zmień margines uwzględniając dokąd idzie klient.
                x = Random.Range(-0.5f, 0.5f);
                switch (numerDocelowegoWP)      //Wylosuj nowy margines dla wybranego wczesniej waypointu, zostanie on uzyty w kolejnej klatce.
                {
                case 0:                         //WP_IN
                    margines = new Vector3(
                        x,                      // + to góra, - to dół
                        0,                      // -------------------
                        Random.Range(0f, -0.5f) // + to "lewo", - to "prawo"
                        );
                    break;

                case 2:     //WP_Shop
                    margines = Vector3.zero;
                    break;

                case 3:                           //WP_Bench
                    margines = new Vector3(
                        0,                        // + to góra, - to dół
                        0,                        // -------------------
                        Random.Range(-0.2f, 0.2f) // + to "lewo", - to "prawo"
                        );
                    break;

                case 4:     //WP_Out
                    margines = new Vector3(
                        x,  // + to góra, - to dół
                        0,  // -------------------
                        0   // + to "lewo", - to "prawo"
                        );
                    break;

                default:
                    margines = new Vector3(
                        x,                            // + to góra, - to dół
                        0,                            // -------------------
                        x                             // + to "lewo", - to "prawo"
                        );
                    break;
                }
            }
        }
        else //Jeśli strefa nie jest jeszcze wybrana/waypoint jest pusty.
        {
            obecnaStrefa = WorldManager.instance.strefy[0];
            if (obecnaStrefa.waypointy != null && obecnaStrefa.waypointy.Count > 0) //Usuwa błąd złego indeksu listy.
            {
                waypointDocelowy = obecnaStrefa.waypointy[0];
            }
        }
    }