Exemple #1
0
    void Shoot()
    {
        timer = 0f;


        gunLight.enabled = true;

        gunParticles.Stop();
        gunParticles.Play();

        gunLine.enabled = true;
        gunLine.SetPosition(0, transform.position);

        shootRay.origin    = transform.position;
        shootRay.direction = transform.forward;

        if (Physics.Raycast(shootRay, out shootHit, range, shootableMask))
        {
            EHealth enemyHealth = shootHit.collider.GetComponent <EHealth> ();
            if (enemyHealth != null)
            {
                enemyHealth.TakeDamage(damagePerShot, shootHit.point);
            }
            gunLine.SetPosition(1, shootHit.point);
        }
        else
        {
            gunLine.SetPosition(1, shootRay.origin + shootRay.direction * range);
        }
    }
Exemple #2
0
    public void GetTarget()
    {
        Vector3 direction = new Vector3(transform.forward.x, transform.forward.z);

        Target = GetTargetNearestDirection(direction);

        if (Target != null)
        {
            targetHealth = Target.GetComponent <EHealth>();
        }
    }
Exemple #3
0
    private void Attack()
    {
        float eDistance = Vector3.Distance(targete.transform.position, transform.position);

        Vector3 dir = (targete.transform.position - transform.position).normalized;

        float direction = Vector3.Dot(dir, transform.forward);

        Debug.Log(direction);

        if (eDistance < 2.6f)
        {
            if (direction > 0)
            {
                EHealth eh = (EHealth)targete.GetComponent("EHealth");
                eh.CurrentHealth(-10);
            }
        }
    }
    public void TakeHit(int damage)
    {
        if (bDead)
        {
            return;
        }
        print(owner.name + " took " + damage + " damage.");
        health -= damage;
        FloatingTextManager.textManager.CreateText("-" + damage + " hp", Color.red, text_losingValues, owner.transform.position);
        if (health <= 0)
        {
            FloatingTextManager.textManager.CreateText("Dead!", Color.red, text_losingValues, owner.transform.position);
            print(owner.name + " is dead.");

            UI_Manager.UIManager.GetUI("UI_Battle_DamageReport").GetComponent <UI_Battle_DamageReport>().AddDetails(owner.name + " is dead!");
            UI_Manager.UIManager.UI_Open("UI_Battle_DamageReport");

            health = 0;
            state  = EHealth.HEALTH_DEAD;
            bDead  = true;
            Dead();
        }
    }
    public void StatChange(float percent)
    {
        MainStats = gameObject.GetComponent <EHealth>();
        Stats     = gameObject.GetComponent <eController>();

        float mSpeedChange = percent / Stats.Speed;

        if (Stats.Speed + mSpeedChange > 0)
        {
            Stats.Speed += mSpeedChange;
        }
        //Damage has a lower starting value so needs to change at a higher rate
        float damageChange = (percent * 1.5f) / MainStats.enemyDamage;

        if (MainStats.enemyDamage + damageChange > 0)
        {
            MainStats.enemyDamage += damageChange;
        }

        float healthChange = (percent * 1.5f) / MainStats.enemyHealth;

        if (MainStats.enemyHealth + healthChange > 0)
        {
            MainStats.enemyHealth += healthChange;
        }

        float fireRateChange = percent / Stats.fireRate;

        if (Stats.fireRate - fireRateChange > 0)
        {
            Stats.fireRate -= fireRateChange;
        }

        float scoreChange = percent / MainStats.ScoreValue;

        if (MainStats.ScoreValue + scoreChange > 0)
        {
            MainStats.ScoreValue += Mathf.Round(scoreChange);
        }

        if (Stats.Projectile != null)
        {
            if (Stats.Projectile.GetComponent <EnemyProjectile>() != null)
            {
                float speed       = Stats.Projectile.GetComponent <EnemyProjectile>().shotSpeed;
                float speedChange = (percent * 1.5f) / speed;
                if (speed + speedChange > 0)
                {
                    Stats.Projectile.GetComponent <EnemyProjectile>().shotSpeed += speedChange;
                }

                float range       = Stats.Projectile.GetComponent <EnemyProjectile>().range;
                float rangeChange = (percent * 1.5f) / range;
                if (range + rangeChange > 0)
                {
                    Stats.Projectile.GetComponent <EnemyProjectile>().range += rangeChange;
                }

                float damage           = Stats.Projectile.GetComponent <EnemyProjectile>().damage;
                float projDamageChange = (percent * 1.5f) / damage;
                if (damage + projDamageChange > 0)
                {
                    Stats.Projectile.GetComponent <EnemyProjectile>().damage += projDamageChange;
                }
            }
        }
    }