97 lines
4.5 KiB
C#
97 lines
4.5 KiB
C#
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 = "";
|
|
}
|
|
} |