NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Effect/Logic/BulletBesselFlyLogic.cs

43 lines
1.1 KiB
C#

using Gameplay.Utils;
using UnityEngine;
namespace Gameplay.Effect
{
public class BulletBesselFlyLogic : BaseEffectLogic
{
private Vector3 _startPos;
private Vector3 _endPos;
private Vector3 _controlPos;
private float _flyTime;
public void Ctor(Vector3 startPos,
Vector3 endPos,
Vector3 controlPos,
float flyTime)
{
_startPos = startPos;
_endPos = endPos;
_controlPos = controlPos;
_flyTime = flyTime;
}
protected override void _OnLogicUpdate(float dt)
{
base._OnLogicUpdate(dt);
if (passTime >= _flyTime)
{
effect.Destroy();
return;
}
if (effect == null || effect.transform == null) return;
var progress = Mathf.Clamp01(passTime / _flyTime);
var pos = Vector3Ex.Bezier(_startPos, _controlPos, _endPos, progress);
effect.transform.position = pos;
}
}
}