개인과제 정리2 (Input System활용)

김치헌·2024년 1월 27일
0

TIL

목록 보기
23/38

인풋시스템을 활용하여 캐릭터 이동

InPutSystem을 이용하여 입력을 받는 경우 버튼을 누를 때와 뗄 떼 모두 출력을 전달 해 줌
Ex) Vector2 입력으로 RightArrow버튼을 눌렀다 떼면 Vector2(1.0)과 Vector2(0.0) 두번 출력
InputSystem을 이용하지 않고 InputManager를 통해 입력받은 값으로, 예를 들어
GetMouseButton(0)으로 InputController.cs의 OnFire함수를 사용하려면
InputController.OnFire(GetMouseButton(0));의 형태로 사용

  1. Windows > packageManager에서 InputSystem 설치
  2. Input System을 이용하여 Input Action 추가하기
  3. 추가된 Input Action에서 ActionMap작성
    Add Control Scheme에서 사용할 인풋장치 추가하기
    사용할 Action Map 과 Action 추가하기(Action Type과 Control Type조정)
    Action에 사용할 키를 등록하기
  4. CharacterController.cs 생성하기 (Input을 통해 사용할 이벤트 생성)
    CallMoveEvent와 CallLookEvent 생성
  5. PlayerInputController.cs 생성하기 (Input Action에서 구현한 Action등록)
    CharacterController를 상속
    Input Action에 등록한 Move와 Look을 사용하기 위해 OnMove와 OnLook함수 작성
    Look에서 Input에서 return받은 Vector2값을 Screen값에서 WolrdPoint로 가져옴
    WolrdPoint에서 자신의 위치(transfrom.position)을 빼면 방향에 대한 벡터를 구할 수 있음
  6. TopDownMovement.cs 생성
    _controller를 CharacterController타잎으로 생성하고 GetConponent함
    Start함수에서 OnMoveEvent에 Move함수 구독하기
    FixedUpdate에서 ApplyMovement로 캐릭터 이동하기
    Move함수, ApplyMovement 함수 작성하기

Input입력 > InputAction에서 등록된 Action을 사용하는 함수에 출력값 반환 > ex)OnMove함수에서 Vector2 출력값을 받음 > OnMove함수에서 Vector2값으로 CallMoveEvent호출 > CallMoveEvent에서 OnMoveEvent에 구독된 모든 함수에게 Vector2값을 전달하여 실행 > TopDownMovent에서 OnMoveEvent에 등록한 Move함수 실행 > ApllyMovemet에서 rigidbody velocity변화로 캐릭터 이동

profile
초보개발자

0개의 댓글