43 lines
1.1 KiB
C#
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;
|
|
|
|
}
|
|
}
|
|
}
|