GameDev/Cubidom

Cubidom 적 난이도 세팅

SMNNMN 2026. 3. 20. 01:00

적의 난이도를 직접 세팅하는 경우, 난이도에 따라 EnemyAi의 각 변수들의 값을 조정해 만들 것이다. 

Sctriptable Object를 통해 난이도에 맞는 변수들의 값을 적고, 게임 시작시 변수를 EnemyAi 변수값에 Setup하는 방식으로 처리할 것이다. 

 

 

적 난이도 ScriptableObject

using UnityEngine;

[CreateAssetMenu(menuName = "Scriptable/EnemyAIData",fileName = "Enemy AI")]
public class EnemyAIData : ScriptableObject
{
    public float behaviourRandomness;
    public float positionRandomness;
    public float thinkDelay;
}

스크립터블 오브젝트를 먼저 말들어 준다. 난이도에 따라 바뀔 변수는 총 3개로, 행동 랜덤값, 위치 랜덤값, 생각시간이다. 

 

프로젝트 폴더에서 Scriptable Object를 만들어 준이후 3개의 데이터에 각 난이도에 맞게 적절히 변수의 값을 조정한다. 

 

EnemyAI

    [SerializeField] List<EnemyAIData> aiData = new List<EnemyAIData>(); // 적의 난이도 레벨 리스트
    private EnemyAIData enemyData; // 적의 난이도 레벨
    
    // {
    //     StartCoroutine(ThinkBehaviour());
    // }
    private void Start()
    {
        GameManager.Instance.gameStart += LevelSetUp;
        GameManager.Instance.gameStart += StartMyCoroutine;
    }
    void LevelSetUp()
    {
        enemyData = aiData[GameManager.Instance.enemyLevel - 1];
        Debug.Log(enemyData);

        thinkDelay = enemyData.thinkDelay;
        behaviourRandomness = enemyData.behaviourRandomness;
        positionRandomness = enemyData.positionRandomness;
    }
    private void OnDisable()
    {
        GameManager.Instance.gameStart -= LevelSetUp;
        GameManager.Instance.gameStart -= StartMyCoroutine;
    }

데이터 셋업의 경우 LevelSetUp이라는 함수를 통해 데이터의 값을 넣는다. 

GameManager에서 게임 시작시 호출되는 gameStart 델리게이트에 SetUp 함수를 넣어 작성한다. 

각 난이도에 따른 스크립터블 오브젝트를 사용하기 위해서 List를 만들고, GameManager의 enemyLevel의 값을 사용해서 순서에 맞는 데이터를 사용하게끔 한다. 

 

 

완성본

Hard 난이도는 타 난이도보다 판단속도가 빠른 것을 볼수 있다.

'GameDev > Cubidom' 카테고리의 다른 글

Cubidom 게임 재시작하기  (0) 2026.03.23
Cubidom 게임 종료 UI  (0) 2026.03.20
Cubidom 적 난이도 선택  (0) 2026.03.19
Cubidom 게임 시작 시스템  (0) 2026.03.18
Cubidom 카메라 컨트롤  (0) 2026.03.16