using UnityEngine; using System.Collections; public class CanvasController : MonoBehaviour { private CanvasGroup canvasGroup; // CanvasGroup do kontrolowania alfa Canvasu public float displayDistance = 5f; // Odległość, od której Canvas zaczyna się pojawiać public float fadeSpeed = 2f; // Prędkość wyświetlania i zanikania Canvasu private Transform player; // Referencja do transformacji gracza private bool isPlayerClose = false; void Start() { // Znajdź obiekt gracza z tagiem "Player" GameObject playerObject = GameObject.FindGameObjectWithTag("Player"); if (playerObject != null) { player = playerObject.transform; } else { Debug.LogError("Player object not found! Make sure the player has the 'Player' tag."); } // Znajdź CanvasGroup na tym samym obiekcie canvasGroup = GetComponent(); if (canvasGroup == null) { Debug.LogError("CanvasGroup component not found! Make sure the Canvas has a CanvasGroup component."); } } void Update() { if (player == null || canvasGroup == null) return; float distance = Vector3.Distance(transform.position, player.position); // Sprawdzanie, czy gracz jest wystarczająco blisko if (distance <= displayDistance && !isPlayerClose) { isPlayerClose = true; StopAllCoroutines(); StartCoroutine(FadeCanvas(1f)); // Pokaż Canvas } else if (distance > displayDistance && isPlayerClose) { isPlayerClose = false; StopAllCoroutines(); StartCoroutine(FadeCanvas(0f)); // Ukryj Canvas } } private IEnumerator FadeCanvas(float targetAlpha) { while (!Mathf.Approximately(canvasGroup.alpha, targetAlpha)) { canvasGroup.alpha = Mathf.MoveTowards(canvasGroup.alpha, targetAlpha, fadeSpeed * Time.deltaTime); yield return null; } } }