FSM 작성중
This commit is contained in:
@@ -1,5 +1,34 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
public class IdleState : IState
|
||||
{
|
||||
public void Enter()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void Update()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void Exit()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public IState CheckTransition()
|
||||
{
|
||||
// 우선 순위
|
||||
// Jump를 우선
|
||||
// Move는 Jump보다 낮은 우선
|
||||
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class PlayerMove : MonoBehaviour
|
||||
{
|
||||
private static readonly int IsJumping = Animator.StringToHash("isJumping");
|
||||
|
||||
50
Assets/Scripts/Player/StateMachine.cs
Normal file
50
Assets/Scripts/Player/StateMachine.cs
Normal file
@@ -0,0 +1,50 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class StateMachine
|
||||
{
|
||||
private Animator animator;
|
||||
private IState _state;
|
||||
private PlayerMove _playerBase;
|
||||
// private TextMeshProUGUI _textState;
|
||||
|
||||
public StateMachine(IState state, PlayerMove playerMove)
|
||||
{
|
||||
// 초기 상태 객체 생성
|
||||
_playerBase = playerMove;;
|
||||
|
||||
_state = state;
|
||||
_state.Enter();
|
||||
}
|
||||
|
||||
public void Update()
|
||||
{
|
||||
_state.Update();
|
||||
|
||||
var newState = _state.CheckTransition();
|
||||
|
||||
if (_state != newState)
|
||||
{
|
||||
_state.Exit();
|
||||
SetTransition(newState);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetTransition(IState state)
|
||||
{
|
||||
// 다음음 상태로 전환
|
||||
_state = state;
|
||||
_state.Enter();
|
||||
}
|
||||
}
|
||||
|
||||
public interface IState
|
||||
{
|
||||
void Enter();
|
||||
|
||||
void Update();
|
||||
|
||||
void Exit();
|
||||
|
||||
// 트리거 조건일 경우 다음 상태로 전환
|
||||
IState CheckTransition();
|
||||
}
|
||||
2
Assets/Scripts/Player/StateMachine.cs.meta
Normal file
2
Assets/Scripts/Player/StateMachine.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d769a06cc3249454987cac52904ad993
|
||||
Reference in New Issue
Block a user