ThirdPersonCharacter와EnhancedInput (1)

YH J·2023년 11월 27일
0

UE5 C++

목록 보기
6/10

삼인칭으로 프로젝트를 만들면 생성되는 ThirdPersonCharacter와 Enhanced Input으로 구현되어있는 입력 분석하기

1. InputAction

  • IA_Move

값 타입이 Vector2D로 X, Y로 구성되어 있다.

  • IA_Look

IA_Move와 마찬가지로 Vector2D로 되어있다.

  • IA_Jump

점프는 눌렀는지 안눌렀는지만 알면 되므로 Bool로 설정되어 있다.

액션 탭의 기능들 설명

  • 입력 소모
    : 사용자가 키를 입력 할 경우 입력이 발생하고 UEnhancedInputLocalPlayerSubsystem 에 등록되어 있는 InputMappingContext에 해당 입력 키에 대해 매핑이 되어 있을 때 입력이 소모되고 매핑된 함수가 실행된다.
  • 일시정지 시 트리거
    : 일시정지 상태에서도 동작할 수 있는지 여부
  • 모든 매핑 예약
    : 우선순위가 높으면 자동으로 매핑을 오버라이드 하는데 이를 체크시 우선순위에 따른 매핑을 자동으로 하지 않는다.
  • 값 타입
    : InputAction이 반환하는 Value 타입
  • Triggers
    : 여러 조건들이 구현되어 있는데 이를 만족해야 트리거되게 설정할 수 있다.
  • Modifiers
    : 값 타입으로 설정해둔 Value를 변형시킬 수 있다.

2. InputMappingContext

기본적으로 매핑에 IA_Jump, IA_Move, IA_Look이 매핑되어 있다.

  • IA_Jump

딱히 특별한 것 없이 스페이스 바로 설정되어 있고, 스페이스 바를 누르면 true를 리턴하고 때면 false가 된다.

스페이스 바를 누르면 IA_Jump가 Triggered되고 true값을 리턴한다.

  • IA_Move

W, A, S, D가 추가되어 있다. W와 S는 Modifiers의 스위즐 입력 축 값이 추가되어 있고, S와 A는 Modifiers의 Negate가 추가되어 있다.

스위즐 입력 축 값

IA_Move가 값 타입이 FVector2D로 되어있지만 아무 Modifier 없이 그냥 추가해두면
W를 누르던 S를 누르던 A던 D던간에 그냥 기본적으로 X값이 1.0이 된다.

이렇게 전부 제거할 경우

이렇게 전부 X축 값만 1.0이 나온다.
하지만 우리는 W와 S를 누를 경우 앞과 뒤로 움직이기를 원한다.

그래서 이렇게 W와 S입력의 Modifiers에 스위즐 입력 축 값을 추가한다.
순서는 YXZ로 되어있는데 입력의 X축과 Y축 값을 바꾸겠다는 것이다.
이렇게 스위즐 입력 축 값을 추가하면

W와 S를 누를 경우 Y값이 1.0이 되며 앞으로 나가게 된다.

Negate

위에서 X축 입력을 스위즐 입력 축 값 으로 Y축 입력으로 변환했지만 우리는 S를 누르면 뒤로가고 A를 누르면 왼쪽으로 가게 만들고 싶다.
그러려면 S를 눌렀을 땐 Y축 입력이 -1.0이 되야하고 A를 누르면 X축 입력이 -1.0이 되어야 한다. 그래서 Modifiers에 Negate를 추가한다.

이렇게 되면 처음 프로젝트를 만들 때 되어있는 세팅이 완성된다.

  • IA_Look

입력이 마우스 XY 2D축으로 되어있다. 좌우가 X축, 위아래가 Y축이다.
보통 게임에서는 마우스의 Y축 입력이 반전되어있으므로 Modifiers에서 Negate를 추가하고 Y축의 입력에 대해서만 작동하도록 설정되어있다.

IA_Move처럼 X, Y축 입력을 나눈 뒤 Y축에 대해서 스위즐 입력 축값을 추가하고 Negate로 반전시키면 위의 설정과 똑같은 기능을한다. 그러나 마우스입력은 2D축이 구현되어있으므로 굳이 이럴 필요는 없는 것 같다.

profile
게임 개발자 지망생

0개의 댓글