MayHeCome/Assets/ChengHui/Script/WoodSculpture.cs

78 lines
2.4 KiB
C#
Raw Normal View History

2024-12-18 09:55:34 +00:00
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WoodSculpture : MonoBehaviour
{
public WoodSculpture_Buildings woodSculpture_Buildings;
public Type type = Type.Simple;
public enum Type { Simple, Super, Special};
public int Value;
public int avaIndex;
private ParticleSystem pc ;
private void Start()
{
pc = transform.GetChild(0).GetComponent<ParticleSystem>();
}
private void OnMouseDown()
{
if (type == Type.Special)
{
FindObjectOfType<TopBarUI>().EmitFaith(Value*woodSculpture_Buildings.WoodSculpture_to_FaithBuff, transform.position);
// GameProcedureManager.Instance.FaithCount += Value*woodSculpture_Buildings.WoodSculpture_to_FaithBuff;
}
else
{
woodSculpture_Buildings.RemoveScuplture(this);
StartCoroutine(ReleaseFaith(Value * woodSculpture_Buildings.WoodSculpture_to_FaithBuff));
StartCoroutine(FadeOut());
}
}
private IEnumerator ReleaseFaith(int count)
{
var emission = pc.emission;
emission.rateOverTime = count; // 在1秒内均匀释放n个粒子
// 启动粒子系统
// pc.Play();
// yield return new WaitForSeconds(0.5f);
// pc.Stop();
// 第2阶段0.5秒内均匀增加x的值
float xIncreaseInterval = 0.5f / 10;
int incrementAmount = count / 10;
for (int i = 0; i < 10; i++)
{
FindObjectOfType<TopBarUI>().EmitFaith(incrementAmount, transform.position);
// GameProcedureManager.Instance.FaithCount += incrementAmount;
yield return new WaitForSeconds(xIncreaseInterval);
}
Destroy(gameObject);
}
private IEnumerator FadeOut()
{
SpriteRenderer sr = GetComponent<SpriteRenderer>();
float elapsedTime = 0f;
Color originalColor = sr.color;
// 逐渐淡化
while (elapsedTime < 0.5f)
{
elapsedTime += Time.deltaTime;
float alpha = Mathf.Lerp(1f, 0f, elapsedTime / 0.5f);
sr.color = new Color(originalColor.r, originalColor.g, originalColor.b, alpha);
yield return null;
}
// 等待0.5秒
yield return new WaitForSeconds(1f);
// 销毁对象
Destroy(gameObject);
}
}