이번 포스트에서는 이동을 전환하거나 폭발하는 크리스탈 스킬을 구현해보도록 하겠습니다.
스크립트는 크게 2개의 부분으로 구분할 수 있습니다.
- 1) 크리스탈 스킬의 영역 : SkillCrystal, SkillCrystalController, SkillManager
- 2) 스킬을 사용하기 위한 조작의 영역 : PlayerContoller, PlayerState, PlayerStateGrounded
따라서 크리스탈 스킬의 영역에서 작업을 먼저 수행하겠습니다.
1) SkillCrystalController
크리스탈 스킬을 조작하기 위한 SkillCrystalManager의 경우, 위와 같이 구성하였습니다.
프로퍼티로는 _crystalExistTimer를 들고 있어 생성된 크리스탈의 시간을 유지합니다.
메서드로는 총 3개의 메서드를 들고 있는데,
각각 SetupCrsytal / Update / DestroyCrystal입니다.
SetupCrsytal 메서드의 경우, 생성된 크리스탈의 _crystalExistTimer를 설정합니다.
Update 메서드에서는 _crystalExistTimer를 감소시키고 일정 시간후에 DestroyCrystal을 호출합니다.
DestroyCrystal 메서드는 SkillCrystalManager가 컴포넌트로 붙은 GameObject를 파괴합니다.
2) SkillCrystal
public class SkillCrystal : SkillTemplate
{
[SerializeField]
private GameObject _crsytalPrefab;
[SerializeField]
private float _crystalExistTime;
private GameObject _currentCrsytal;
public override void DoUseSkill()
{
base.DoUseSkill();
// 생성된 크리스탈이 없다면 생성하고, 있다면 크리스탈과 플레이어 위치 교환
if (_currentCrsytal == null)
{
_currentCrsytal = Instantiate(_crsytalPrefab, _playerController.transform.position, Quaternion.identity);
SkillCrystalController currentCrystalController = _currentCrsytal.GetComponent<SkillCrystalController>();
currentCrystalController.SetupCrystal(_crystalExistTime);
}
else
{
_playerController.transform.position = _currentCrsytal.transform.position;
Destroy(_currentCrsytal);
}
}
}
크리스탈 스킬 그 자체인 SkillCrystal은 위와 같은 코드로 구성되어 있습니다.
간단하게 이전에 생성된 크리스탈이 있다면, 플레이어를 크리스탈의 위치로 이동시키고 파괴합니다.
생성된 크리스탈이 없다면, 플레이어의 위치에 크리스탈을 생성합니다.
3) SkillManager
스킬을 총괄하여 관리하는 SkillManager 클래스에 위와 같이 크리스탈 스킬을 위한 설정을 추가합니다.
다음으로 조작 영역의 코드 작업을 수행하겠습니다.
4) PlayerController
플레이어이자 플레이어의 조작을 담당하는 PlayerController 클래스에
위와 같이 크리스탈 스킬을 사용하기 위한 설정을 추가하였습니다.
5) PlayerState
플레이어의 상태를 의미하는 PlayerStata에서
PlayerController에서 설정한 _ismakingCrystal 값을 받아와 저장하도록 하였습니다.
6) PlayerStateGrounded
땅을 딛고 있는 상태인 PlayerStateGrounded에서는
스킬 입력 여부에 따라 크리스탈 스킬을 수행하도록 하였습니다.
최종실행 결과는 다음과 같습니다.
'유니티 > 게임 프로젝트' 카테고리의 다른 글
2D RPG - (17 - 3) 크리스탈 스킬 구현_03 (0) | 2025.02.18 |
---|---|
2D RPG - (17 - 2) 크리스탈 스킬 구현_02 (0) | 2025.02.18 |
2D RPG - (16 - 5) 블랙홀 스킬 구현_05 (0) | 2025.02.12 |
2D RPG - (16 - 4) 블랙홀 스킬 구현_04 (0) | 2025.02.12 |
2D RPG - (16 - 3) 블랙홀 스킬 구현_03 (0) | 2025.02.11 |