OldBlueWater/BlueWater/Assets/02.Scripts/SlimeBossMapController.cs

73 lines
2.4 KiB
C#
Raw Normal View History

using System.Collections;
2024-05-08 00:28:04 +00:00
using BlueWaterProject;
using Sirenix.OdinInspector;
using UnityEngine;
// ReSharper disable once CheckNamespace
public class SlimeBossMapController : BossMapController
2024-05-08 00:28:04 +00:00
{
// 추가 설정
[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);
2024-05-08 00:28:04 +00:00
public override void InitBossMap()
2024-05-08 00:28:04 +00:00
{
base.InitBossMap();
DataManager.Inst.CurrentSaveStage = SaveStage.SLIME;
2024-05-08 00:28:04 +00:00
InstantiateSlime(bossSpawnTransform.position, 1, true);
}
private TitanSlime InstantiateSlime(Vector3 instantiatePosition, int level, bool hasRabbit)
2024-05-08 00:28:04 +00:00
{
var instantiateBoss = Instantiate(bossPrefab, instantiatePosition, Quaternion.identity, bossInstantiateTransform).GetComponent<TitanSlime>();
var slimeState = slimeStateSo.SlimeStateList.Find((list) => list.Level == level);
2024-05-08 00:28:04 +00:00
instantiateBoss.Init(slimeState, hasRabbit);
CombatUiManager.Inst.FieldBossHpSlider.SetHpSlider(instantiateBoss.MaxHp, instantiateBoss.BossName);
2024-05-08 00:28:04 +00:00
bossInstanceList.Add(instantiateBoss.gameObject);
return instantiateBoss;
2024-05-08 00:28:04 +00:00
}
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);
2024-05-08 00:28:04 +00:00
}
public void DieRabbit()
2024-05-08 00:28:04 +00:00
{
StartCoroutine(nameof(DieRabbitCoroutine));
2024-05-08 00:28:04 +00:00
}
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();
elapsedTime = 0f;
while (elapsedTime <= 2f)
{
elapsedTime += Time.unscaledDeltaTime;
yield return null;
}
CombatUiManager.Inst.ClearPopupUi.Open();
}
2024-05-08 00:28:04 +00:00
}