using System.Collections; using System.Collections.Generic; using UnityEngine; public class Tower : MonoBehaviour { Transform turretTransform; public float range = 10f; public GameObject bulletPrefab; float fireCoolDown = 0.5f; float fireCoolDownLeft = 0; public float damage = 1; public int ammo = 1; // Use this for initialization void Start () { turretTransform = transform.Find("Base").transform.Find("Turret"); } // Update is called once per frame void Update () { SolMinion[] solMinions = GameObject.FindObjectsOfType<SolMinion>(); SolMinion nearestMinion = null; float dist = Mathf.Infinity; foreach(SolMinion e in solMinions) { float d = Vector3.Distance(this.transform.position, e.transform.position); if(nearestMinion == null || d < dist) { nearestMinion = e; dist = d; } } if(nearestMinion == null) { Debug.Log("No minions?"); return; } Vector3 dir = nearestMinion.transform.position - this.transform.position; Quaternion lookRot = Quaternion.LookRotation(dir); turretTransform.rotation = Quaternion.Euler(0, lookRot.eulerAngles.y, 0); fireCoolDownLeft -= Time.deltaTime; if(fireCoolDownLeft <=0 && dir.magnitude <= range && ammo == 1) { ammo = 0; fireCoolDownLeft = fireCoolDown; ShootAt(nearestMinion); } } void ShootAt(SolMinion solMinion) { GameObject bulletGO = (GameObject)Instantiate(bulletPrefab, this.transform.position, this.transform.rotation); Bullet b = bulletGO.GetComponent<Bullet>(); b.target = solMinion.transform; b.damage = damage; } }