/
against
/
AIEnemyUnity
Обзор
Документация
Войти
/
against
/
AIEnemyUnity
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
FieldOfView.cs
60 строк
2 KB
Северьянов Святослав
Добавлен скрипт обнаружения игрока
27 апр 2025, 11:55
27 апр 2025, 11:55
1bb4bf8
Код
Авторство
О чём код?
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class FieldOfView : MonoBehaviour { public float radius; [Range(0,360)] public float angle; public GameObject playerRef; public LayerMask targetMask; public LayerMask obstructionMask; public bool canSeePlayer; private void Start() { playerRef = GameObject.FindGameObjectWithTag("Player"); StartCoroutine(FOVRoutine()); } private IEnumerator FOVRoutine() { WaitForSeconds wait = new WaitForSeconds(0.2f); while (true) { yield return wait; FieldOfViewCheck(); } } private void FieldOfViewCheck() { Collider[] rangeChecks = Physics.OverlapSphere(transform.position, radius, targetMask); if (rangeChecks.Length != 0) { Transform target = rangeChecks[0].transform; Vector3 directionToTarget = (target.position - transform.position).normalized; if (Vector3.Angle(transform.forward, directionToTarget) < angle / 2) { float distanceToTarget = Vector3.Distance(transform.position, target.position); if (!Physics.Raycast(transform.position, directionToTarget, distanceToTarget, obstructionMask)) canSeePlayer = true; else canSeePlayer = false; } else canSeePlayer = false; } else if (canSeePlayer) canSeePlayer = false; } }