using System; using UnityEngine; public class AttatchBullet : BulletBase { [SerializeField] GameObject bulletRoot; [SerializeField] GameObject attatchingEffect; public Transform Target { get; private set; } public bool IsAttaching { get; private set; } public Action OnAttatching; protected override bool UpdateBullet(float deltaTime) { if (Target is null) return false; Vector2 toTarget = Target.position - transform.position; if(!IsAttaching) { transform.position += (Vector3)toTarget.normalized * Speed * deltaTime; HeadDirection = toTarget; if(toTarget.sqrMagnitude <= 1f) { HeadDirection = Vector2.right; IsAttaching = true; bulletRoot.gameObject.SetActive(false); attatchingEffect?.gameObject.SetActive(true); } } else { transform.position = Target.position; OnAttatching?.Invoke(); } return true; } public override void Fire(Transform target = null, bool resetLifeTime = true) { if (target is null) return; base.Fire(target, resetLifeTime); Target = target; IsAttaching = false; bulletRoot?.gameObject.SetActive(true); attatchingEffect?.gameObject.SetActive(false); } }