39 lines
1.6 KiB
C#
39 lines
1.6 KiB
C#
using UnityEngine;
|
||
|
||
public class FireFlameEffect : MonoBehaviour
|
||
{
|
||
public float scaleSpeed = 2f; // 缩放速度
|
||
public float scaleAmount = 0.1f; // 缩放幅度
|
||
public float rotationSpeed = 1f; // 旋转速度
|
||
public float rotationAmount = 5f; // 旋转角度幅度
|
||
public float flickerSpeed = 5f; // 火焰闪烁速度
|
||
public float flickerAmount = 0.1f; // 火焰闪烁透明度幅度
|
||
|
||
private Vector3 originalScale;
|
||
private SpriteRenderer spriteRenderer;
|
||
private float baseAlpha; // 火焰的基础透明度
|
||
|
||
void Start()
|
||
{
|
||
originalScale = transform.localScale; // 记录原始缩放值
|
||
spriteRenderer = GetComponent<SpriteRenderer>(); // 获取SpriteRenderer组件
|
||
baseAlpha = spriteRenderer.color.a; // 获取火焰的基础透明度
|
||
}
|
||
|
||
void Update()
|
||
{
|
||
// 缩放效果,使用Perlin噪声增加自然的变化
|
||
float scale = Mathf.PerlinNoise(Time.time * scaleSpeed, 0f) * scaleAmount + 1f;
|
||
transform.localScale = new Vector3(originalScale.x * scale, originalScale.y * scale, originalScale.z);
|
||
|
||
// 旋转效果,模拟火焰轻微摇晃
|
||
float rotation = Mathf.Sin(Time.time * rotationSpeed) * rotationAmount;
|
||
transform.rotation = Quaternion.Euler(0, 0, rotation);
|
||
|
||
// 透明度闪烁效果
|
||
Color currentColor = spriteRenderer.color;
|
||
float flicker = Mathf.PerlinNoise(Time.time * flickerSpeed, 1f) * flickerAmount;
|
||
spriteRenderer.color = new Color(currentColor.r, currentColor.g, currentColor.b, baseAlpha - flicker);
|
||
}
|
||
}
|