using System.Collections; using BlueWaterProject; using Sirenix.OdinInspector; using UnityEngine; // ReSharper disable once CheckNamespace public class SlimeBossMapController : BossMapController { // 추가 설정 [Title("추가 설정")] [SerializeField] private SlimeStateSo slimeStateSo; [SerializeField] private float splitPower = 500f; [SerializeField] private Vector3 leftSplitDirection = new(-0.5f, 1f, 0); [SerializeField] private Vector3 rightSplitDirection = new(0.5f, 1f, 0); public override void InitBossMap() { base.InitBossMap(); InstantiateSlime(bossSpawnTransform.position, 1, true); } private TitanSlime InstantiateSlime(Vector3 instantiatePosition, int level, bool hasRabbit) { var instantiateBoss = Instantiate(bossPrefab, instantiatePosition, Quaternion.identity, bossInstantiateTransform).GetComponent(); var slimeState = slimeStateSo.SlimeStateList.Find((list) => list.Level == level); instantiateBoss.Init(slimeState, hasRabbit); CombatUiManager.Inst.FieldBossHpSlider.SetHpSlider(instantiateBoss.MaxHp, instantiateBoss.BossName); bossInstanceList.Add(instantiateBoss.gameObject); return instantiateBoss; } public void SpawnSplitSlimes(Vector3 deathPosition, int nextLevel, bool hasRabbit) { var instantiateBossLeft = InstantiateSlime(deathPosition, nextLevel, hasRabbit); var instantiateBossRight = InstantiateSlime(deathPosition, nextLevel, false); instantiateBossLeft.AddForce(leftSplitDirection, splitPower, ForceMode.Impulse); instantiateBossRight.AddForce(rightSplitDirection, splitPower, ForceMode.Impulse); } public void DieRabbit() { StartCoroutine(nameof(DieRabbitCoroutine)); } private IEnumerator DieRabbitCoroutine() { GameManager.Inst.SlowSpeedMode(); AllDestroyBoss(); CombatUiManager.Inst.FadeInOut(); var elapsedTime = 0f; while (elapsedTime <= 3f) { elapsedTime += Time.unscaledDeltaTime; yield return null; } GameManager.Inst.DefaultSpeedMode(); } }