Files
PIM_Laba5/Assets/Scripts/CoverChecker.cs
T
2026-05-26 01:16:57 +03:00

37 lines
1.3 KiB
C#

using UnityEngine;
[DisallowMultipleComponent]
public class CoverChecker : MonoBehaviour
{
[Tooltip("Если объект находится между врагом и игроком, он должен блокировать линию видимости.")]
public bool blocksVision = true;
[Tooltip("Небольшая метка для будущих расширений механики укрытий.")]
public float concealmentStrength = 1f;
public static bool IsVisionBlocked(Vector3 origin, Vector3 target, LayerMask obstacleMask)
{
Vector3 direction = target - origin;
float distance = direction.magnitude;
if (distance <= Mathf.Epsilon)
{
return false;
}
return Physics.Raycast(origin, direction.normalized, distance, obstacleMask, QueryTriggerInteraction.Ignore);
}
private void OnDrawGizmosSelected()
{
Gizmos.color = blocksVision ? new Color(0.2f, 0.7f, 1f, 0.5f) : new Color(1f, 0.4f, 0.2f, 0.3f);
Collider objectCollider = GetComponent<Collider>();
if (objectCollider != null)
{
Gizmos.matrix = transform.localToWorldMatrix;
Gizmos.DrawWireCube(objectCollider.bounds.center - transform.position, objectCollider.bounds.size);
}
}
}