public void Start() { //Setup Prefs dataStorage.SetupFlockPrefs(); dataStorage.SetupPredPrefs(); //Check if first time setup if (PlayerPrefs.GetInt("startingCount", 0) == 0) { dataStorage.SaveFlockPrefs(); dataStorage.SavePredPrefs(); } float radius = flock.startingCount * flock.agentDensity * 5; //Spawn in the predator away from murmuration Vector3 predatorPos = Random.insideUnitSphere * flock.startingCount * flock.agentDensity * 5 * 4; float predRadius = radius * 2; while ((predatorPos.x < predRadius && predatorPos.x > predRadius * -1) || (predatorPos.z < predRadius && predatorPos.z > predRadius * -1) || (predatorPos.y < predRadius && predatorPos.y > predRadius * -1)) { predatorPos = Random.insideUnitSphere * flock.startingCount * flock.agentDensity * 5 * 4; } predatorPos += flock.focalPoint; predatorAgent = Instantiate( predatorPrefab, predatorPos, Random.rotation, transform ); predatorAgent.name = "Predator"; predatorAgent.Initialize(flock); flock.predatorAgent = predatorAgent; //Spawn in the flock of birds for (int i = 0; i < flock.startingCount; i++) { Vector3 pos = (Random.insideUnitSphere * flock.startingCount * flock.agentDensity * 5) + flock.focalPoint; FlockAgent starling = Instantiate( flockAgent, pos, Random.rotation, transform ); starling.name = "" + i; starling.Initialize(flock, predatorAgent); flock.agents.Add(starling); flock.agentsTransform.Add(starling.transform); StartCoroutine(starling.starlingAnimate(starling.GetComponentInChildren <Animator>())); grid.Populate(i, pos); } //Setup Camera cam = Instantiate(camPrefab, flock.focalPoint, camPrefab.transform.rotation); cam.Initialise(flock, flock.agents[0].transform, flock.agents[0].transform, predatorAgent.transform); Menu.runSimulation = true; }
// LateUpdate is called after Update each frame void LateUpdate() { if (target == null) { checkWASDCamera(); } else { smoothCamera(); } checkMouseInput(); // If space bar is pressed detach from the current focucs if (target != null && Input.GetKey(KeyCode.Space)) { if (target.gameObject.tag == "PreyAgent") { PreyAgent targetScript = target.gameObject.GetComponent <PreyAgent>(); targetScript.deselect(); } if (target.gameObject.tag == "PredatorAgent") { PredatorAgent targetScript = target.gameObject.GetComponent <PredatorAgent>(); targetScript.deselect(); } target = null; } checkScreenshotInput(); }
private void Awake() { for (int i = 0; i < numberOfAgents; i++) { Vector3 pos = transform.position + Random.insideUnitSphere * spawnRadius; PredatorAgent agentInst = Instantiate(agent, pos, Quaternion.identity); agentInst.transform.forward = Random.insideUnitSphere; } }
public void changeObjectFocus(Transform agentPos) { if (target != null && target.gameObject.tag.Equals("PreyAgent")) { PreyAgent targetScript = target.gameObject.GetComponent <PreyAgent>(); targetScript.deselect(); } if (target != null && target.gameObject.tag.Equals("PredatorAgent")) { PredatorAgent targetScript = target.gameObject.GetComponent <PredatorAgent>(); targetScript.deselect(); } target = agentPos; }
public void Initialize(Flock flock, PredatorAgent predatorAgent) { this.flock = flock; this.predatorAgent = predatorAgent; }