Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class TurretAi : MonoBehaviour
- {
- public enum AiStates { NEAREST, FURTHEST, WEAKEST, STRONGEST };
- public AiStates aiState = AiStates.NEAREST;
- TrackingSystem m_tracker;
- ShootingSystem m_shooter;
- RangeChecker m_range;
- void Start()
- {
- m_tracker = GetComponent<TrackingSystem>();
- m_shooter = GetComponent<ShootingSystem>();
- m_range = GetComponent<RangeChecker>();
- }
- private void Update()
- {
- //if missing any of these scripts don't run the code
- if (!m_tracker || !m_shooter || !m_range)
- return;
- switch (aiState)
- {
- //These are colons not semi-colons
- case AiStates.NEAREST:
- TargetNearest();
- break;
- case AiStates.FURTHEST:
- TargetFuthest();
- break;
- case AiStates.STRONGEST:
- TargetStrongest();
- break;
- case AiStates.WEAKEST:
- TargetWeakest();
- break;
- }
- }
- void TargetNearest()
- {
- List<GameObject> validTargets = m_range.GetValidTargets();
- GameObject curTarget = null;
- float closestDist = 0.0f;
- for (int i = 0; i < validTargets.Count; i++)
- {
- float dist = Vector3.Distance(transform.position, validTargets[i].transform.position);
- if (!curTarget || dist < closestDist)
- {
- curTarget = validTargets[i];
- closestDist = dist;
- }
- }
- m_tracker.SetTarget(curTarget);
- m_shooter.SetTarget(curTarget);
- }
- void TargetFuthest()
- {
- List<GameObject> validTargets = m_range.GetValidTargets();
- GameObject curTarget = null;
- float furthestDist = 0.0f;
- for (int i = 0; i < validTargets.Count; i++)
- {
- float dist = Vector3.Distance(transform.position, validTargets[i].transform.position);
- if (!curTarget || dist > furthestDist)
- {
- curTarget = validTargets[i];
- furthestDist = dist;
- }
- }
- m_tracker.SetTarget(curTarget);
- m_shooter.SetTarget(curTarget);
- }
- void TargetWeakest()
- {
- List<GameObject> validTargets = m_range.GetValidTargets();
- GameObject curTarget = null;
- int lowestHealth = 0;
- for (int i = 0; i < validTargets.Count; i++)
- {
- int maxHp = validTargets[i].GetComponent<Health>().maxHealth;
- if (!curTarget || maxHp < lowestHealth)
- {
- lowestHealth = maxHp;
- curTarget = validTargets[i];
- }
- }
- m_tracker.SetTarget(curTarget);
- m_shooter.SetTarget(curTarget);
- }
- void TargetStrongest()
- {
- List<GameObject> validTargets = m_range.GetValidTargets();
- GameObject curTarget = null;
- int highestHealth = 0;
- for (int i = 0; i < validTargets.Count; i++)
- {
- int maxHp = validTargets[i].GetComponent<Health>().maxHealth;
- if (!curTarget || maxHp > highestHealth)
- {
- highestHealth = maxHp;
- curTarget = validTargets[i];
- }
- }
- m_tracker.SetTarget(curTarget);
- m_shooter.SetTarget(curTarget);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment