내일배움캠프 21일차

박나연·2025년 5월 7일

내배캠

목록 보기
21/69

개인과제 트러블 슈팅기록

개요

익숙하지 않은 newInputSystem기능을 도입하여 FlappyPlane미니게임의 마우스 클릭 기능을 구현하던 중, 마우스 클릭을 한 번 했을 때 두 번 튀어오르는 의도와 다른 동작이 일어나는 문제를 마주했습니다.

발단

원래는 Input.GetMouseButtonDown(0)으로 한 번만 입력을 받던 로직을InputSystemOnPlaneMove 액션으로 바꾸면서 마우스 왼쪽 버튼 클릭이 한 번에 두 번(누를 때와 뗄 때) 호출되는 현상이 생겼습니다.

전개

문제를 해결하기 위해 액션 맵과 코드를 모두 살펴보았습니다.

  • 액션 맵 설정
    Action Type을 Value로 설정했고,Control Type을 Any로 두었습니다. InteractionsPress를 추가해 Press Only로 설정하여 눌렀을 때만 입력이 되도록 하고자 했습니다.
  • 코드 문제
void OnPlaneMove()
{
    isFlap = true;   
}

isFlap을 적절하게 호출하였는지 살펴보았으나 이상은 없었습니다.

위기

코드 상의 문제는 없어보였고, InputSystem 설정에 의심을 하였으나 Press Only로 바꿔도 나아지지 않았습니다. 그래서 Action부분부터 다시 살펴보기로 했습니다.

절정

  1. 원인 파악
    Inputsystem에서 Action type = Value, Control Type = Any설정은 누르는 순간과 뗄 때까지도 액션을 발생시키는 구조인 것을 알았습니다.

  2. 해결
    그래서 Action TypeButton으로 변경하였고 Press Only모드로 설정하여 버튼을 누를때만 이벤트가 발생하도록 제한하였습니다.

  3. 결과 확인
    OnPlaneMove가 한 번만 호출되고, 비행기가 의도한 만큼 한번만 튀어오르고 이중 처리 현상이 완전히 사라짐을 확인했습니다.

결말

InputSystem 액션 맵의 Action TypeControl Type설정을 올바르게 잡는것과 Value는 연속적인 값(좌표)을 다룰 때, Button은 누르기/떼기와 같은 이벤트를 다룰 때 사용한다는 것을 알게 되었습니다.

0개의 댓글