Пример #1
0
 // Update is called once per frame
 void Update()
 {
     if ((DateTime.Now - lastspawn).TotalSeconds > (2 / spawnSpeed))
     {
         GameObject agent   = Instantiate(shopper_prefab, transform);
         shopper    shopper = agent.GetComponent <shopper>();
         shopper.eating_area = eating_area;
         lastspawn           = DateTime.Now;
     }
 }
Пример #2
0
 private shopper FindFlyered()
 {
     Collider[] hitColliders;
     hitColliders = Physics.OverlapSphere(transform.position, shopper_sphere_radius);
     for (int i = 0; i < hitColliders.Length; i++)
     {
         if (hitColliders[i].name == "Shopper(Clone)")
         {
             shopper shopper = hitColliders[i].gameObject.GetComponent <shopper>();
             if (shopper.flyered)
             {
                 return(shopper);
             }
         }
     }
     return(null);
 }
Пример #3
0
    // Update is called once per frame
    void Update()
    {
        set_obs_distance();
        if (state == 0)
        {
            shopper shopper = FindFlyered();
            if (shopper != null)
            {
                ChaseShopper(shopper);
            }
            else if (isInRange())
            {
                setRandomDest();
            }
            else
            {
                transform.position += nav.ComputeDisplacement(this) / (float)1.2;
            }
            if ((transform.position.z > 40 || transform.position.z < -40) && (DateTime.Now - last_flyer).TotalSeconds > 100 / flyer_timer)
            {
                if (rand.Next(10) / 10.0 < flyer_prob)
                {
                    GameObject flyer = Instantiate(flyer_prefab, flyers.transform);
                    flyer.transform.position = transform.position;
                    last_flyer = DateTime.Now;
                }
            }
        }

        else if (state == 1)
        {
            destination         = target.transform.position;
            transform.position += nav.ComputeDisplacement(this) / (float)1.2;
            if (isInTargetRange())
            {
                state++;
                timer = DateTime.Now;
            }
        }
        else if (state == 2)
        {
            if (isInTargetRange())
            {
                destination         = target.transform.position;
                transform.position += nav.ComputeDisplacement(this) / (float)1.5;
                if ((DateTime.Now - timer).TotalSeconds > chase_time)
                {
                    StartPause();
                }
            }
            else
            {
                state = 0;
            }
        }
        else if (state == 3)
        {
            if ((DateTime.Now - pause_start).TotalSeconds > pause_time)
            {
                ResetAdv();
            }
        }
    }
Пример #4
0
 private void ChaseShopper(shopper shopper)
 {
     target = shopper;
     state += 1;
 }