이번 강의에선 플레이어 인풋 액션을 다른 방식으로 사용 하였다.
InputAction의 설정은 이전과 같지만 스크립트를 생성하는 방식이 다르다.
플레이어 inputaction의 하이라키에서 스크립트를 바로 생성을 한다.
IState = 각각의 스테이트에서 이루어질 동작의 순간을 지정해준다
public void Enter(); //스테이트에 들어올때
public void Exit(); //스테이트에서 나갈때
public void HandleInput(); //스테이트중에 입력 처리를 할때
public void Update(); //업데이트
public void PhysicsUpdate(); //물리적 업데이트
StateMachine(추상 클래스)
스테이트의 변경을 관리한다.
PlayerSO = 아래의 둘을 가진 SO
PlayerGoundData = 플레이어가 땅에 있을때 이동과 관련된 데이터
PlayerAirData = 플레이어가 하늘에 있을때 이동과 관련된 데이터
PlayerStateMachine = 다른 스테이트들을 담고있어야 한다.
PlayerIdleState
PlayerBaseState =플레이어의 키 입력을 감지
PlayerGroundState
트러블 발생
플레이어가 달리는 동작으로 변환을 할때 조금 부자연스럽게 전환됨이 발견됨
Walk상태에서 Run으로 변환을 할때 Walk 에서 바로 Run으로 변환되는게 아니라 Exit를 지나 Idle을 통해 Run으로 전환되는 현상이 발생되었다.
이렇게 여러 상태를 거쳐 Run으로 변환되기에 애니메이션 변환에 지연이 생기게됐다.해결
Walk에서 Exit로 가는 파마니터의 Transition Duration을 0으로 변경하니 해결