턴제 게임에서 플레이어 캐릭터의 차례가 오면 크게 4가지 행동을 취할 수가 있다.
1. 공격 하기
2. 자리 교체(이동하기)
3. 아이템 사용
4. 가만히 있기 (할 수 있는게 없을 때)
이렇게 행동 상태를 저장해서 마우스 클릭 시 선택된 행동을 실행할 수 있게 해보자!
1. 먼저 행동 상태를 저장하는 변수들을 선언한다.
// 필요한 정보
private enum PlayerAction { None, Attack, Move, Item }
private PlayerAction currentAction = PlayerAction.None; // 기본상태는 일단 None;
2. 행동 상태에 따라 실행하는 코드 틀을 잡는다.
switch (currentAction)
{
case PlayerAction.Attack:
break;
case PlayerAction.Move:
break;
case PlayerAction.Item:
break;
default:
Debug.Log("행동을 선택해주세요");
break;
}
2-2. 현재 만들고 있는 게임 프로젝트에 적용한다면 이렇게 적용시킬 수 있다.
// 마우스 클릭 -> 정보 넘기기
private void MouseClick()
{
if (Input.GetMouseButtonDown(0) && selectArea != null)
{
switch (currentAction)
{
case PlayerAction.Attack:
if (!isFriend) {
DirectPlayer_AttackToEnemy(selectArea); // 적군 공격 명령
currentAction = PlayerAction.None; // 행동 후 초기화
}
break;
case PlayerAction.Move:
if (isFriend)
{
DirectPlayer_Move(selectArea); // 아군 지형 이동 명령
currentAction = PlayerAction.None; // 행동 후 초기화
}
break;
case PlayerAction.Item: // 아직 아이템은 미구현
break;
default:
Debug.Log("행동을 선택해주세요");
break;
}
}
}
마우스를 클릭했을 때 행동 상태에 따라서 PlayerController가 명령을 내릴 수 있다
'Unity > Unity 프로그래밍' 카테고리의 다른 글
[C#/Unity] try-catch를 이용해 개발 진행하기 (0) | 2025.03.25 |
---|---|
[C#/Unity] Builder 패턴을 이용해서 캐릭터 기술 만들기! (0) | 2025.03.24 |
[C#/Unity] 델리게이트(Delegate): 함수를 변수처럼! (0) | 2025.03.24 |
[Unity] 유니티의 생명주기(Lifecycle)와 코루틴 (0) | 2025.02.05 |
[Unity] 충돌 시스템을 활용한 범위 내(입장 시) 이벤트 실행하기 (0) | 2025.02.05 |