IState
public interface IState
{
public void Enter();
public void Update();
public void Exit();
}
- 모든 상태들의 인터페이스
- 모든 상태는 진입 시점과 탈출 시점이 있으므로, Enter()와 Exit()를 추가했다.
- 모든 상태는 매 프레임마다 체크할 로직이 필요할 수 있으므로, Update()를 추가했다.
BaseState
public class BaseState : IState
{
// 공통 기능 컴포넌트
protected AnimationController animationController;
public virtual void Enter() { }
public virtual void Update() { }
public virtual void Exit() { }
}
- 모든 상태들의 최상위 부모가 되는 클래스
- IState 인터페이스를 상속받아 Enter(), Update(), Exit()를 강제로 구현하도록 했다.
- 모든 상태들의 최상위 부모이므로, 공통적으로 사용되는 컴포넌트를 가지고 있으면 되겠다.
PlayerState
public class PlayerState : BaseState
{
// 플레이어 공통 기능 컴포넌트
protected InputReader inputReader;
protected PlayerMovement playerMovement;
protected VerticalVelocity verticalVelocity;
public override void Enter()
{
base.Enter();
}
public override void Update()
{
base.Update();
}
public override void Exit()
{
base.Exit();
}
}
- 플레이어 상태들의 부모 상태 클래스
- BaseState를 상속받아 Enter(), Update(), Exit()를 재정의 하도록 했고,
- 플레이어 상태들의 부모이므로, 플레이어 상태들에서 공통적으로 사용되는 컴포넌트를 가지고 있으면 되겠다.
PlayerGroundState
public class PlayerGroundState : PlayerState
{
// 플레이어가 땅에 있을 때 사용되는 기능 컴포넌트
public override void Enter()
{
base.Enter();
}
public override void Update()
{
base.Update();
}
public override void Exit()
{
base.Exit();
}
}
- 플레이어가 땅에 있을 때 상태 클래스
- PlayerState를 상속받아 Enter(), Update(), Exit()를 재정의 하도록 했다.
- 대기/걷기/뛰기 상태들의 부모이므로, 땅에 있을 때 공통적으로 사용되는 컴포넌트를 가지고 있으면 되겠다.
PlayerAirState
public class PlayerAirState : PlayerState
{
// 플레이어가 공중에 있을 때 사용되는 기능 컴포넌트
public override void Enter()
{
base.Enter();
}
public override void Update()
{
base.Update();
}
public override void Exit()
{
base.Exit();
}
}
- 플레이어가 공중에 있을 때 상태 클래스
- PlayerState를 상속받아 Enter(), Update(), Exit()를 재정의 하도록 했다.
- 점프 시작/중/착지 상태들의 부모이므로, 공중에 있을 때 공통적으로 사용되는 컴포넌트를 가지고 있으면 되겠다.
'개인 프로젝트 > ProjectA' 카테고리의 다른 글
| [개인 프로젝트] ProjectA - 이동 구현 설계 (0) | 2026.06.07 |
|---|---|
| [개인 프로젝트] ProjectA - 이동 방식 설정 (0) | 2026.05.30 |
| [개인 프로젝트] ProjectA - 게임 기획, 개발 일정 (0) | 2026.05.01 |