LegitTeddyBears

TurretAI

Jun 5th, 2017
277
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.49 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class TurretAi : MonoBehaviour
  6. {
  7.     public enum AiStates { NEAREST, FURTHEST, WEAKEST, STRONGEST };
  8.     public AiStates aiState = AiStates.NEAREST;
  9.     TrackingSystem m_tracker;
  10.     ShootingSystem m_shooter;
  11.     RangeChecker m_range;
  12.  
  13.     void Start()
  14.     {
  15.         m_tracker = GetComponent<TrackingSystem>();
  16.         m_shooter = GetComponent<ShootingSystem>();
  17.         m_range = GetComponent<RangeChecker>();
  18.     }
  19.  
  20.     private void Update()
  21.     {
  22.         //if missing any of these scripts don't run the code
  23.         if (!m_tracker || !m_shooter || !m_range)
  24.             return;
  25.         switch (aiState)
  26.         {
  27.             //These are colons not semi-colons
  28.             case AiStates.NEAREST:
  29.                 TargetNearest();
  30.                 break;
  31.             case AiStates.FURTHEST:
  32.                 TargetFuthest();
  33.                 break;
  34.             case AiStates.STRONGEST:
  35.                 TargetStrongest();
  36.                 break;
  37.             case AiStates.WEAKEST:
  38.                 TargetWeakest();
  39.                 break;
  40.         }
  41.     }
  42.     void TargetNearest()
  43.     {
  44.         List<GameObject> validTargets = m_range.GetValidTargets();
  45.         GameObject curTarget = null;
  46.         float closestDist = 0.0f;
  47.  
  48.         for (int i = 0; i < validTargets.Count; i++)
  49.         {
  50.             float dist = Vector3.Distance(transform.position, validTargets[i].transform.position);
  51.  
  52.             if (!curTarget || dist < closestDist)
  53.             {
  54.                 curTarget = validTargets[i];
  55.                 closestDist = dist;
  56.             }
  57.         }
  58.         m_tracker.SetTarget(curTarget);
  59.         m_shooter.SetTarget(curTarget);
  60.     }
  61.     void TargetFuthest()
  62.     {
  63.         List<GameObject> validTargets = m_range.GetValidTargets();
  64.         GameObject curTarget = null;
  65.         float furthestDist = 0.0f;
  66.  
  67.         for (int i = 0; i < validTargets.Count; i++)
  68.         {
  69.             float dist = Vector3.Distance(transform.position, validTargets[i].transform.position);
  70.  
  71.             if (!curTarget || dist > furthestDist)
  72.             {
  73.                 curTarget = validTargets[i];
  74.                 furthestDist = dist;
  75.             }
  76.         }
  77.         m_tracker.SetTarget(curTarget);
  78.         m_shooter.SetTarget(curTarget);
  79.     }
  80.  
  81.     void TargetWeakest()
  82.     {
  83.         List<GameObject> validTargets = m_range.GetValidTargets();
  84.  
  85.         GameObject curTarget = null;
  86.         int lowestHealth = 0;
  87.  
  88.         for (int i = 0; i < validTargets.Count; i++)
  89.         {
  90.             int maxHp = validTargets[i].GetComponent<Health>().maxHealth;
  91.  
  92.             if (!curTarget || maxHp < lowestHealth)
  93.             {
  94.                 lowestHealth = maxHp;
  95.                 curTarget = validTargets[i];
  96.             }
  97.         }
  98.         m_tracker.SetTarget(curTarget);
  99.         m_shooter.SetTarget(curTarget);
  100.  
  101.     }
  102.     void TargetStrongest()
  103.     {
  104.         List<GameObject> validTargets = m_range.GetValidTargets();
  105.  
  106.         GameObject curTarget = null;
  107.         int highestHealth = 0;
  108.  
  109.         for (int i = 0; i < validTargets.Count; i++)
  110.         {
  111.             int maxHp = validTargets[i].GetComponent<Health>().maxHealth;
  112.  
  113.             if (!curTarget || maxHp > highestHealth)
  114.             {
  115.                 highestHealth = maxHp;
  116.                 curTarget = validTargets[i];
  117.             }
  118.         }
  119.         m_tracker.SetTarget(curTarget);
  120.         m_shooter.SetTarget(curTarget);
  121.     }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment