언리얼엔진을 켜서 새로운 프로젝트를 만든뒤 빈 프로젝트로 생성했기때문에
디폴트폰도 존재하지않는다.
그래서 처음부터 캐릭터를 만들어주고 입력을 받을수있는 액션맵핑작업을 해주도록 하겠다.
그리고 액션매핑을 사용할 플레이어 컨트롤러를 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을 변경해주었다
자 이제 캐릭터를 움직일 플레이어컨트롤러와 플레이어 두개를 만들었으니
블루프린트로 만들어서 작동해볼시간이다
이제 캐릭터의 애니메이션을 담당할 블렌드스페이스 작업을 해보자
가로축을 GroundSpeed 이름으로 바꿔주고 최대측값을 600 스무딩을 0.2로 바꿔준다
그리고 0에는 idle(기본상태) max인600에는 run을 서정해준다
그리고 애님인스턴스를 제작해준다
부모클래스는 AnimInstance로 제작
아까 블렌드스페이스에서 사용해줄 변수 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 |