MayHeCome/Assets/FireFlameEffect.cs

39 lines
1.6 KiB
C#
Raw Normal View History

2024-12-18 09:55:34 +00:00
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);
}
}