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); } }
public void GetTarget() { Vector3 direction = new Vector3(transform.forward.x, transform.forward.z); Target = GetTargetNearestDirection(direction); if (Target != null) { targetHealth = Target.GetComponent <EHealth>(); } }
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; } } } }