Exemplo n.º 1
0
    //:::::::::::::::::::::::::::: Publicly available Interface ::::::::::::::::::::::::::::::::::::::::
    public void hurt(float value, DamageType type)
    {
        switch (type)
        {
        case DamageType.blunt:
            health -= value * damageResistance [0];
            break;

        case DamageType.pirsing:
            health -= value * damageResistance [1];
            break;

        case DamageType.fire:
            health -= value * damageResistance [2];
            break;

        case DamageType.electric:
            health -= value * damageResistance [3];
            break;

        case DamageType.corrosive:
            health -= value * damageResistance [4];
            break;
        }
        if (health <= 0)
        {
            health = 0;
            HiveMind.imDead(this, imGood);
            Destroy(this.gameObject);
        }
    }
Exemplo n.º 2
0
 void updateState()
 {
     if (enemy != null)
     {
         if (canISee(this.transform.position, enemy.gameObject, sightDistance))
         {
         }
         else
         {
             if (amIgood)
             {
                 enemy = HiveMind.getReachableBadGuy(this.transform.position, sightDistance);
             }
             else
             {
                 enemy = HiveMind.getReachableGoodGuy(this.transform.position, sightDistance);
             }
         }
     }
     else
     {
         //there is no enemy, getting closest enemy
         if (amIgood)
         {
             enemy = HiveMind.getReachableBadGuy(this.transform.position, sightDistance);
         }
         else
         {
             enemy = HiveMind.getReachableGoodGuy(this.transform.position, sightDistance);
         }
     }
 }
Exemplo n.º 3
0
//:::::::::::::::::::::::::::: Publicly available Interface ::::::::::::::::::::::::::::::::::::::::
    public void hurt(float value, DamageType type)
    {
        switch (type)
        {
        case DamageType.blunt:
            health -= value * damageResistance [0];
            break;

        case DamageType.pirsing:
            health -= value * damageResistance [1];
            break;

        case DamageType.fire:
            health -= value * damageResistance [2];
            break;

        case DamageType.electric:
            health -= value * damageResistance [3];
            break;

        case DamageType.corrosive:
            health -= value * damageResistance [4];
            break;
        }
        if (health <= 0)
        {
            health = 0;
            HiveMind.imDead(this, true);
            animator.SetBool("Dead", true);
            ui.showDead();
        }

        ui.hpUpdate((int)health);
    }
Exemplo n.º 4
0
//:::::::::::::::::::::::::::: Hiden functions ::::::::::::::::::::::::::::::::::::::::
    protected override void Start()
    {
        HiveMind.imaGoodGuy(this);
        //instantiate weapons
        for (int i = 0; i < 4; i++)
        {
            if (weaponPrefabs [i] != null)
            {
                weaponsGameO [i] = Instantiate(weaponPrefabs [i], hand1.transform);
            }
        }
        //Dissable unused weapons
        for (int i = 1; i < 4; i++)
        {
            if (weaponsGameO [i] != null)
            {
                weaponsGameO [i].SetActive(false);
            }
        }
        // Weapon inisialization
        for (int i = 0; i < 4; i++)
        {
            if (weaponsGameO [i] != null)
            {
                weaponlist [i] = weaponsGameO [i].GetComponent <Weapon> ();
            }
        }
        //get animator
        animator = this.GetComponent <Animator> ();
        base.Start();
    }
Exemplo n.º 5
0
 void Awake()
 {
     if (instance == null)
     {
         instance = this;
         instance.Setup();
     }
 }
Exemplo n.º 6
0
    override protected void Start()
    {
        speed         = 100;
        rotationSpeed = 5;

        boss = Object.FindObjectOfType <HiveMind>();

        base.Start();
    }
Exemplo n.º 7
0
    // Update is called once per frame
    void Update()
    {
        if (objective != null)
        {
            //====================================== follow objective ======================================
            float distance = Vector3.SqrMagnitude(this.gameObject.transform.position - objective.transform.position);
            //-------------------------- Rotation --------------------------
            Vector3 desiredRotation;
            if (distance > sqInRange)
            {
                desiredRotation = objective.transform.position - (this.transform.position + destinationShift);
            }
            else
            {
                desiredRotation = objective.transform.position - this.transform.position;
            }
            desiredRotation.y      = 0;
            this.transform.forward = Vector3.RotateTowards(this.transform.forward, desiredRotation, turningSpeed * Time.deltaTime, 0);

            //-------------------------- Moovement --------------------------
            if (distance > close)
            {
                applyMoovement(new Vector2(runningSpeed, 0));
            }
            else
            {
                if (distance > sqInRange)
                {
                    applyMoovement(new Vector2(walkingSpeed, 0));
                }
                else
                {
                    applyMoovement(Vector2.zero);
                }
            }
        }
        else
        {
            //====================================== get new objective ======================================
            if (imGood)
            {
                objective = HiveMind.getClosestBadGuy(this.transform.position);
            }
            else
            {
                objective = HiveMind.getClosestGoodGuy(this.transform.position);
            }
            //get new random side
            Vector2 aux = Random.insideUnitCircle.normalized * inRange;
            destinationShift = new Vector3(aux.x, 0, aux.y);
            //stop moovement
            applyMoovement(Vector2.zero);
        }

        //Update the character position
        refresh();
    }
Exemplo n.º 8
0
    override protected void Start()
    {
        speed         = 250;
        rotationSpeed = 5;

        boss = Object.FindObjectOfType <HiveMind>();
        core = GameObject.FindWithTag("Core").transform;

        base.Start();
    }
Exemplo n.º 9
0
 //:::::::::::::::::::::::::::: Hiden functions ::::::::::::::::::::::::::::::::::::::::
 void Start()
 {
     if (imGood)
     {
         HiveMind.imaGoodGuy(this);
     }
     else
     {
         HiveMind.imaBadGuy(this);
     }
 }
Exemplo n.º 10
0
 //:::::::::::::::::::::::::::: Hiden functions ::::::::::::::::::::::::::::::::::::::::
 void Start()
 {
     if (imGood)
     {
         HiveMind.imaGoodGuy(this);
     }
     else
     {
         HiveMind.imaBadGuy(this);
     }
     sphere = this.gameObject.GetComponent <CharacterController> ();
     //squaring distances
     close = close * close;
 }
Exemplo n.º 11
0
    override protected void Awake()
    {
        base.Awake();
        ObjectPool.Instance.laserCount += 30;

        speed         = 30;
        rotationSpeed = 5;

        for (int i = 0; i <= 3; i++)
        {
            shootPoint[i] = transform.Find("" + i).gameObject;
        }

        boss = Object.FindObjectOfType <HiveMind>();
    }
Exemplo n.º 12
0
 protected override void Start()
 {
     if (amIgood)
     {
         HiveMind.imaGoodGuy(this);
     }
     else
     {
         HiveMind.imaBadGuy(this);
     }
     atackRange    = atackRange * atackRange;
     sightDistance = sightDistance * sightDistance;
     InvokeRepeating("updateState", Random.value, 0.7f);
     objectivePosition = this.transform.position;
     base.Start();
 }
Exemplo n.º 13
0
//:::::::::::::::::::::::::::: Hiden functions ::::::::::::::::::::::::::::::::::::::::
    override protected void Start()
    {
        if (imGood)
        {
            HiveMind.imaGoodGuy(this);
        }
        else
        {
            HiveMind.imaBadGuy(this);
        }
        //squaring distances
        close     = close * close;
        sqInRange = inRange * inRange;

        base.Start();
    }
Exemplo n.º 14
0
 private void checkFight()
 {
     if (HiveMind.getNumOfBadGuys() <= minimumToSpawn)
     {
         foreach (EnemyDor d in badDors)
         {
             d.spawnPack(badGuys [Random.Range(0, badGuys.Length)]);
         }
     }
     if (HiveMind.getNumOfGoodGuys() <= minimumToSpawn)
     {
         foreach (EnemyDor d in goodDors)
         {
             d.spawnPack(goodGuys [Random.Range(0, goodGuys.Length)]);
         }
     }
 }
Exemplo n.º 15
0
 public void chechIfWaveIsOver()
 {
     if (betweenWaves)
     {
         if (HiveMind.getNumOfBadGuys() > 0)
         {
             betweenWaves = false;
         }
     }
     else
     {
         if (HiveMind.getNumOfBadGuys() == 0)
         {
             advanceWave();
         }
     }
 }
    protected override void Start()
    {
        stunImmune = true;
        timeImmune = true;

        rotation = transform.rotation.eulerAngles;

        laserPoint    = laser.transform.position;
        laserCollider = laser.GetComponent <BoxCollider>();
        laserStart    = laser.transform.localPosition;


        //ActivateLaser();

        beatTime = BaseLevel.Instance.GetBeatTime();
        base.Start();
        boss = Object.FindObjectOfType <HiveMind>();
        explosion.GetComponent <EnemyExplosion>().meshSize = 6;
    }
Exemplo n.º 17
0
 void Update()
 {
     if (objective != null)
     {
         float   distance        = Vector3.SqrMagnitude(moovingPart.position - objective.transform.position);
         Vector3 desiredRotation = objective.transform.position - moovingPart.position;
         moovingPart.forward = Vector3.RotateTowards(moovingPart.forward, desiredRotation, rotationSpeed * Time.deltaTime, 0);
         if ((Time.time - lastShot) > timeBetweenShots)
         {
             if (Physics.Raycast(endOfBarrel.transform.position, endOfBarrel.forward, out hit, 500))
             {
                 if (hit.collider.gameObject == objective.gameObject)
                 {
                     //shoot
                     Instantiate(projectile, endOfBarrel.position, Quaternion.Euler(endOfBarrel.eulerAngles + (Random.insideUnitSphere * acuracy)));
                     lastShot = Time.time;
                 }
             }
         }
         if (distance > shootingRange)
         {
             objective = null;
         }
     }
     else
     {
         if (imGood)
         {
             objective = HiveMind.getClosestBadGuy(this.transform.position);
         }
         else
         {
             objective = HiveMind.getClosestGoodGuy(this.transform.position);
         }
     }
 }
Exemplo n.º 18
0
    //:::::::::::::::::::::::::::: Hiden functions ::::::::::::::::::::::::::::::::::::::::
    override protected void Start()
    {
        animator = this.gameObject.GetComponent <Animator> ();
        if (imGood)
        {
            HiveMind.imaGoodGuy(this);
        }
        else
        {
            HiveMind.imaBadGuy(this);
        }
        //squaring distances
        close     = close * close;
        sqInRange = inRange * inRange;
        engage    = engage * engage;

        // Laser inisialization
        for (int i = 0; i < 3; i++)
        {
            lasers [i] = lasersGO [i].GetComponent <Weapon> ();
        }

        base.Start();
    }
Exemplo n.º 19
0
    // Update is called once per frame
    void Update()
    {
        if (objective != null)
        {
            if (stunned == false)
            {
                //====================================== follow objective ======================================
                float distance = Vector3.SqrMagnitude(objective.transform.position - this.transform.position);
                //-------------------------- Rotation --------------------------
                blades.transform.Rotate(new Vector3(0, 0, turningSpeed * Time.deltaTime));

                //-------------------------- Moovement --------------------------
                if (atacking)
                {
                    //it's atacking
                    if (distance > close)
                    {
                        //its slowing down
                        float lerpFactor = (Time.time - lastReorient) / reorientPeriod;
                        sphere.Move(Vector3.Lerp(currentSpeed, Vector3.zero, lerpFactor) * Time.deltaTime);
                    }
                    else
                    {
                        lastReorient = Time.time;
                        sphere.Move(currentSpeed * Time.deltaTime);
                    }
                    if ((Time.time - lastReorient) >= reorientPeriod)
                    {
                        atacking = false;
                    }
                }
                else
                {
                    Vector3 moovement = (objective.transform.position - this.transform.position).normalized;
                    sphere.Move(moovement * walkingSpeed * Time.deltaTime);
                    if (distance < close)
                    {
                        atacking     = true;
                        currentSpeed = moovement * runningSpeed;
                    }
                }
            }
            else
            {
                //is stunned
                float lerpFactor = (Time.time - lastStunned) / stunnedPeriod;
                sphere.Move(Vector3.Lerp(currentSpeed, Vector3.zero, lerpFactor) * Time.deltaTime);
                blades.transform.Rotate(new Vector3(0, 0, Mathf.Lerp(0, turningSpeed, lerpFactor) * Time.deltaTime));
                if (Time.time - lastStunned > stunnedPeriod)
                {
                    stunned = false;
                }
            }
        }
        else
        {
            //====================================== get new objective ======================================
            if (imGood)
            {
                objective = HiveMind.getClosestBadGuy(this.transform.position);
            }
            else
            {
                objective = HiveMind.getClosestGoodGuy(this.transform.position);
            }
        }
    }
Exemplo n.º 20
0
 public void loadMainMenu()
 {
     Time.timeScale = 1;
     HiveMind.clearData();
     SceneManager.LoadScene(0);
 }
Exemplo n.º 21
0
 public void play()
 {
     HiveMind.clearData();
     SceneManager.LoadScene(1);
 }
Exemplo n.º 22
0
    // Update is called once per frame
    void Update()
    {
        if (objective != null)
        {
            if (atacking == false)
            {
                if (engaged == false)
                {
                    //====================================== follow objective ======================================
                    float distance = Vector3.SqrMagnitude(this.gameObject.transform.position - objective.transform.position);
                    //-------------------------- Rotation --------------------------
                    Vector3 desiredRotation;
                    if (distance > sqInRange)
                    {
                        desiredRotation = objective.transform.position - (this.transform.position + destinationShift);
                    }
                    else
                    {
                        desiredRotation = objective.transform.position - this.transform.position;
                    }
                    desiredRotation.y      = 0;
                    this.transform.forward = Vector3.RotateTowards(this.transform.forward, desiredRotation, turningSpeed * Time.deltaTime, 0);

                    //-------------------------- Moovement --------------------------
                    if (distance > close)
                    {
                        applyMoovement(new Vector2(runningSpeed, 0));
                    }
                    else
                    {
                        if (distance > sqInRange)
                        {
                            applyMoovement(new Vector2(walkingSpeed, 0));
                        }
                        else
                        {
                            if (distance > engage)
                            {
                                applyMoovement(Vector2.zero);
                                RaycastHit hit;
                                if (Physics.Linecast(this.transform.position, this.transform.position + this.transform.forward * inRange, out hit))
                                {
                                    if (hit.collider.gameObject == objective.gameObject)
                                    {
                                        animator.SetBool("Attacking", true);
                                        atacking = true;
                                    }
                                }
                            }
                            else
                            {
                                engaged = true;
                                animator.SetBool("Engaged", true);
                                lasteEngagement = Time.time;
                                applyMoovement(Vector2.zero);
                            }
                        }
                    }
                }
                else
                {
                    //engaged
                    this.gameObject.transform.Rotate(new Vector3(0, turningSpeed * 57.3f * Time.deltaTime, 0));                      // 57.3 is so to transform radians to degrees
                    Vector3 moovement = objective.transform.position - this.transform.position;
                    moovement.y = 0;
                    applyPush(moovement.normalized * walkingSpeed);
                    if (Time.time - lasteEngagement > engagmentTime && (objective.transform.position - this.transform.position).sqrMagnitude > engage)
                    {
                        animator.SetBool("Engaged", false);
                    }
                }
            }
            else
            {
                //attacking
                applyMoovement(Vector2.zero);
            }
        }
        else
        {
            //====================================== get new objective ======================================
            if (imGood)
            {
                objective = HiveMind.getClosestBadGuy(this.transform.position);
            }
            else
            {
                objective = HiveMind.getClosestGoodGuy(this.transform.position);
            }
            //get new random side
            Vector2 aux = Random.insideUnitCircle.normalized * inRange;
            destinationShift = new Vector3(aux.x, 0, aux.y);
            //stop moovement
            applyMoovement(Vector2.zero);
        }

        //Update the character position
        refresh();

        //Controling lasers
        if (atacking)
        {
            lasers [0].framecall();
        }
        if (engaged)
        {
            for (int i = 0; i < 3; i++)
            {
                lasers [i].framecall();
            }
        }
    }
Exemplo n.º 23
0
 public void reloadScene()
 {
     HiveMind.clearData();
     SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
 }