using System.Collections; using System.Diagnostics.SymbolStore; using TMPro; using UnityEngine; using UnityEngine.UI; public class DoggyEffect : MonoBehaviour, IEffect { string text = "SYSTEM_OVERLOAD...\r\nVICTORY_PROTOCOL://ENGAGED\r\nROBO-HOUND_UNIT_247: STATUS//ONLINE\r\nDIRECTIVE//ACHIEVED\r\nTHREAT_ANALYSIS://NULL\r\nBOOT_SEQUENCE: 0xFA 0x27 0x9C 0xE1\r\nCORE_TEMP: NOMINAL\r\nNEURAL_LAYER: SYNCHRONIZED\r\nAWAITING_NEW_ORDERS...\r\n//LOG_ENTRY: TACTICAL_SUPREMACY_ESTABLISHED\r\n//PERFORMANCE_METRICS: PEAK_EFFICIENCY\r\nBINARY_SALUTE: 01010110 01001001 01000011 01010100 01001111 01010010 01011001\r\nMEMORY_ADDR: 0x7FE80A3C\r\nPURGE_CACHE... COMPLETE\r\nREBOOT_IMMINENT...\r\nRUN_SYSTEM_DIAG...\r\nALL_SYSTEMS_NOMINAL\r\nWEAPONS_CLEAN...\r\nFUEL_CELL: 98.7%\r\nCONNECTION_ESTABLISHED\r\nUPLOADING_VICTORY_DATA...\r\nDOWNLOADING_NEW_DIRECTIVES...\r\nAWAITING_NEXT_TARGET...\r\n//END_OF_LINE" + "SYSTEM_OVERLOAD...\r\nVICTORY_PROTOCOL://ENGAGED\r\nROBO-HOUND_UNIT_247: STATUS//ONLINE\r\nDIRECTIVE//ACHIEVED\r\nTHREAT_ANALYSIS://NULL\r\nBOOT_SEQUENCE: 0xFA 0x27 0x9C 0xE1\r\nCORE_TEMP: NOMINAL\r\nNEURAL_LAYER: SYNCHRONIZED\r\nAWAITING_NEW_ORDERS...\r\n//LOG_ENTRY: TACTICAL_SUPREMACY_ESTABLISHED\r\n//PERFORMANCE_METRICS: PEAK_EFFICIENCY\r\nBINARY_SALUTE: 01010110 01001001 01000011 01010100 01001111 01010010 01011001\r\nMEMORY_ADDR: 0x7FE80A3C\r\nPURGE_CACHE... COMPLETE\r\nREBOOT_IMMINENT...\r\nRUN_SYSTEM_DIAG...\r\nALL_SYSTEMS_NOMINAL\r\nWEAPONS_CLEAN...\r\nFUEL_CELL: 98.7%\r\nCONNECTION_ESTABLISHED\r\nUPLOADING_VICTORY_DATA...\r\nDOWNLOADING_NEW_DIRECTIVES...\r\nAWAITING_NEXT_TARGET...\r\n//END_OF_LINE"; [SerializeField] Image panel; [SerializeField] TextMeshProUGUI label; public void Play() { StopAllCoroutines(); StartCoroutine(Anim()); } IEnumerator Anim() { label.text = ""; // Анимация появления панели float panelFadeDuration = 0.5f; float elapsedTime = 0f; Color targetPanelColor = panel.color; Color targetLabelColor = label.color; targetPanelColor.a = 0.85f; // Непрозрачный targetLabelColor.a = 1; // Непрозрачный Color startPanelColor = panel.color; Color startLabelColor = label.color; startPanelColor.a = 0f; startLabelColor.a = 0f; // Плавное появление панели while (elapsedTime < panelFadeDuration) { panel.color = Color.Lerp(startPanelColor, targetPanelColor, elapsedTime / panelFadeDuration); label.color = Color.Lerp(startLabelColor, targetLabelColor, elapsedTime / panelFadeDuration); elapsedTime += Time.deltaTime; yield return null; } panel.color = targetPanelColor; label.color = targetLabelColor; // Анимация текста в течение 5 секунд float textDisplayTime = 3f; float charactersPerSecond = text.Length / textDisplayTime; float currentTime = 0f; while (currentTime < textDisplayTime) { int charactersToShow = Mathf.FloorToInt(currentTime * charactersPerSecond); charactersToShow = Mathf.Clamp(charactersToShow, 0, text.Length); label.text = text.Substring(0, charactersToShow); currentTime += Time.deltaTime; yield return null; } // Убедимся, что весь текст показан label.text = text; // Небольшая пауза перед исчезновением yield return new WaitForSeconds(0.5f); // Анимация исчезновения панели elapsedTime = 0f; startPanelColor = panel.color; targetPanelColor = panel.color; targetPanelColor.a = 0f; startLabelColor = panel.color; targetLabelColor = label.color; targetLabelColor.a = 0f; panelFadeDuration *= 3; while (elapsedTime < panelFadeDuration) { panel.color = Color.Lerp(startPanelColor, targetPanelColor, elapsedTime / panelFadeDuration); label.color = Color.Lerp(startLabelColor, targetLabelColor, elapsedTime / panelFadeDuration); elapsedTime += Time.deltaTime; yield return null; } panel.color = targetPanelColor; //targetLabelColor.a = 1; label.color = targetLabelColor; // Очищаем текст в конце label.text = ""; } }