using System.Collections; using UnityEngine; public class DimensionalFractureFader : MonoBehaviour { public Transform objectToReveal; // Το αντικείμενο που έχει το υλικό public float maxDistance = 5f; // Μέγιστη απόσταση όπου το εφέ είναι ενεργό public float fadeSpeed = 2f; // Ταχύτητα μετάβασης του Fade private Material objectMaterial; // Υλικό του αντικειμένου void Start() { if (objectToReveal != null) { // Παίρνουμε το Material από το αντικείμενο που θα αποκαλυφθεί Renderer renderer = objectToReveal.GetComponent(); if (renderer != null) { objectMaterial = new Material(renderer.material); renderer.material = objectMaterial; } } } void Update() { if (objectToReveal == null || objectMaterial == null) return; // Υπολογισμός απόστασης παίκτη-αντικειμένου float distance = Vector3.Distance(PlayerManager.GetInstance().playerGameObj.transform.position, objectToReveal.position); // Κανονικοποίηση της απόστασης (0 = κοντά, 1 = μακριά) float distanceFactor = Mathf.Clamp01(distance / maxDistance); // Υπολογισμός του νέου fade value από 0 (μακριά) έως 10 (κοντά) float newFade = Mathf.Lerp(15f, 0f, distanceFactor); // Σταδιακή αλλαγή της τιμής fade float currentFade = objectMaterial.GetFloat("_CausticsStrength"); float updatedFade = Mathf.Lerp(currentFade, newFade, Time.deltaTime * fadeSpeed); objectMaterial.SetFloat("_CausticsStrength", updatedFade); } }