턴제 전투 기초 구성 맛보기
unity 유니티 공부 2025. 10. 27. 15:52 |



모든 경우의 수를 봐야 함
잘게 잘라서 생각해야 함
+
스크립트 속에서
state 상태를 정한다
GameManger 에 다 몰아넣지 말고
나눠라
일반 메뉴는 GameState는 GameManger에 저장
전투 속 BattleState는 파일명 BattleState.cs에 저장
GameManager 스크립트에 너무 많은 걸 때려박으면
너무 커지고 복잡해져서 안좋다
지금 현 상황이 어떤 거냐
public enum GameState
{
Loading,
MainMenu,
WorldMap,
BattleStart,
BattleEnd
}
public enum BattleState
{
BattleInit, // 전투 시작시
PlayerTurn, // 아군턴
EnemyTurn, // 적군턴
Victory,
Defeat
}
GameManager 가 아니라
BattleState 가 턴의 state 를 관리한다
맨 처음 만들 변수는 생존 여부다
bool 변수
public bool isLive;
적이 살아있는 상태냐
public BattleState battleState;
void Awake()
{
battleState = BattleState.BattleInit;
}
어웨이크 에 스타트 넣어서
스타트 상황 부터 시작한다
플레이어 턴이 아닐 땐 버튼 누르는 걸 방지해야 한다
공격을 방지해야 한다
public void PlayerAttackButton()
if (battleState != BattleState.PlayerTurn)
{
return;
}
더 자세한건
https://youtu.be/UTWg2ukJP3k?si=OvEuanP0U5vB9Vnb
+
위는 강의용으로 맛보기로 공개한 거고
배틀 스테이트는 총 5분할이 추천된다
BATTLE_NONBATTLE ㅡ 일상맵
BATTLE_SETUP ㅡ 세트장 준비
BATTLE_READY ㅡ ui와 순서, 버프 설정
BATTLE_ACTIVE ㅡ 전투 진행
BATTLE_RESULT ㅡ 전투 결과
전투 시작 부분을 둘로 나눔
BATTLE SETUP: "무엇을 보여줄까" (렌더링)
BATTLE READY: "어떻게 싸울까" (로직)
BATTLE_SETUP (물리적 준비)
- 맵 생성/로딩
- 지형 오브젝트 배치
- 아군/적군 유닛 스폰
- 카메라 초기 위치 설정
- 전투 진입 연출 (페이드, 줌인)
- 배경음악 변경
소요 시간: 1-3초 (로딩 + 연출)
BATTLE_READY (논리적 준비)
- 턴 순서(Initiative) 계산
- 속도/스탯 기반 순서 정렬
- UI 요소 활성화
- 턴 순서 표시 바
- 유닛 HP/MP 게이지
- 미니맵
- 버프/디버프 초기화
- 카메라를 첫 번째 행동 유닛에게 이동
- "Battle Start!" 메시지
소요 시간: 0.5-1초 (UI 애니메이션)
이 분리는 코드 품질과 유지보수성을 크게 향상시킵니다.
Fire Emblem, XCOM, Final Fantasy Tactics 같은 상업 게임들도 유사한 구조를 사용합니다. 👍.
.
로딩
전투 준비 중
공격 애니메이션 실행 중
아군 턴이지만 행동불능 상태이상 걸렸을 때
적의 턴
특수 대화
전투 결과
이 경우 플레이어의 입력을 차단 해야 함
.
일상맵 ↔️ 전투맵
↕️
월드맵
.
연관 검색어
battle state
unity tactics
turn system
