Advertisement
Guest User

Untitled

a guest
Jun 25th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.58 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5.  
  6. public class Weapon : MonoBehaviour {
  7.     //Projectile
  8.     public GameObject projectilePrefab;
  9.  
  10.     //firerate
  11.     private float cooldown = 1.0f;
  12.     private float nextShot = 0.0f;
  13.  
  14.     //Range
  15.     private float range = 5.0f;
  16.     //Tempoary enemy health used in Update()
  17.     private float futureHealth;
  18.  
  19.     //Enemy list
  20.     private List<GameObject> enemyList = new List<GameObject>();
  21.  
  22.     void Start()
  23.     {
  24.         Debug.Log("Weapon created");
  25.     }
  26.  
  27.     // Update is called once per frame
  28.     void Update () {
  29.         if (Time.time > nextShot && enemyList.Count > 0)
  30.         {
  31.  
  32.             GameObject currentTarget = enemyList.FirstOrDefault();      //Pick first GameObject in list as target
  33.  
  34.             if (isTargetNull(currentTarget)) {enemyList.Remove(currentTarget); return;}
  35.  
  36.             //Access target health using IHealth
  37.             IHealth enemyHealth = currentTarget.GetComponent<Enemy>();  
  38.             futureHealth = enemyHealth.health;
  39.             Debug.Log(futureHealth);
  40.  
  41.             //Handle cooldown
  42.             nextShot = Time.time + cooldown;
  43.            
  44.             //Create projectile
  45.             GameObject projectile = (GameObject)Instantiate(projectilePrefab, transform.position, Quaternion.identity);
  46.  
  47.  
  48.             //Prevent overkill - multiple projectile after killing projectile have been initiated
  49.             int i = 0;
  50.             while ((futureHealth + projectile.GetComponent<Projectile>().damage) <= projectile.GetComponent<Projectile>().damage && enemyList.Count > i)
  51.             {
  52.                 currentTarget = enemyList[i];
  53.                 Debug.Log(currentTarget);
  54.                 if (isTargetNull(currentTarget)) { enemyList.Remove(currentTarget); return; }
  55.                 Debug.Log("Not Null");
  56.                 i++;
  57.             }
  58.  
  59.             //Shoot at enemy
  60.             Shoot(currentTarget, projectile);
  61.         }
  62.     }
  63.     //Detect collision with enemy
  64.     void OnTriggerEnter(Collider co)
  65.     {
  66.         if (co.GetComponent<Enemy>())
  67.         {
  68.             enemyList.Add(co.gameObject);
  69.         }
  70.     }
  71.    
  72.     bool isTargetNull(GameObject currentTarget)
  73.     {
  74.         if (currentTarget == null)
  75.         {
  76.             return true;
  77.         }
  78.         return false;
  79.     }
  80.  
  81.     void Shoot(GameObject currentTarget, GameObject projectile)
  82.     {
  83.         g.GetComponent<Projectile>().target = currentTarget.transform;
  84.         futureHealth = futureHealth - projectile.GetComponent<Projectile>().damage;
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement