47 lines
1.9 KiB
C#
47 lines
1.9 KiB
C#
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<Renderer>();
|
||
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);
|
||
}
|
||
}
|