김김김의 게임개발
  • 유니티 게임개발 - 상태 머신
    2023년 09월 25일 23시 49분 53초에 업로드 된 글입니다.
    작성자: noun06

    상태 머신 패턴은 게임 오브젝트의 상태를 정의하고 관리하기 위해 사용된다. 상태머신은 오브젝트의 행동을 다양한 상태로 분할하고 각 상태에서 어떤 동작이 수행될지를 결정한다.

    예를 들어 플레이어 캐릭터는 이동 상태, 공격 상태, 점프 상태 등 다양한 상태로 구성될 수 있고 각각 해당 상태에 맞는 로직이 돌아간다.

    using UnityEngine;
    
    public class PlayerStateMachine : MonoBehaviour
    {
        private enum PlayerState
        {
            Moving,
            Stopped
        }
    
        private PlayerState currentState;
    
        void Start()
        {
            //초기 상태
            SetState(PlayerState.Stopped);
        }
    
        void Update()
        {
            // 상태에 따른 동작 수행
            switch (currentState)
            {
                case PlayerState.Moving:
                    Move();
                    break;
    
                case PlayerState.Stopped:
                    // 정지 상태 동작 수행
                    break;
            }
    
            if (Input.GetKeyDown(KeyCode.W))
            {
                SetState(PlayerState.Moving);
            }
    
            if (Input.GetKeyDown(KeyCode.S))
            {
                SetState(PlayerState.Stopped);
            }
        }
    
        private void Move()
        {
            // 이동 로직
            Debug.Log("이동 중...");
        }
    
        // 상태를 변경하는 함수
        private void SetState(PlayerState newState)
        {
            currentState = newState;
        }
    }

     

    각 상태는 독립적으로 동작하기 때문에 코드의 유연성 측면에서 이점이 있다.

    댓글