// 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; } }
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); }
// 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(); } } }
private void ChaseShopper(shopper shopper) { target = shopper; state += 1; }