Input System을 활용한 코드들에 대한 이해
Input System은 코드를 기능 단위로 분리하고 입력과 입력에 대한 처리를 분리하고자 사용한다.
코드의 흐름을 조금 되짚어봐야할 필요가 있는데
TopDown 컨트롤러와 PlayerInput 컨트롤러와 TopDownMovement 클래스가 있다.
먼저 TopDown 컨트롤러는 이름대로 컨트롤러, X박스나 플스의 컨트롤러를 생각해보자
일단 컨트롤러의 키매핑은 하지 않고 그 컨트롤러의 껍데기 만을 만드는 과정으로 이해하면 좋다.
만일 뭐 이동을 해야한다. 그러면 이동을 위한 버튼을 만들어줘야한다.
그 버튼을 event Action을 이용하여 만드는 것이다.
그리고 껍데기면 누를 수 있도록 Action을 Invoke 해주는 것이다.
그리고 엉뚱하게 누르면 안되고 원할 때 눌러야한다. 고로 Invoke하는 것을 함수로 감싸
CallMoveEvent라는 함수를 만든다.
이것이 바로 TopDown 컨트롤러다. 한마디로 컨트롤러의 껍데기를 만드는 과정으로 컨트롤러에 필요한 버튼들과 누를 수 있도록 만들어준다.
그리고 PlayerInput 컨트롤러는 플레이어가 쓸 플레이어 전용 컨트롤러로써 TopDown 컨트롤러를 상속받아 만든다.
플레이어는 만들어진 컨트롤러 껍데기를 사용을 하는 사람이다.
고로 플레이어의 WASD 입력에 따라 Input System서 OnMove 함수를 찾아 수행할 수 있게 설정했다면
이 OnMove 함수를 사용하는 것이 바로 플레이어이기에 이 코드단에서 OnMove 함수에 대한 정의를 하고
이동시엔 버튼을 눌러야 하기에 아까 껍데기서 선언한 버튼 누르는 동작인 CallMoveEvent를 호출하는 것이다.
TopDownMovement는 이동에 대한 처리를 하는 클래스이다.
CallMoveEvent를 통해 버튼을 누르는 동작까지 수행을 하긴 하지만
버튼을 눌렀을 뿐 아무런 메서드도 수행되지 않는다.
고로 여기에다가 움직일 수 있도록 이벤트에 메서드를 등록해줘야한다.
그 메서드를 Move라 하면
Move 메서드를 만들어 TopDown 컨트롤러의 Action 변수에 += 기호를 통해 메서드를 등록해주면 되는 것이다.
움직임에 대한 자세한 로직은 서술하지 않고 구조에 대한 설명만 서술하였다.
무엇보다 이 구조를 이해해야 로직을 이해하고 사용할 수 있기 때문에 보다 큰 그림을 이해할 필요성을 느꼈다.