MayHeCome/Assets/FireFlameEffect.cs
2024-12-18 17:55:34 +08:00

39 lines
1.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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