49 lines
1.4 KiB
C#
49 lines
1.4 KiB
C#
|
using Thousandto.SkillEditor.Support;
|
|||
|
using System.Collections.Generic;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace Thousandto.SkillEditor.DIY
|
|||
|
{
|
|||
|
public class SkillEditorFlyVfx
|
|||
|
{
|
|||
|
public EditorVFXScript Vfx = null;
|
|||
|
public Vector3 OriPos = Vector3.zero;
|
|||
|
public Vector3 TargetPos = Vector3.zero;
|
|||
|
public AnimationCurve TimeCurve = null;
|
|||
|
public AnimationCurve XFlyCurve = null;
|
|||
|
public Vector3 XCurveDir = Vector3.left;
|
|||
|
public AnimationCurve YFlyCurve = null;
|
|||
|
public float Timer = 0f;
|
|||
|
public float MaxTime = 0f;
|
|||
|
|
|||
|
public bool IsEnd
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
return Vfx == null;
|
|||
|
}
|
|||
|
}
|
|||
|
public void Update()
|
|||
|
{
|
|||
|
if (Vfx != null)
|
|||
|
{
|
|||
|
Timer += Time.deltaTime;
|
|||
|
if (Timer <= MaxTime)
|
|||
|
{
|
|||
|
var lerpValue = TimeCurve.Evaluate(Timer / MaxTime);
|
|||
|
var pos = Vector3.Lerp(OriPos, TargetPos, lerpValue);
|
|||
|
pos += XCurveDir * XFlyCurve.Evaluate(lerpValue);
|
|||
|
pos += Vector3.up * YFlyCurve.Evaluate(lerpValue);
|
|||
|
Vfx.transform.position = pos;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
Vfx.transform.position = TargetPos;
|
|||
|
Vfx.Stop();
|
|||
|
Vfx = null;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|