Unreal 캐릭터 - 플레이어 마우스 이동, 입력키 바인딩, 스테이트머신

2025. 4. 4. 19:35·Unreal5 프로젝트 다이어리

언리얼엔진을 켜서 새로운 프로젝트를 만든뒤 빈 프로젝트로 생성했기때문에

디폴트폰도 존재하지않는다.

그래서 처음부터 캐릭터를 만들어주고 입력을 받을수있는 액션맵핑작업을 해주도록 하겠다.

 

액션매핑에 RightClick 추가

 

그리고 액션매핑을 사용할 플레이어 컨트롤러를 C++클래시스를 추가한다

InputMouseRightPressed / Released 함수 즉 마우스를 클릭하고있을대와 놨을때

이동을 하게만들어볼생각이다.

일단 그전에 마우스가 언리얼엔진에서 보이질않으니 마우스를 보이게해본다

bShowMouseCursor를 true로 하면 마우스가 보인다

아까 미리 만들어놨던 RightClick의 액션매핑과 바인드를 해준다

바인드를 해줄 대상은 아까 만들어놨던 InputMouseRightPressed함수와 Released함수이다

나는 InputMouseRightPressed를 true값으로 Released값을 false값으로 할 예정이다

캐릭터의 이동관련 함수를 짜기전 나는

NavigationSystem과 AIModule을 사용할예정이기 때문에

Build.cs에 들어간뒤

해당부분을 추가해준다

해당부분의 코드

SetNewDestination이란 함수를 만들어준다

해당함수는 GetPawn으로 게임내의 폰을 가져온뒤

SimpleMoveToLocation으로 이동시키는 함수이다

MoveToMouseCursor함수를 통해 마우스가 클릭되었을때 임팩트포인트 즉 클릭지점에 이동할수있도록 해준다

완성이되면 플레이어 틱을 통해

게임내에서 계속 작동을 하게 해준다

(Super명령어를 까먹지말고 꼭 적어주도록 한다)

PlayerTick에서의 완성된 코드이다

전체코드이다

플레이어를 컨트롤시킬 컨트롤러를 다 만들었으니 이제 진짜 내 캐릭터를 만들어보자

캐릭터의 카메라 컨셉은 탑뷰 이다

탑뷰라는 조건을 만족시키기 위한 SpringArmComponent와 CameraComponent를 설정해주자

.h의 코드이다

CameraComponent와 SpringArmComponent를 선언

해당 코드를 통해 topview조건을 만족해줬다

그리고 ConstructorHelper를 사용해 내가 가지고있는 스켈레탈 메시의 에셋을 할당

위치에 맞게 location과 rotation을 변경해주었다

자 이제 캐릭터를 움직일 플레이어컨트롤러와 플레이어 두개를 만들었으니

블루프린트로 만들어서 작동해볼시간이다

캐릭터가 할당된 모습
카메라 설정이 된 모습

이제 캐릭터의 애니메이션을 담당할 블렌드스페이스 작업을 해보자

블렌드스페이스1D로 생성

가로축을 GroundSpeed 이름으로 바꿔주고 최대측값을 600 스무딩을 0.2로 바꿔준다

그리고 0에는 idle(기본상태) max인600에는 run을 서정해준다

그리고 애님인스턴스를 제작해준다

부모클래스는 AnimInstance로 제작

GroundSpeed와 BhasAcceleration선언\

아까 블렌드스페이스에서 사용해줄 변수 GroundSpeed변수와

움직임값을 받았는지 확인해줄 bool변수 BHasAcceleration변수를 지정해주었고

 

내가 기본적으로 만들어준 캐릭터 SwordCharacter값을 받을수있는 swordCharacter으로 캐스팅해주고

TryGetPawnOwner()로 나의 폰을 들고온뒤 그걸 swordCharacter에 할당해줬다

그리고 NativeThreadSafeUpdateAnimation에서 tick처럼 계속 애니메이션을 업데이트해주는거같은데

swordCharacter의 2d velocity를 들고와서 GroundSpeed값이 조금이라도 있으면

아까 만들어놓은 BHasAcceleration값을 true로 변경해주었다

이렇게 방금만든 애님인스턴스를 종속한 BP도 만들어주었고

기본적인 statemachine의 설정을 해준다

기본적인 Idle-> Walk 두가지만 있으면된다

Idle -> Walk 갈때

Walk -> Idle갈때

미리 만들어놓은 변수노드에 연결해주면된다 (Not노드는 bollean노드이다)

AS_idle에는 idle애니메이션을 추가해주고 무한루프로 해준다

AS_walk에 들어가면 애니메이션만 넣고 끝이 아니고 

아까만들어놨던 블렌드스페이스를 추가해준다 (중앙의 초록색노드)

그리고 변수값과 연결시켜준다 그리고 이제 캐릭터에게 할당만 시켜주면 적용이된다

이렇게 애님클래스에 내가 만들어둔 애니메이션인스턴스를 할당시키면 끝!

자 그럼 아까 AIModule과 NavigationSystem을 사용하기 위에 게임엔진필드내에

네비메시 바운드볼륨을 깔아준다

 

 

 

나의 캐릭터가 생기고 움직이는걸 확인할수있다

'Unreal5 프로젝트 다이어리' 카테고리의 다른 글

Unreal 캐릭터 - 위젯애니메이션  (0) 2025.04.04
Unreal 캐릭터 - UI위젯과 동기화  (0) 2025.04.04
Unreal 캐릭터 - 움직임의 제약(선딜과 후딜)  (0) 2025.04.04
Unreal 캐릭터 - 콤보어택  (0) 2025.04.04
Unreal 캐릭터 - 소켓의 활용, 외부에셋활용, 칼들려주기, 모드의구분  (0) 2025.04.04
'Unreal5 프로젝트 다이어리' 카테고리의 다른 글
  • Unreal 캐릭터 - UI위젯과 동기화
  • Unreal 캐릭터 - 움직임의 제약(선딜과 후딜)
  • Unreal 캐릭터 - 콤보어택
  • Unreal 캐릭터 - 소켓의 활용, 외부에셋활용, 칼들려주기, 모드의구분
lucodev
lucodev
커피와 노트북 그리고 개발
  • lucodev
    루코 개발테이블
    lucodev
  • 전체
    오늘
    어제
    • 분류 전체보기 (166) N
      • Unreal5 프로젝트 다이어리 (73)
      • Unreal5 프로젝트 다이어리2 (11) N
      • Unreal 팁 (8)
      • Unreal 디버깅 (8)
      • 코드 개인보관함 (8)
      • C++ 프로그래머스 다이어리 (47)
        • Stack,Queue (6)
        • Hash (4)
        • Heap (2)
        • Sort (5)
        • Exhaustive search (5)
        • Greedy (2)
        • BFS , DFS (6)
        • Graph (2)
        • Dynamic Programming (1)
        • C++ Math (2)
        • 기타 문제 (11)
      • 코딩테스트+@ (7) N
      • 알고리즘 스타디 (1)
      • 알고리즘 스타디 과제 (3)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 링크

  • 공지사항

  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 태그

    언리얼 비헤이비어트리
    unreal 시퀀스
    언리얼 시퀀스
    unreal loading
    unreal sequence
    언리얼 컷씬
    언리얼 look at
    언리얼 motionmatching
    언리얼 로딩
    언리얼
    언리얼 로딩창
    언리얼 페이드 아웃
    언리얼 behavior tree
    unreal 로딩
    unreal 컷씬
    언리얼 foot step
    언리얼 모션매칭
    언리얼 behaviortree
    unreal 모션매칭
    unreal look at
  • hELLO· Designed By정상우.v4.10.3
lucodev
Unreal 캐릭터 - 플레이어 마우스 이동, 입력키 바인딩, 스테이트머신
상단으로

티스토리툴바