Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public enum rangeType
- {
- Dectection,
- Combat,
- TooClose,
- }
- public class AI_BaseClass : MonoBehaviour {
- public GameObject target;
- [Range(1, 50)]
- public float DetectRange,CombatRange,TooCloseRange;
- [Range(0, 1)]
- public float field_of_vison;
- [Range(0.01f, 0.1f)]
- public float presision;
- public bool debugMode;
- void Update() {
- InRange(rangeType.Dectection);
- }
- bool InRange(rangeType type)
- {
- if (type == rangeType.Dectection)
- {
- for (float i = 0; i < field_of_vison; i += presision)
- {
- if (debugMode) { Debug.DrawLine(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.right, i) * DetectRange)); }
- if (Physics.Linecast(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.right, i) * DetectRange))) { return true; }
- }
- for (float i = 0; i < field_of_vison; i += presision)
- {
- if (debugMode) { Debug.DrawLine(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.left, i) * DetectRange)); }
- if (Physics.Linecast(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.left, i) * DetectRange))) { return true; }
- }
- }
- if (type == rangeType.Combat)
- {
- for (float i = 0; i < field_of_vison; i += presision)
- {
- Debug.DrawLine(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.right, i) * CombatRange));
- if (Physics.Linecast(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.right, i) * CombatRange))) { return true; }
- }
- for (float i = 0; i < field_of_vison; i += presision)
- {
- Debug.DrawLine(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.left, i) * CombatRange));
- if (Physics.Linecast(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.left, i) * CombatRange))) { return true; }
- }
- }
- if (type == rangeType.TooClose)
- {
- for (float i = 0; i < field_of_vison; i += presision)
- {
- Debug.DrawLine(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.right, i) * TooCloseRange));
- if (Physics.Linecast(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.right, i) * TooCloseRange))) { return true; }
- }
- for (float i = 0; i < field_of_vison; i += presision)
- {
- Debug.DrawLine(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.left, i) * TooCloseRange));
- if (Physics.Linecast(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.left, i) * TooCloseRange))) { return true; }
- }
- }
- return false;
- }
- void OnDrawGizmosSelected()
- {
- Gizmos.color = new Color(0, 0, 0, 0.5f);
- Gizmos.DrawLine(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward,Vector3.right,field_of_vison) * DetectRange));
- Gizmos.DrawLine(transform.position, transform.TransformPoint(Vector3.Slerp(Vector3.forward, Vector3.left, field_of_vison) * DetectRange));
- 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));
- Gizmos.color = new Color(0, 125f, 0,0.5f);
- Gizmos.DrawWireSphere(transform.position, DetectRange);
- Gizmos.color = new Color(125f, 0, 0, 0.5f);
- Gizmos.DrawWireSphere(transform.position, CombatRange);
- Gizmos.color = new Color(0, 0, 125f, 0.5f);
- Gizmos.DrawWireSphere(transform.position, TooCloseRange);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement