Danro/Assets/Scripts/Entities/Props/ShowObjectWithVFX.cs
Danil Iarosh a0211d50fc
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
Replace highlighted platform with lever-activated sign
- Заменена уменьшенная платформа TriggeringPlatform_2 на сцене 1-1 на табличку со стрелкой влево (Signs_Arrow_Left).
- Создан C# скрипт ShowObjectWithVFX.cs для активации скрытых объектов со спецэффектами частиц (sparks).
- Добавлен вспомогательный редакторский скрипт ReplacePlatformWithSign.cs для автоматической перестройки сцены.
- Рычаг на уровне 1-1 привязан к активации таблички: табличка изначально скрыта, при переключении рычага появляется с эффектом искр.
2026-08-05 16:42:23 +03:00

68 lines
2.0 KiB
C#

using UnityEngine;
using UnityEngine.VFX;
namespace RR.Game2D.Entities
{
public class ShowObjectWithVFX : MonoBehaviour
{
[Header("Target Settings")]
[SerializeField] private GameObject targetObject;
[SerializeField] private bool hideOnStart = true;
[Header("VFX Settings")]
[SerializeField] private VisualEffect visualEffect;
[SerializeField] private ParticleSystem particleSystemComponent;
[SerializeField] private GameObject vfxPrefab;
[SerializeField] private float vfxDestroyDelay = 3f;
private void Start()
{
if (hideOnStart && targetObject != null)
{
targetObject.SetActive(false);
}
if (visualEffect != null)
{
visualEffect.gameObject.SetActive(false);
}
if (particleSystemComponent != null)
{
var emission = particleSystemComponent.emission;
emission.enabled = false;
particleSystemComponent.gameObject.SetActive(false);
}
}
[ContextMenu("Activate")]
public void Activate()
{
if (targetObject != null)
{
targetObject.SetActive(true);
}
if (visualEffect != null)
{
visualEffect.gameObject.SetActive(true);
visualEffect.Play();
}
if (particleSystemComponent != null)
{
particleSystemComponent.gameObject.SetActive(true);
var emission = particleSystemComponent.emission;
emission.enabled = true;
particleSystemComponent.Play();
}
if (vfxPrefab != null)
{
GameObject vfxInstance = Instantiate(vfxPrefab, transform.position, transform.rotation);
Destroy(vfxInstance, vfxDestroyDelay);
}
}
}
}