Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
- Интегрирована система кастомных визуальных эффектов (VFX): - Добавлена новая утилита MvpVFXUtility и настройки MvpVFXSpawnSettings для спавна эффектов. - Реализован пул эффектов VFXPool с поддержкой отслеживания версий спавна, сброса оверрайдов и анимации масштаба по времени. - Добавлены эффекты прыжка и приземления в PlayerAnimationEvents. - Интегрирован эффект DeathVignetteController для плавного затемнения экрана при смерти игрока. - Добавлены частицы stompImpactVFX при уничтожении врагов прыжком сверху (EnemyController). - Реализован эффект конфетти finishVFX при успешном завершении уровня (LevelFinish). - Интегрированы эффекты искр при сборе монеток, кристаллов и других собираемых предметов (Collectible, EnvironmentalCollectibleBase). - Улучшен и визуально доработан пользовательский интерфейс (UI): - Добавлен скрипт QRCodeTierHighlight для цветовой подсветки QR-кодов в зависимости от тира приза. - Реализована пульсация блока приза в баннере победы (WinBannerController). - Обновлено обозначение валюты в BalanceDisplay с "₽" на "руб.". - Добавлены новые префабы, сцены, ассеты тайлсетов и шейдеров для настройки визуального стиля. - Обновлён протокол и инициализация подсветки COM-платы: - Изменен префикс команд подсветки с 85/86 на 8550, а диапазон эффектов обновлен с 40...52 на 10...22 (LightController, LightMode, LightCycleDurations). - Исправлена хардкод-команда сброса подсветки при инициализации в ComDeviceClient с устаревшей 8600 на новую 8550 для предотвращения рассинхронизации буфера обмена платы.
79 lines
3.0 KiB
C#
79 lines
3.0 KiB
C#
using System;
|
|
using UnityEngine;
|
|
|
|
namespace RR.Game2D.FX
|
|
{
|
|
[Serializable]
|
|
public sealed class MvpVFXSpawnSettings
|
|
{
|
|
[Tooltip("Сколько копий burst-эффекта создать вокруг точки спавна. Используется как простой множитель плотности частиц.")]
|
|
[Min(1)]
|
|
public int instanceCount = 1;
|
|
|
|
[Tooltip("Пробовать переопределить Count внутри VFX Graph burst spawn.")]
|
|
public bool overrideParticleCount;
|
|
|
|
[Min(0f)]
|
|
public float particleCount = 50f;
|
|
|
|
[Tooltip("Горизонтальный радиус случайного разброса копий эффекта.")]
|
|
[Min(0f)]
|
|
public float spreadRadiusX;
|
|
|
|
[Tooltip("Вертикальный радиус случайного разброса копий эффекта.")]
|
|
[Min(0f)]
|
|
public float spreadRadiusY;
|
|
|
|
[Tooltip("Масштаб объекта VFX. Для локальных VFX Graph shape-нод также влияет на область распространения частиц.")]
|
|
[Min(0.01f)]
|
|
public float scale = 1f;
|
|
|
|
[Tooltip("Масштабировать весь spawned VFX по кривой в течение времени жизни эффекта.")]
|
|
public bool overrideSizeOverLife;
|
|
|
|
public AnimationCurve sizeOverLife = CreateDefaultSizeOverLife();
|
|
|
|
[Tooltip("Пробовать переопределить цвет эффекта через VFX/renderer параметры.")]
|
|
public bool overrideColor;
|
|
|
|
[ColorUsage(true, true)]
|
|
public Color color = Color.white;
|
|
|
|
[Tooltip("Пробовать переопределить градиент блока Multiply Color Over Life.")]
|
|
public bool overrideColorOverLife;
|
|
|
|
public Gradient colorOverLife = CreateDefaultColorOverLife();
|
|
|
|
[Tooltip("Пробовать переопределить текстуру частиц через VFX/renderer параметры.")]
|
|
public bool overrideTexture;
|
|
|
|
public Texture2D texture;
|
|
|
|
private static Gradient CreateDefaultColorOverLife()
|
|
{
|
|
Gradient gradient = new Gradient();
|
|
gradient.SetKeys(
|
|
new[]
|
|
{
|
|
new GradientColorKey(new Color(1f, 0.85f, 0.35f), 0f),
|
|
new GradientColorKey(Color.white, 1f)
|
|
},
|
|
new[]
|
|
{
|
|
new GradientAlphaKey(1f, 0f),
|
|
new GradientAlphaKey(1f, 0.8f),
|
|
new GradientAlphaKey(0f, 1f)
|
|
});
|
|
return gradient;
|
|
}
|
|
|
|
private static AnimationCurve CreateDefaultSizeOverLife()
|
|
{
|
|
return new AnimationCurve(
|
|
new Keyframe(0f, 0f, 6.6156807f, 6.6156807f),
|
|
new Keyframe(0.1f, 1.5f, 0.06686528f, 0.06686528f),
|
|
new Keyframe(1f, 0f, -1.6666667f, -1.6666667f));
|
|
}
|
|
}
|
|
}
|