문제 상황
owner.playerActions.Move.performed += OnMove;
- 플레이어 이동을 InputAction을 통해 입력 받음
- 이동키를 누른 상태에서 공격 등으로 인해 이동이 차단된 후 다시 이동 가능한 상태가 되었을 때
- 입력이 유지되고 있음에도 이동이 재개되지 않음
핵심 원인
- InputAction.performed는 이벤트 기반으로, 입력이 들어오는 순간 한 번만 호출된다.
- 따라서 키 입력이 이미 눌려진 상태로 유지 중인 경우,
중간에 다른 상태(공격, 넉백 등)로 인해 이동이 중단되었다가
다시 이동 가능해져도 입력 이벤트는 새로 발생하지 않기 때문에 무시됨
인사이트
InputAction 시스템은 매우 깔끔하고 구조화된 입력 처리를 가능하게 하지만,
performed 이벤트가 “1회성” 호출이라는 점을 잊지 말아야 한다.
지속 입력이 필요한 경우, 추가 처리가 필요하다.
- InputAction.ReadValue<Vector2>()를 매 프레임 확인
- InputControll을 통해 상태값 체크
- Update() 루프에서 직접 입력 상태를 관리하는 방식으로 보완
- 상태 변환시 Cancel 호출 등
정리
InputAction.performed를 사용할 때는 버튼을 누른 순간에 무언가를 처리한다고 이해하고 접근해야 한다.
이 점을 유의하여 상태변화에 따른 입력 처리 관리를 해주도록 하자.
'Unity > 트러블 슈팅' 카테고리의 다른 글
| [Unity] 파티클 시스템 SetActive false -> true 이후 Prewarm 이슈 (1) | 2025.07.21 |
|---|---|
| [Unity] 오브젝트 풀링 트러블 슈팅 (0) | 2025.07.09 |
| [Unity] UI가 작동하지 않는 이유 (0) | 2025.06.27 |
| [Unity] Enum을 추상화 했을때 발생한 트러블 슈팅 (0) | 2025.06.24 |
| [Unity] null처리가 되었는데 Debug.Log에 출력 되는 현상 (0) | 2025.06.20 |