유니티/게임 프로젝트

2D RPG - (16 - 3) 블랙홀 스킬 구현_03

monstro 2025. 2. 11. 20:35
728x90
반응형

이번 포스트에서는 이전의 스킬 시스템에 블랙홀 스킬을 적용하기 이전에

설계구조를 변경하고 수정하는 작업을 진행하겠습니다.

 

1) SkillBlackHoleController

 

우선, 스킬에 대한 Controller에서 프로퍼티에 접근하는 일을 막기 위해

위와 같이 접근 수준private으로 변경하겠습니다.

 

 

또, 외부의 SkillManager에서 블랙홀을 설정하기 위해 새로 메서드를 생성하겠습니다.

 

 

마지막으로 블랙홀이 줄어들어도 적이 계속 얼어붙는 문제를 해결하기 위해 

OnTriggerEnterExit2D 메서드를 위와 같이 설정하였습니다.

 

2) SkillBlackHole

public class SkillBlackHole : SkillTemplate
{
    [SerializeField]
    private GameObject _blackHolePrefab;
    [SerializeField]
    private float _maxSize;
    [SerializeField]
    private float _growSpeed;
    [SerializeField]
    private float _shrinkSpeed;
    [Space]
    [SerializeField]
    private int _amountOfAttack;
    [SerializeField]
    private float _cloneAttackCooldown;

    protected virtual void Start()
    {
        base.Start();
    }

    protected virtual void Update()
    {
        base.Update();
    }

    public virtual bool DoDefineCanUseSkill()
    {
       return base.DoDefineCanUseSkill();
    }

    public virtual void DoUseSkill()
    {
        base.DoUseSkill();

        GameObject newBlackHole = Instantiate(_blackHolePrefab);
        SkillBlackHoleController newBlackHoleControllerScript = newBlackHole.GetComponent<SkillBlackHoleController>();
        newBlackHoleControllerScript.SetupBlackHole(_maxSize, _growSpeed, _shrinkSpeed, _amountOfAttack, _cloneAttackCooldown);
    }
}

 

SkillManager의 컴포넌트로서 블랙홀 스킬 그 자체로 동작하는 SkillBlackHole 클래스

위와 같이 SerializeField로 구성된 프로퍼티를 대거 추가하겠습니다.

 

블랙홀 스킬을 사용하는 경우 호출하는 DoUseSkill 메서드에서는

프로퍼티로 설정한 블랙홀 프리팹의 인스턴스를 생성하고

해당 인스턴스의 SkillBlackHoleController 컴포넌트를 통해

SetupBlackHole 메서드를 호출하여 블랙홀을 설정하게 됩니다.

728x90
반응형