CapersProject/Assets/02.Scripts/Map/MapController.cs
Nam Tae Gun 51798c3346 #16 SandMole(모래 두더지) 보스 추가 중
+ AiMovement 클래스 재생성 및 초기화 방식 변경
+ AnimationController 클래스 초기화 방식 변경
+ MapManager, MapController 로직 수정
+ BaseBoss 프리팹 수정
+ SandMole 보스에 맞게 맵 추가
+ 임시 SandMole, GhostBarrel 이미지 추가
+ 기존 GroundGreen, GroundRed 스프라이트 정사각형으로 변경, 수정에 따라 BaseMapController Ground, Wall 수정
+ 코뿔소 맵 투명화 Props 추가

Closes #12
2024-06-14 01:46:37 +09:00

93 lines
2.7 KiB
C#

using System.Collections;
using BlueWater.Uis;
using Sirenix.OdinInspector;
using UnityEngine;
namespace BlueWater.Maps
{
public abstract class MapController : MonoBehaviour
{
/// 컴포넌트
[Title("컴포넌트")]
[SerializeField, Required]
protected Transform PlayerSpawnTransform;
[SerializeField, Required]
public Transform EnemyInstantiateLocation;
[field: SerializeField]
public Transform ParticleInstantiateLocation { get; private set; }
[SerializeField]
protected SaveStage SaveStage;
[SerializeField]
protected string BGMName;
public abstract void InitializeMap();
// TODO : FieldMinion 생성 후 연결
// protected T InstantiateFieldMinion<T>(Vector3 instantiatePosition, T prefab) where T : FieldMinion
// {
// var instantiateFieldMinion = Instantiate(prefab, instantiatePosition, Quaternion.identity, EnemyInstantiateLocation).GetComponent<T>();
// instantiateFieldMinion.Init(this);
//
// EnemyInstanceList.Add(instantiateFieldMinion.gameObject);
//
// return instantiateFieldMinion;
// }
public void AllDestroyEnemy()
{
foreach (Transform element in EnemyInstantiateLocation)
{
Destroy(element.gameObject);
}
}
public void AllDestroyObjects()
{
foreach (Transform element in EnemyInstantiateLocation)
{
Destroy(element.gameObject);
}
foreach (Transform element in ParticleInstantiateLocation)
{
Destroy(element.gameObject);
}
}
public virtual void MapClear()
{
if (EnemyInstantiateLocation.childCount <= 0)
{
StartCoroutine(nameof(MapClearCoroutine));
}
}
private IEnumerator MapClearCoroutine()
{
VisualFeedbackManager.Instance.SetBaseTimeScale(0.1f);
CombatUiManager.Instance.FadeInOut();
var elapsedTime = 0f;
while (elapsedTime <= 3f)
{
elapsedTime += Time.unscaledDeltaTime;
yield return null;
}
AllDestroyEnemy();
VisualFeedbackManager.Instance.SetBaseTimeScale(1f);
elapsedTime = 0f;
while (elapsedTime <= 2f)
{
elapsedTime += Time.unscaledDeltaTime;
yield return null;
}
MapClear();
}
}
}