※ 개인적인 공부를 위해 포스팅 하는 글입니다.
공식문서 링크
#언리얼4까지만해도 이렇게 인풋을 정의했다.
ㆍ UE4까진 여기서 키를 바인딩해주는식으로 개발을 했다. UE5부턴 ㄴㄴ
한글로 봐도 이제 안쓴다고 되어있다
#UE5에선?
위 축의 개념이 bool (눌럿느냐 액션) float,vector2d,3d(이거도double) 그런 매핑들이 입력액션으로 들어와있다.
컨벤션은IA_ 를 붙혀주면된다
Input Mapping Context를 생성해주자 컨벤션은 IMC
ㆍ 아직 키에대한 액션은 할당해 주지 않은 상태다. 근데 이게 프로젝트 세팅에서 한거랑 무슨 차이가 있냐? 라는 의문이 생긴다면 이 IMC_Default자체도 하나의 에셋이라는 것이 중요하다, 만약 다른 상황이 있다면 인풋을 바꿔버릴 수 있겠다.
ㆍ 이전 기본 인풋의 단점은 엄~~청 많아지면 관리가 너무 어려워진다...
예를들어 상점을 열때는 인풋을 막는다던지 하는 그런부분이 어렵다
일단은 블루프린트로 보자. 상황에 맞게 InputMapping을 바꿀 수 있다.
그럼 아까 만든 IA_ 컨트롤러들이 뜬다. 가끔 영어 모를때마다 한국어로 바꿨다가 영어로 바꾸는중..ㅋㅋ
무브도 한번 보자. Axis2D로 바꿔주니 블프에서도 이렇게 뜬다. XY는 Split Struct Pin을 눌러줬다
축이라는 개념을 만들었으니 무브를 IMC_Default 에서 설정해 줘야 한다. 별다른 설정을 안하면 1,0만 출력될거다
기본적으로 설정을 이렇게 해줘야되는데.... 영어로 보니 잘 이해가 안된다 뭐 사실 한글로 해도 번역이 불안전하긴 하나 좀더 이해가 되긴 한다.
이렇게 하면 이동이 관련된건 잘 매핑되었다.
Turn에 관한거도 이렇게 해서 테스트 해보면 잘 된다.
# 이제 C++로 이식해보자
먼저 PlayerController를 보기 전에 모듈을 넣어줘야 한다.
진자 별로다..ㅋㅋㅋ 쓰라고 만들어놓고 모듈은 또 직접 넣어줘야되네 암튼 이걸 해줬기에..
나중에 이런 경로들은 생략하고 include해줘도된다.
# .h
ㆍ PlayerController의 상속을 받는 클래스를 만들어줬다. . 물론 기반 블루프린트도 만들었기에 프로퍼티 설정도 해주었다.
ㆍ 파일 경로같은거도 C++에서 path를 입력 해 불러올 수는 있지만 그거보단 그냥 에디터상에서 넣는게 더 효율적이겠다(경로 바뀌면 못찾을거아냐) 따라서 EditAnywhere를 해줬다
ㆍ 구조체도 마찬가지로 전방선언을 통해 사용했다(주소값을 가져오는것이기에 가능, 만약 값타입이였다면 안된다)
#Cpp
ㆍ 파일네임은 경로 cpp에서 하기보단 그냥 블프에서 넣어주는거로 하는게 덜 억지일듯? 수퍼클래스초기화를 진행해주고
ㆍ BeginPlay에서 향상된인풋... 뭐 이런게 있어서 가져왔다.
ㆍ AR1Pwan에 기본으로 생성되었던 SetupPlayerInputComponent 함수에 주석이 이렇게 달려있었다.
인풋 함수를 바인드해서 써라 다양한 옵션들이있다.
ㆍ 들어가는 인자를 보고 뭘 넣어야할지 추론해서 잘 넣어주자
ㆍ 부드럽진않지만 대충 테스트용 이동 코드는 완성되었다.
에디터에서 연결해주려고 생성자에서 연결 안해준것들을 다 연결해주고..!
월드 세팅에서 플레이어 컨트롤러 클래스를 정해주면 잘 이동한다.
'언리얼엔진 > 언리얼 C++' 카테고리의 다른 글
Character와 카메라가지고 장난쳐보기 (0) | 2024.10.14 |
---|---|
Control Rotation (0) | 2024.10.14 |
Pawn (2) | 2024.10.12 |
상대좌표와 엑터의 계층구조 (1) | 2024.10.11 |
벡터(수학)와 Actor의 이동 (0) | 2024.10.11 |