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