Esempio n. 1
0
 // Use this for initialization
 void Start()
 {
     distance = Vector3.Distance (preceding.transform.position, transform.position);
     rbz = GetComponent<Rigidbody> ();
     rbzpreceding = preceding.GetComponent<SphereCollider> ();
     zombieBehaviour = new FirstBehaviour ();
 }
Esempio n. 2
0
    // Update is called once per frame
    void Update()
    {
        RaycastHit hit;

        if (Time.time > shootDelay + lastShoot)
        {
            if (Physics.Raycast(cam.transform.position, cam.transform.forward, out hit, range))
            {
                Debug.Log(hit.transform.name);
                ZombieBehaviour zombie = hit.transform.GetComponent <ZombieBehaviour>();
                if (zombie != null)
                {
                    zombie.TakeDamage(damage);
                }
                if (hit.rigidbody != null)
                {
                    hit.rigidbody.AddForce(hit.normal * impactForce);
                }

                GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
                Destroy(impactGO, 2f);
            }
            lastShoot = Time.time;
            SoundManagerScript.Instance.PlaySFX(SoundManagerScript.AudioClipID.SFX_SHOOT);
        }
    }
Esempio n. 3
0
    // Update is called once per frame
    void Update()
    {
        counter++;
        livesDisplay.text = "Lives: " + lives;
        scoreDisplay.text = "Score: " + score;
        ammoDisplay.text  = "Ammo: " + ammo;
        Vector3 move = new Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"), 0.0f);

        transform.position += move * speed * Time.deltaTime;
        monster             = GameObject.FindGameObjectWithTag("Monster");
        if (counter < 200)
        {
            instructions.text = "Press space to shoot";
        }
        else
        {
            instructions.text = "";
        }
        try {
            zomBehave = monster.GetComponent <ZombieBehaviour> ();
        } catch (Exception e) {
            if (counter > 5000 && lives > 0)
            {
                win();
                if (Input.GetKeyDown(KeyCode.R))
                {
                    restart();
                }
            }
        }
        if (Input.GetAxis("Horizontal") > 0)
        {
            monsterKiller.flipX = false;
        }
        else if (Input.GetAxis("Horizontal") < 0)
        {
            monsterKiller.flipX = true;
        }
        if (Input.GetKeyDown("space"))
        {
            if (ammo > 0)
            {
                ammo--;
                Rigidbody2D ammoClone = (Rigidbody2D)Instantiate(bullet, gameObject.GetComponent <Rigidbody2D> ().transform.position, transform.rotation);
            }
            else if (ammo <= 0)
            {
                noAmmo.Play();
            }
        }
        if (lives <= 0)
        {
            gameOver();
            die.Play();
            if (Input.GetKeyDown(KeyCode.R))
            {
                restart();
            }
        }
    }
Esempio n. 4
0
    void Start()
    {
        FernandoClue.SetActive(false);
        ITKey.SetActive(false);
        ITDoor.GetComponent <Collider>().enabled = false;
        ZombieBehaviour zombie = (ZombieBehaviour)GameObject.FindObjectOfType(typeof(ZombieBehaviour));

        m_Zombie = zombie.gameObject;
    }
Esempio n. 5
0
    public void MoveZombie()
    {
        ZombieBehaviour zombie = m_Zombie.GetComponent <ZombieBehaviour>();

        if (zombie != null)
        {
            zombie.MoveForwardAndDisable(6);
        }
    }
Esempio n. 6
0
    public void deactivateZombie()
    {
        Debug.Log("Zombie deactivated");
        Debug.Log(gameObject);
        //Destroy(gameObject);
        ZombieBehaviour zombieBehaviour = GetComponent <ZombieBehaviour>();

        zombieBehaviour.transmitter.GetComponent <Renderer>().material.color = Color.gray;
        zombieBehaviour.enabled = false;
        GameControlBehaviour.instance.points -= 10;
        StartCoroutine("deacZombie");
    }
Esempio n. 7
0
    public void Spawn(Vector3 transmitterSpawnPos, Vector3 zombieSpawnPos)
    {
        if (zombiesInAction < maxNumberOfTransmitters)
        {
            // Find the Objects, that helps with handling the Zombies and Transmitters in Hierarchy
            GameObject transmitters = GameObject.Find("Transmitters");
            GameObject zombies      = GameObject.Find("Zombies");

            GameObject transmitterObj = Instantiate(
                transmitterPrefab,
                transmitterSpawnPos,
                Quaternion.identity,
                transmitters.transform) as GameObject;

            GameObject zombieObj = Instantiate(
                zombiePrefab,
                zombieSpawnPos,
                Quaternion.identity,
                zombies.transform) as GameObject;


            ZombieBehaviour zombieBehaviour = zombieObj.GetComponent <ZombieBehaviour>();
            zombieBehaviour.goalPOI     = (POI)Random.Range(0, 3);
            zombieBehaviour.transmitter = transmitterObj;

            Color color = new Color(Random.value, Random.value, Random.value, Random.value);
            zombieObj.GetComponent <ZombieBehaviour>().goalPOI = (POI)Random.Range(0, 3);
            zombieObj.GetComponent <Health>().healthSlider     = transmitterObj.GetComponentInChildren <Slider>();

            transmitterObj.GetComponentInChildren <Image>().sprite = pointsOfInterestImage[(int)zombieBehaviour.goalPOI];

            if (zombieObj.transform.GetChild(0).GetComponent <Renderer>() != null)
            {
                zombieObj.transform.GetChild(0).GetComponent <Renderer>().material.color = color;
            }
            transmitterObj.GetComponent <Renderer>().material.color = color;

            zombiesInAction += 1;
            transmitterObj.transform.rotation = Quaternion.LookRotation(Vector3.up, transform.position);
            if (transmitterObj.transform.position.z > constants.PARK_HEIGHT)
            {
                transmitterObj.transform.Rotate(transmitterObj.transform.up, 90);
            }
            Destroy(transmitterObj.GetComponent <Material>());
            transmitterObj.GetComponent <CmdTransmitBehaviour> ().receiver = zombieObj;
        }
    }
Esempio n. 8
0
    // catching and destroying zombies / adding score / removing lives
    void OnTriggerEnter(Collider col)
    {
        ZombieBehaviour zbT = col.GetComponent <ZombieBehaviour>();

        if (zbT != null)
        {
            if (zbT.GetType() == typeof(FriendlyZombie))
            {
                GameController.AddScore(1); // adding score is zombie was friendly
            }
            else
            {
                GameController.SpendLives(1); // removing 1 llife if zombie was hostile
            }
            zbT.Kill();                       // killing zombie
        }
    }
Esempio n. 9
0
    // Use this for initialization
    void Start()
    {
        counter    = 1;
        frameDelta = 200;
        bossSpawn  = 1000;
        posX       = gameObject.transform.position.x + 16f;

        mechBehave            = mech.GetComponent <ZombieBehaviour> ();
        mechBehave.hit        = hit;
        mechBehave.reachedEnd = reachedEnd;
        mechBehave.dead       = mechDead;

        tankBehave            = tank.GetComponent <ZombieBehaviour> ();
        tankBehave.hit        = hit;
        tankBehave.reachedEnd = reachedEnd;
        tankBehave.dead       = tankDead;
    }
    private void Attack()
    {
        int currentLoopNumber;

        if (!animator.GetCurrentAnimatorStateInfo(0).IsName("AttackMaya"))
        {
            return;
        }
        currentLoopNumber = (int)animator.GetCurrentAnimatorStateInfo(0).normalizedTime;
        if (currentLoopNumber > lastLoopNumber)
        {
            lastLoopNumber = currentLoopNumber;
            if (target.TakeDamage())
            {
                target = null;
            }
            isAttacking = false;
        }
    }
Esempio n. 11
0
    private void Spawn(GameObject prefab, int number)
    {
        for (int i = 0; i < number; i++)
        {
            Vector3    spawnPosition = new Vector3(transform.position.x + UnityEngine.Random.Range(-0.5f, 0.5f), prefab.transform.position.y + transform.position.y);
            GameObject newMob        = GameObject.Instantiate(prefab, spawnPosition, prefab.transform.rotation, monstersParent);
            newMob.transform.localScale = new Vector3(UnityEngine.Random.Range(0.8f, 1.2f), UnityEngine.Random.Range(0.8f, 1.2f));
            Monster monster = newMob.GetComponent <Monster>();
            monster.speed *= UnityEngine.Random.Range(0.9f, 1.1f);

            // Scaling stats with time
            float scaling = 1f + Mathf.Sqrt(currentTimer);
            monster.speed *= Mathf.Sqrt(scaling);
            monster.maxHP *= scaling;
            if (currentTimer > 15f)
            {
                monster.maxHP += 50f * scaling;
            }
            if (currentTimer > 30f)
            {
                monster.maxHP += 50f * scaling;
                monster.maxHP *= scaling;
            }
            if (currentTimer > 45f)
            {
                monster.maxHP += 500f * scaling;
            }

            ZombieBehaviour zombie = newMob.GetComponent <ZombieBehaviour>();
            zombie.monsterInfo = monster;

            if (zombie.hasSpriteVariation)
            {
                int rand = UnityEngine.Random.Range(0, zombie.sprites.Length);
                zombie.spriteRenderer.sprite = zombie.sprites[rand];
                zombie.animator.runtimeAnimatorController = zombie.animatorControllers[rand];
            }

            monstersList.Add(newMob);
        }
    }
Esempio n. 12
0
    public void OnTriggerEnter(Collider otherCollider)
    {
        GameObject hitObject = otherCollider.gameObject;

        if (behaviour != null)
        {
            if (behaviour.GetIsDamaging() == true)
            {
                if (hitObject.GetComponent <PlayerInputHandler>() != null)
                {
                    HealthSystem playerHealth = hitObject.GetComponent <HealthSystem>();

                    playerHealth.DoDamage(behaviour.attackDamage);
                }
            }
        }
        else
        {
            behaviour = GetComponentInParent <ZombieBehaviour>();
        }
    }
Esempio n. 13
0
    void Shoot()
    {
        RaycastHit hit;

        if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range))
        {
            GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
            sphere.transform.localScale = new Vector3(0.25f, 0.25f, 0.25f);
            sphere.transform.position   = hit.point;
            GameObject.Destroy(sphere.GetComponent <SphereCollider>());


            Debug.Log(hit.transform.name);
            if (hit.transform.tag == "Zombie")
            {
                ZombieBehaviour Behaviour = hit.transform.gameObject.GetComponent <ZombieBehaviour>();
                Debug.Log("Hit a zombie");
                Behaviour.TakeDamage(damage);
            }
        }
    }
    /// <summary>
    /// Update is called every frame, if the MonoBehaviour is enabled.
    /// </summary>
    private void Update()
    {
        Camera.main.transform.position = Vector3.Lerp(Camera.main.transform.position, transform.position + cameraOffset, Time.deltaTime);

        if (target)
        {
            agent.destination = target.transform.position;
            if (agent.remainingDistance <= 1.5 && isAttacking)
            {
                animator.SetBool("Is Running", false);
                animator.SetBool("Is Attacking", true);
                agent.isStopped = true;
                transform.LookAt(target.transform);
                Attack();
            }
            else
            {
                animator.SetBool("Is Running", true);
            }
        }
        else
        {
            animator.SetBool("Is Running", !agent.isStopped && agent.remainingDistance > 1);
        }

        ProcessInputs();

        if (!isAttacking)
        {
            target = null;
            animator.SetBool("Is Attacking", false);
        }

        if (!target)
        {
            lastLoopNumber = -1;
        }
    }
Esempio n. 15
0
    private void Start()
    {
        //todo: fix this as it is a temporary solution
        var previewBehaviour = Instantiate(zombieTemplate, new Vector3(0f, -150f, 0f), Quaternion.identity).GetComponent <ZombieBehaviour>();

        previewBehaviour.attack    = MapData.ZombieToSpawn.totalAttack;
        previewBehaviour.health    = MapData.ZombieToSpawn.totalHealth;
        previewBehaviour.speed     = MapData.ZombieToSpawn.totalSpeed;
        previewBehaviour.spawnCost = MapData.ZombieToSpawn.totalCost;

        var partsRotation = previewBehaviour.torsoPosition.rotation;

        Instantiate(MapData.ZombieToSpawn.head.partObject, previewBehaviour.headPosition.position, partsRotation, previewBehaviour.headPosition);
        Instantiate(MapData.ZombieToSpawn.torso.partObject, previewBehaviour.torsoPosition.position, partsRotation, previewBehaviour.torsoPosition);
        Instantiate(MapData.ZombieToSpawn.arms[0].partObject, previewBehaviour.armLPosition.position, partsRotation, previewBehaviour.armLPosition);
        Instantiate(MapData.ZombieToSpawn.arms[1].partObject, previewBehaviour.armRPosition.position, partsRotation, previewBehaviour.armRPosition);
        Instantiate(MapData.ZombieToSpawn.legs[0].partObject, previewBehaviour.legLPosition.position, partsRotation, previewBehaviour.legLPosition);
        Instantiate(MapData.ZombieToSpawn.legs[1].partObject, previewBehaviour.legRPosition.position, partsRotation, previewBehaviour.legRPosition);

        _zombieToSpawn = Instantiate(previewBehaviour);
        _zombieToSpawn.gameObject.SetActive(false);
        previewBehaviour.gameObject.Destroy();
    }
 private void ProcessInputs()
 {
     if (Input.GetButtonDown("Fire1"))
     {
         RaycastHit hit;
         if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 50, LayerMask.GetMask("Zombie", "Terrain")))
         {
             if (hit.collider.tag == "Ennemi")
             {
                 target = hit.collider.GetComponentInParent <ZombieBehaviour>();
             }
             else
             {
                 target = null;
             }
             agent.isStopped   = false;
             agent.destination = hit.point;
         }
     }
     if (Input.GetButton("Fire1") && target)
     {
         isAttacking = true;
     }
 }
Esempio n. 17
0
 void Awake()
 {
     RigidbodyCache = Hips.GetComponentsInChildren <Rigidbody>();
     ColliderCache  = Hips.GetComponentsInChildren <Collider>();
     ai             = GetComponent <ZombieBehaviour>();
 }
Esempio n. 18
0
 // Start is called before the first frame update
 void Start()
 {
     behaviour = GetComponentInParent <ZombieBehaviour>();
 }
Esempio n. 19
0
 // Start is called before the first frame update
 void OnEnable()
 {
     theZombie          = transform.parent.gameObject;
     theZombieBehaviour = theZombie.GetComponent <ZombieBehaviour>();
 }
    ZombieBehaviour behaviour; //The zombie's behaviour, used to know what it is currently doing

    // Start is called before the first frame update
    void Start()
    {
        anim      = GetComponent <Animator>();
        behaviour = GetComponent <ZombieBehaviour>();
    }