68 lines
1.9 KiB
C#
68 lines
1.9 KiB
C#
|
|
using System.Collections;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using UnityEditor.UIElements;
|
|||
|
|
using UnityEngine;
|
|||
|
|
|
|||
|
|
public class Fire : MonoBehaviour
|
|||
|
|
{
|
|||
|
|
[Header("0为硬火,1为软火")]
|
|||
|
|
[Range(0, 1)] public float Value;
|
|||
|
|
|
|||
|
|
public ParticleSystem fireBig;
|
|||
|
|
public ParticleSystem fireSmall;
|
|||
|
|
|
|||
|
|
public Vector2 LifeTime;
|
|||
|
|
|
|||
|
|
public Vector2 Size;
|
|||
|
|
|
|||
|
|
public Vector2 Gravity;
|
|||
|
|
|
|||
|
|
public Vector2 Count;
|
|||
|
|
|
|||
|
|
public Color mainColor;
|
|||
|
|
|
|||
|
|
private ParticleSystem.MainModule big;
|
|||
|
|
private ParticleSystem.MainModule small;
|
|||
|
|
|
|||
|
|
ParticleSystem.SizeOverLifetimeModule bigSize;
|
|||
|
|
ParticleSystem.SizeOverLifetimeModule smallSize;
|
|||
|
|
|
|||
|
|
private ParticleSystem.EmissionModule smallemission;
|
|||
|
|
|
|||
|
|
private ParticleSystem.MinMaxCurve curr;
|
|||
|
|
|
|||
|
|
// Start is called before the first frame update
|
|||
|
|
void Start()
|
|||
|
|
{
|
|||
|
|
big = fireBig.main;
|
|||
|
|
small = fireSmall.main;
|
|||
|
|
|
|||
|
|
bigSize = fireBig.sizeOverLifetime;
|
|||
|
|
smallSize = fireSmall.sizeOverLifetime;
|
|||
|
|
|
|||
|
|
smallemission=fireSmall.emission;
|
|||
|
|
|
|||
|
|
curr = new ParticleSystem.MinMaxCurve();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Update is called once per frame
|
|||
|
|
void Update()
|
|||
|
|
{
|
|||
|
|
big.startColor = Color.Lerp(mainColor, Color.white, Value);
|
|||
|
|
big.startLifetime = Mathf.Lerp(LifeTime.x,LifeTime.y,Value);
|
|||
|
|
small.startLifetime = Mathf.Lerp(LifeTime.x,LifeTime.y,Value);
|
|||
|
|
|
|||
|
|
big.startSize = Mathf.Lerp(Size.x,Size.y,Value);
|
|||
|
|
small.startSize = Mathf.Lerp(Size.x,Size.y,Value);
|
|||
|
|
|
|||
|
|
big.gravityModifier = Mathf.Lerp(Gravity.x,Gravity.y,Value);
|
|||
|
|
small.gravityModifier = Mathf.Lerp(Gravity.x,Gravity.y,Value);
|
|||
|
|
curr = new ParticleSystem.MinMaxCurve(1,
|
|||
|
|
AnimationCurve.EaseInOut(0, Mathf.Lerp(1, 0.3f, Value), 1, Mathf.Lerp(0.3f, 1, Value)));
|
|||
|
|
bigSize.size = curr;
|
|||
|
|
smallSize.size = curr;
|
|||
|
|
smallemission.rateOverTime=Mathf.Lerp(Count.x,Count.y,Value);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|