Unreal 21/Game Make Study

UE4_02. 마우스로 캐릭터 움직이기

DDing_h 2021. 12. 9. 23:14

마우스로 캐릭터를 움직여보자!!
마우스로 캐릭터를 움직이는 아주아주 쉬운 방법과 쪼금 귀찮은 방법 두가지를 공부해 보았다.

매우 쉬운 방법!
콘텐츠 팩을 추가하여 언리얼 마네킹 불러오기!
임포트 버튼만 누르면 되는 아주아주 쉬운 방법!

언리얼 엔진 메인화면에 있는 추가/임포트 화면을 누르면 된다!
버튼을 누르면 콘텐츠-> 피처 또는 콘텐츠 팩 추가 -> 내려보기 클릭후 프로젝트에 추가 하면 된다.
물론 게임모드에 세팅된 PawnClass와 Player Controller Class를 불러온 것으로 변경해 주어야 한다.


공부를 위해 직접 만들어보자!
(사실 내려보기에 있는 언리얼엔진 마네킹의  블루프린트를 따라해 보았다.)
좋은게 좋은거니까 그냥 해보자!
새로운 플레이어 컨트롤러를 만들기
블루프린트클래스 만들기 -> 부모클래스 Player Controller로 컨트롤러를 만든다.

부모클래스를 Player Controller로 만든다!

본인은 BP_PlayerController라고 이름 지었다.


월드세팅 수정하기
월드 세팅에 만들어둔 게임모드에 컨트롤러를 추가해주자.

가끔씩 만들어두고 세팅을 하지 않는 불상사가 발생하곤 한다. 그러니 자나깨나 기억해두자!
월드세팅에 게임모드 오버라이드를 만들어준 게임모드로 바꿔준 뒤 Pawn Class를 본인이 움직일 캐릭터로, Player Controller Class를 본인이 만들어준 컨트롤러로 바꾸어 주면 된다.


PlayerController 이벤트 그래프 작성하기
이벤트그래프 내 함수를 만들고(사실 굳이 안만들어도 됨) 작성하기

함수만들기 어떻게 하는지 까먹을까봐 넣어봤다

본인은 MoveToHitLocation이라고 이름 지었다. (마네킹과 이름 똑같이 지었다.)
MinClickDistance라는 float형식의 변수도 만들어 두었다. 이름 그대로 클릭 최소 거리를 뜻한다.

함수의 입력 부분이다

두 점 사이의 거리를 구한다고 생각하면 될 것같다.(내가 생각하기엔 그렇다.)
컨트롤 되고있는 폰(BP_Player)의 위치와 마우스의 위치를 빼 벡터를 반환하고 반환된 벡터의 값이 클릭의 최소거리보다 크거나 같을경우(120으로 설정하였으며 수정 가능하다) 마우스의 위치를 목표로 이동하게 되는 함수이다.

  • Hit Result
    -> Hit 관련 정보를 모아둔 변수 라고 생각하자
  • Break Hit Result
    -> Hit 관련 정보를 쪼개어 원할 때 쓸 수 있게 추출한 값이다.
  • Min Click Distance
    -> float로 본인이 직접 만든 변수이며 클릭할 수 있는 최소거리를 뜻한다.
  • Simple Move to Location
    -> 언리얼에서 제공해주는 간단한 네비게이션이라고 생각하자
    -> 해당 위치로 이동할 수 있게 도와준다.
    함수를 사용하면 코드가 깔끔해지는 광경을 볼 수 있다.
    만들어 둔 함수를 다음과 같이 붙여 넣었다.
    매 프레임마다 이벤트를 발생시키는 Tick을 이용하여 오른쪽 마우스를 눌렀을때와 뗐을때에 대한 값을 만들어둔 함수를 실행하여 움직일 수 있게 하였다.

  • Tick
    -> 매 프레임 마다 이벤트를 발생시키는 노드
  • 오른쪽 마우스 버튼
    -> Input Mouse Right Button이라는 노드이며 마우스 오른쪽 버튼에 대한 이벤트이다
    -> Pressed : 눌렀을 때
    -> Released : 뗐을 때
  • Gate
    -> 노드의 실행 흐름을 조절할 때 쓰인다.
    -> Enter : 실행 신호를 받아 들인다.
    -> Open : 흐름을 열린 상태로 설정한다. (마우스를 눌렀을 때 이벤트가 발생되게 도와준다.)
    -> Close : 흐름을 닫힌 상태로 설정한다. (마우스를 뗐을 때 이벤트가 종료되게 도와준다.)
    -> Toggle : 상태를 반전시킬 때 쓰인다.
    -> Start Closed : Gate의 초기 상태를 나타낸다. 체크할 경우 닫힌상태이다.
  • Get Hit Result Under Cursor by Channel
    -> 마우스 커서아래 클릭한 곳과 상호작용이 일어나게 도와준다.
    -> Hit Result : 말 그대로 클릭한 곳의 결과 값이다. ( 다음의 경우에는 함수의 Hit Result와 이어져 위치를 읽는다. )

그 뒤 실행하면 다음과 같이 진행된다.

커서가 없어서 불편하다.

마우스 오른쪽 버튼을 눌렀을 때 원활하게 큐브가 움직이는 것을 볼 수 있다.
하지만 마우스 커서가 보이지 않아 매우 불편하다. 마우스 커서를 만들어보자