예제 #1
0
    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);
    }
예제 #2
0
    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);
    }
예제 #3
0
    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;
    }