using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DynamicEffect : MonoBehaviour
{
private SpriteRenderer spriteRder;
private float radian = 0; // 弧度
private float perRadian = 0.05f; // 每次变化的弧度
private float radius = 0.2f; // 半径
private Vector3 oldPos, oldScale,oldRot;
private float oldColorAlpha;
public float _速度 = 5;
public bool _浮动 = false;
public bool _旋转 = false;
public float _浮动和旋转幅度 = 1;
public bool _伸缩 = false;
public bool _果冻 = false;
public float _伸缩和果冻横向变化幅度 = 1;
public float _伸缩和果冻纵向变化幅度 = 1;
public bool _渐隐渐显1 = false;
public bool _渐隐渐显2 = false;
public float _最隐程度 = 0;
public bool _摇摆 = false;
public float _摇摆角度 = 30;
void Start()
{
//初始化
spriteRder = this.gameObject.GetComponent<SpriteRenderer>();
oldPos = transform.localPosition;
oldScale = transform.localScale;
oldRot = transform.localEulerAngles;
oldColorAlpha = spriteRder.color.a;
//渐隐程度参数范围为0-1,超出范围调整
_最隐程度 = Mathf.Min(Mathf.Max(0, _最隐程度), 1);
/*//功能拓展1
foreach (KeyValuePair<string, Vector3> nowpos in nowPos)
{
nowPos[nowpos.Key] = transform.localPosition;// 将最初的位置保存到oldPos
}
*/
}
void Update()
{
perRadian = _速度 / 100;
radian += perRadian; // 弧度每次增加
float dx = Mathf.Sin(radian) * radius;
float dy = Mathf.Cos(radian) * radius;
if (_浮动)
{
transform.localPosition = oldPos + new Vector3(0, _浮动和旋转幅度 * dy, 0);
}
if (_旋转)
{
transform.localPosition = oldPos + new Vector3(_浮动和旋转幅度 * dx, _浮动和旋转幅度 * dy, 0);
}
if (_伸缩)
{
transform.localScale = oldScale + new Vector3(_伸缩和果冻横向变化幅度 * dx, _伸缩和果冻纵向变化幅度 * dx, 0);
}
if (_果冻)
{
transform.localScale = oldScale + new Vector3(_伸缩和果冻横向变化幅度 * dx, _伸缩和果冻纵向变化幅度 * dy, 0);
}
if (_渐隐渐显1)
{
spriteRder.color = new Color(spriteRder.color.r, spriteRder.color.g, spriteRder.color.b, Mathf.Max((Mathf.Abs(dy)),_最隐程度));
}
if (_渐隐渐显2)
{
spriteRder.color = new Color(spriteRder.color.r, spriteRder.color.g, spriteRder.color.b, Mathf.Max(Mathf.Sqrt(Mathf.Abs(dy)),_最隐程度));
}
if (_摇摆)
{
transform.localEulerAngles = oldRot + new Vector3(0, 0, _摇摆角度*dx);
}
}
}