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