private void createPPLNow(Vector3 newSpawnPos) { int rand_indx = Random.Range(0, nos_sources); Vector3 sourceLoc = newSpawnPos; Vector3 targetLoc = sources [rand_indx]; int rand_chr = Random.Range(0, prefabNameList.Count); GameObject obs = (GameObject)Instantiate(Resources.Load("prefabs/" + prefabNameList [rand_chr]), sourceLoc, Quaternion.AngleAxis(270, Vector3.right)) as GameObject; obs.name = prefabNameList [rand_chr]; obs.transform.parent = transform; NavMeshAgent agent = (NavMeshAgent)obs.AddComponent("NavMeshAgent"); NavAgentMovement agentMovement = obs.AddComponent <NavAgentMovement> (); agentMovement.target = targetLoc; obs.transform.GetChild(0).gameObject.SetActive(false); obs.transform.FindChild(obs.name).transform.Rotate(Vector3.forward, 180); people.Add(obs); }
IEnumerator createPPL(Vector3 newSpawnPos, float l_secs) { yield return(new WaitForSeconds(l_secs)); int rand_indx = Random.Range(0, nos_sources); // Debug.Log("Rnd: " + rand_indx.ToString() + "," + nos_sources.ToString()); Vector3 sourceLoc = newSpawnPos; Vector3 targetLoc = sources [rand_indx]; int rand_chr = Random.Range(0, prefabNameList.Count); GameObject obs = (GameObject)Instantiate(Resources.Load("prefabs/" + prefabNameList [rand_chr]), sourceLoc, Quaternion.AngleAxis(270, Vector3.right)) as GameObject; obs.name = prefabNameList [rand_chr]; obs.transform.parent = transform; //obs.transform.localPosition = new Vector3(0,0,0); NavMeshAgent agent = (NavMeshAgent)obs.AddComponent("NavMeshAgent"); NavAgentMovement agentMovement = obs.AddComponent <NavAgentMovement> (); agentMovement.target = targetLoc; obs.transform.GetChild(0).gameObject.SetActive(false); //obs.transform.GetComponent<Rigidbody> ().detectCollisions = false; obs.transform.FindChild(obs.name).transform.Rotate(Vector3.forward, 180); people.Add(obs); }
void checkCrowd() { //Debug.Log (tornadoTime+" "); if (Powermode == MODE.TORNADO) { tornadoOn = true; } if (Powermode == MODE.FIREBALL || firemode == true) { if (!firemode) { fireLoc = GetComponentInParent <LevelController>().PowerLoc; fireLoc.y = 0; } firemode = true; if (fireTimer < -1.0f) { fireTimer = 6.0f; firemode = false; } else { fireTimer -= Time.deltaTime; } } if (tornadoOn == true && tornadoTime <= 0.0f) { tornadoOn = false; tornadoTime = 25.0f; } else { if (tornadoOn == true) { tornadoTime -= Time.deltaTime; tornadoLoc = GetComponentInParent <LevelController>().TornadoLoc; } } if (Powermode == MODE.HEY || chosenMode == true) { if (hoverTextTimer <= 0.0f) { chosenMode = false; hoverTextTimer = 5.0f; for (int i = 0; i < people.Count; i++) { people[i].GetComponent <NavAgentMovement>().haltMovement(false); //Debug.Log (people[i].transform.GetChild(0).GetChild(0).GetComponent<Text>().text); if (people[i].transform.childCount == 3 && people[i].transform.GetChild(2).name == "GodRays") { people[i].transform.GetChild(0).gameObject.SetActive(false); Transform toDestroyRays = people[i].transform.GetChild(2); Destroy(toDestroyRays.gameObject); } } } else { if (chosenMode == false) { chosenMode = true; chosenOne = Random.Range(0, people.Count); //Debug.Log("HEY ACTIVATED"+chosenOne); } else { hoverTextTimer -= Time.deltaTime; } } } if (Powermode == MODE.BOO || interactNPC == true) { if (interactTimer <= 0.0f) { interactNPC = false; interactTimer = 5.0f; for (int i = 0; i < people.Count; i++) { people[i].GetComponent <NavAgentMovement>().haltMovement(false); //Debug.Log (people[i].transform.GetChild(0).GetChild(0).GetComponent<Text>().text); if (people[i].transform.childCount == 2 && i <= NPC) { people[i].transform.GetChild(0).gameObject.SetActive(false); } } } else { if (interactNPC == false) { NPC = Random.Range(0, people.Count); interactNPC = true; //Debug.Log("BOO ACTIVATED"+NPC); } else { interactTimer -= Time.deltaTime; } } } int people_nos = people.Count; for (int i = 0; i < people_nos; i++) { int rand_pos = Random.Range(0, nos_sources); NavAgentMovement person_script = people[i].GetComponent <NavAgentMovement>(); // Debug.Log(person_script.lastTimeUpdate+" "); if (person_script.health <= 0.0f && person_script.deathCause == true) { Vector3 spawnLoc = people[i].transform.position; Destroy(people[i]); GameObject.FindGameObjectWithTag("ZombieManager").GetComponent <ZombieManager>().addZombie(spawnLoc); people.RemoveAt(i); people_nos--; i--; continue; } else { if (person_script.health <= 0.0f && person_script.deathCause == false) { Destroy(people[i]); people.RemoveAt(i); people_nos--; i--; continue; } } //people[i].transform.GetChild(0); Vector3 newLoc = people[i].transform.position; if (fireTimer <= 3.0f && fireTimer > -1.0f && (people[i].transform.position - fireLoc).magnitude <= 10.0f && people[i].transform.childCount < 3) { GameObject head_fire = (GameObject)Instantiate(Resources.Load("human_fire"), Vector3.zero, Quaternion.identity) as GameObject; head_fire.transform.parent = people[i].transform; head_fire.transform.localPosition = new Vector3(0, 0.7f, 0); person_script.toggleScaredRun(true); //Debug.Log(people[i].name+" on fire"); } if (fireTimer <= -1.0f && (people[i].transform.childCount > 2)) { csHandle.PowerFireball.AddXP(1, -1); GameObject fireObj = people[i].transform.GetChild(2).gameObject; Destroy(fireObj); //Debug.Log(people[i].name + " off fire"); } if (tornadoOn == true) { tornadoLoc.y = 0.0f; if (tornadoTime <= 0.0f) { people[i].GetComponent <NavAgentMovement>().haltMovement(false); } else { Vector3 dir = people[i].transform.position - tornadoLoc; if (dir.magnitude <= tornadoRange) { csHandle.PowerTornado.AddXP(1, -1); //people[i].GetComponent<NavAgentMovement>().haltMovement(true); //people[i].GetComponent<Rigidbody>().AddForce(10000,300000,100000); people[i].GetComponent <NavMeshAgent>().Stop(); people[i].GetComponent <NavMeshAgent>().updatePosition = false; people[i].GetComponent <NavMeshAgent>().updateRotation = false; people[i].rigidbody.isKinematic = false; people[i].rigidbody.useGravity = true; //people[i].rigidbody.AddForce(new Vector3(1,20,1)); people[i].rigidbody.constraints = RigidbodyConstraints.None; people[i].rigidbody.AddRelativeForce(0.5f * dir.normalized + 2 * Vector3.up, ForceMode.Impulse); } else { // if((people[i].transform.position-tornadoLoc).magnitude > 2*tornadoRange){ // people[i].GetComponent<NavMeshAgent>().Resume(); // people[i].GetComponent<NavMeshAgent>().updatePosition = true; // people[i].GetComponent<NavMeshAgent>().updateRotation = true; // people[i].rigidbody.isKinematic = true; // people[i].rigidbody.useGravity = false; //people[i].GetComponent<NavAgentMovement>().haltMovement(false); // } } } } if (interactNPC == true) { if (NPC == i) { if (interactTimer == 5.0f) { Debug.Log("BOO" + i); csHandle.PowerBoo.AddXP(1, -1); people[i].transform.GetChild(0).gameObject.SetActive(true); people[i].GetComponentInChildren <Text>().text = BooString[Random.Range(0, BooString.Count)]; person_script.toggleScaredRun(true); } } } if (chosenMode == true) { if (chosenOne == i) { if (hoverTextTimer == 5.0f) { //Debug.Log ("CHOSEN!!"+i); csHandle.PowerHey.AddXP(1, 1); people[i].transform.GetChild(0).gameObject.SetActive(true); people[i].GetComponentInChildren <Text>().text = HeyString[Random.Range(0, HeyString.Count)]; GameObject godRays = (GameObject)Instantiate(Resources.Load("GodRays"), Vector3.zero, Quaternion.identity) as GameObject; godRays.name = "GodRays"; godRays.transform.parent = people[i].transform; godRays.transform.localPosition = new Vector3(0, 0, 0); person_script.haltMovement(true); person_script.health += 10.0f; } } } switch (Powermode) { case MODE.THUNDER_CLAP: person_script.toggleScaredRun(true); person_script.currentlyScared = true; csHandle.PowerThunderClap.AddXP(1, -1); //Debug.Log("Thunder Clap at "+pointOfContact+" "); break; } if (person_script.targetReached) { //Random random = new Random(); //random.seed = i; //updateSources(); //Debug.Log("Rnd: " + rand_pos.ToString() + "," + nos_sources.ToString()+" "+sources[rand_pos]); //Debug.Log(people[i].name+" at index "+i); person_script.setNewPath(sources[Random.Range(0, sources.Count)]); //Debug.Log("Recompute the new path"); } } Powermode = MODE.DEFAULT; }