using UnityEngine; namespace Skill_V2 { [CreateAssetMenu(fileName = "SpawnBullet", menuName = "ScriptableObject/Skill/State/SpawnBullet")] public class SpawnBullet : SkillState { [SerializeField] Bullet bulletPrefab; [SerializeField, TagSelector] string[] filterTags; Bullet bulletInstance; SingleTargetFinder targetFinder; public override void Enter(StateHandler excutor) { if(targetFinder is null) targetFinder = new SingleTargetFinder(filterTags); bulletInstance = Instantiate(bulletPrefab, Owner.CenterPivot, Quaternion.identity); bulletInstance.AddTagFilter(filterTags); bulletInstance.OnEnterCollider += HandleCollide; if (targetFinder.TryFindNearest(Owner.CenterPivot, out var target)) { bulletInstance.Fire(target.transform); } else { bulletInstance.HeadDirection = Owner.LookDirection; bulletInstance.Fire(); } IsDone = true; } public override void Stop() { if (bulletInstance != null) { Destroy(bulletInstance.gameObject); } bulletInstance = null; } private void HandleCollide(Collider2D other) { if (other.gameObject.TryGetComponent(out CreatureBase target)) { //TODO : Get damage from skill, this is temporary BattleMgr.Instance.SendDamage(target, 4000, 0, 0); } } } }