1. 발생 문제
유니티에서 UI Button은 클릭 후 마우스를 때야지만 동작하게 되어있습니다.
이는 위와 같이 버튼을 누르자마자 플레이어가 점프를 해야하는 게임에서는 치명적일 수 있습니다.
2. 해결 방안
- 해결 방법은 크게 2가지가 있습니다.
1. IPointerClickHandler, IPointerDownHandler, IPointerUpHandler 등의 포인터 입력을 감지하는 인터페이스를 활용한다.
2. EventTrigger를 사용하여 포인터 입력에 따라 함수를 호출한다.
저는 2번 방법 EventTrriger를 사용하여 포인터 입력을 감지한 뒤 점프 함수를 호출해서 문제를 해결해 보겠습니다.
- 해결 방법은 아래와 같습니다.
1. EventTrigger 컴포넌트를 선언 후 인터페이스에서 EventTrigger 컴포넌트 연결
2. EventTrriger.Entry 객체인 jumpEventEntry를 생성
3. jumpEventEntry.evnetID = EventTriggerType.PointerEnter로 지정 (눌렀을 때 바로 동작하는 타입)
4. jumpEventEntry.callback.AddListener((data) => _playerController.Jump()), 버튼이 눌렸을 때 플레이어가 점프하는 함수를 호출하도록 람다식으로 연결
5. _jumpButton_EventTrigger.triggers.Add(jumpEventEntry), 점프버튼 이벤트 트리거 컴포넌트의 triggers목록에
만들어둔 jumpEventEntry를 추가해줌.
3. 마무리
이제 버튼을 누르자마자 플레이어가 바로 점프하는 것을 확인할 수 있습니다.
'Unity' 카테고리의 다른 글
[유니티] InputSystem이 동작안하는 오류 (0) | 2024.07.14 |
---|---|
[유니티] You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings. (0) | 2024.07.14 |
유니티 여러곳에서 참조되는 데이터 관리 (0) | 2024.05.23 |
Debug 최적화 (0) | 2024.05.20 |
유니티 2단점프 구현 (0) | 2024.05.12 |