using System.Collections; using System.Collections.Generic; using UnityEngine; public class WallTransparencyController : MonoBehaviour { public Transform player; // Трансформ игрока или цели public float transparency = 0.5f; // Прозрачность стен private Dictionary originalColors = new Dictionary(); private List transparentWalls = new List(); void Update() { // Бросаем луч от камеры к игроку Vector3 direction = player.position - Camera.main.transform.position; RaycastHit[] hits = Physics.RaycastAll(Camera.main.transform.position, direction, direction.magnitude); // Сброс прозрачности у всех стен ResetTransparency(); // Проходим по всем объектам, пересеченным лучом foreach (RaycastHit hit in hits) { Renderer renderer = hit.collider.GetComponent(); if (renderer != null && renderer.gameObject.tag == "Wall") { SetTransparency(renderer); } } } void SetTransparency(Renderer renderer) { if (!originalColors.ContainsKey(renderer)) { originalColors[renderer] = renderer.material.color; } Color color = renderer.material.color; color.a = transparency; renderer.material.color = color; if (!transparentWalls.Contains(renderer)) { transparentWalls.Add(renderer); } } void ResetTransparency() { foreach (Renderer renderer in transparentWalls) { if (renderer != null && originalColors.ContainsKey(renderer)) { renderer.material.color = originalColors[renderer]; } } transparentWalls.Clear(); } }