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组件 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); } }