Advertisement
Guest User

Untitled

a guest
Feb 20th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.17 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public enum rangeType
  6. {
  7.     Dectection,
  8.     Combat,
  9.     TooClose,
  10. }
  11.  
  12. public class AI_BaseClass : MonoBehaviour {
  13.     public GameObject target;
  14.  
  15.     [Range(1, 50)]
  16.     public float DetectRange,CombatRange,TooCloseRange;
  17.  
  18.     [Range(0, 1)]
  19.     public float field_of_vison;
  20.  
  21.     [Range(0.01f, 0.1f)]
  22.     public float presision;
  23.  
  24.     public bool debugMode;
  25.  
  26.     void Update() {
  27.         InRange(rangeType.Dectection);
  28.     }
  29.  
  30.     bool InRange(rangeType type)
  31.     {
  32.         if (type == rangeType.Dectection)
  33.         {
  34.             for (float i = 0; i < field_of_vison; i += presision)
  35.             {
  36.                 if (debugMode) { Debug.DrawLine(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.right, i) * DetectRange)); }
  37.                 if (Physics.Linecast(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.right, i) * DetectRange))) { return true; }
  38.             }
  39.             for (float i = 0; i < field_of_vison; i += presision)
  40.             {
  41.                 if (debugMode) { Debug.DrawLine(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.left, i) * DetectRange)); }
  42.                 if (Physics.Linecast(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.left, i) * DetectRange))) { return true; }
  43.             }
  44.         }
  45.  
  46.         if (type == rangeType.Combat)
  47.         {
  48.             for (float i = 0; i < field_of_vison; i += presision)
  49.             {
  50.                 Debug.DrawLine(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.right, i) * CombatRange));
  51.                 if (Physics.Linecast(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.right, i) * CombatRange))) { return true; }
  52.             }
  53.             for (float i = 0; i < field_of_vison; i += presision)
  54.             {
  55.                 Debug.DrawLine(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.left, i) * CombatRange));
  56.                 if (Physics.Linecast(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.left, i) * CombatRange))) { return true; }
  57.             }
  58.         }
  59.  
  60.         if (type == rangeType.TooClose)
  61.         {
  62.             for (float i = 0; i < field_of_vison; i += presision)
  63.             {
  64.                 Debug.DrawLine(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.right, i) * TooCloseRange));
  65.                 if (Physics.Linecast(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.right, i) * TooCloseRange))) { return true; }
  66.             }
  67.             for (float i = 0; i < field_of_vison; i += presision)
  68.             {
  69.                 Debug.DrawLine(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.left, i) * TooCloseRange));
  70.                 if (Physics.Linecast(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.left, i) * TooCloseRange))) { return true; }
  71.             }
  72.         }
  73.         return false;
  74.     }
  75.  
  76.     void OnDrawGizmosSelected()
  77.     {
  78.         Gizmos.color = new Color(0, 0, 0, 0.5f);
  79.         Gizmos.DrawLine(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward,Vector3.right,field_of_vison) * DetectRange));
  80.         Gizmos.DrawLine(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.left, field_of_vison) * DetectRange));
  81.         Gizmos.DrawLine(transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.right, field_of_vison) * DetectRange), transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.left, field_of_vison) * DetectRange));
  82.        
  83.         Gizmos.color = new Color(0, 125f, 0,0.5f);
  84.         Gizmos.DrawWireSphere(transform.position, DetectRange);
  85.  
  86.         Gizmos.color = new Color(125f, 0, 0, 0.5f);
  87.         Gizmos.DrawWireSphere(transform.position, CombatRange);
  88.  
  89.         Gizmos.color = new Color(0, 0, 125f, 0.5f);
  90.         Gizmos.DrawWireSphere(transform.position, TooCloseRange);
  91.     }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement