이번에는 기본모드와 칼든액션 두가지를 만들어보자
내가 가지고있는 캐릭터에 다른데서 들고온 모션을 합치고싶을때
예전 언리얼버전에서는 리타게팅을 직접 발끝부터 머리끝까지 ik_tetargeter로 맞춰야했는데
5.4버전업데이트 이후에는 자동 리타게팅 기능이 지원되게 바뀌었다
리타겟 애니메이션을 누르고 타깃에 내가 적용시키고싶은 캐릭터를 넣어준뒤
원하는 애니메이션을 선택해준다
그러면 자동으로 리타게팅된 애니메이션 시퀀스가 생성이 된다

그럼 이제 tab을 눌렀을때 적용되도록 해주자
다시 그러면 기초적인 바인드작업부터


요로코롬 Tab을 바인드 해준다!
그러면 이 바인드한 Tab 키를 눌렀을때 저 액션으로 변경하게 해주면된다
myPawn 즉 내캐릭터는 계속 사용할예정이니 전역변수로 바꿔주고
AnimClass를 변경하기 위해 UAnimInstance를 불러주기위해

이렇게 TSubclassOf로 참조 선언해준다
그리고 생성자에서

이렇게 클래스파인더로 attackAnimClass에 할당
(*컨퍼런스복사할떄 앞에부분을 잘 지우고 /game/부터 그리고 뒤에 _C를 넣어줘야함)
그리고 attackAnimInstance에 할당해준다

그다음 아까 할당해준 attackAnimInstance를
SetAnimInstanceClass에 적용해준다
SetAnimInstanceClass는 USkeletalMeshComponent안에 있다
그리고 루트모션이 틀어지지않게 고정해주는작업을해준다

루트 강제 잠금옵션을 체크해서 강제로 잠궈버릴수있다
(이작업을 안하면 캐릭터가 중앙에서 벗어나버려서 루트와 캐릭터의 애니메이션이 따로 논다)
잠궈주고 테스트를 해보자

해당된 애니메이션으로 잘 바뀌는걸 확인할수있다
이제 칼을 들려주자
모든 에셋을 마켓플레이스에서 다 들고올수있으면 좋겠지만
그러면 돈이 엄청나게 들겠죠?
그래서 SketchFab이라는곳에서 소스를 들고와서 사용해보도록하겠습니다
Log in to your Sketchfab account
sketchfab.com
Sketchfab이라는 여러가지 에셋파일들을 제공해주는 사이트이다
여러가지 에셋이 많아 자주 사용하고있습니다

내가 원하는 모델을 다운하고

내파일에 임포트시키고
확인해보자

어떤 모델은 한개의 모델이 완성되어서 색상도 정상이고 한개의 모델만 있는경우도있지만
지금 다운받은 모델처럼 여러개로 나누어져있고 색도 흰색으로 나오지않는경우가 있습니다
이럴때는 메테리얼이 빠져있고 나누어진건 합치면됩니다
tool 옵션에 들어가면 해당창이 있다
액터병합으로 합쳐주고
그리고 빠진 메테리얼을 연결해준다
요렇게!
그러면 메테리얼을 갈아끼고 콤바인 시킨 내 검을 확인해보자
제데로 임포트 되어있는걸 확인할수있다
그러면 이 검을 달아줄 소켓을 달아주자
오른손에 RightHandSocket이라고 달아줬다
UStaticMeshComponent로 basicSwordMesh로 내가 달아줄 칼 컴포넌트를 만들고
오브젝트파인더로 칼을 할당
그리고 RightHandSocket에 attach시켜준다
확인해보면
칼이 RightHandSocket에 붙었다
이제 칼을 맞는 방향으로 돌려주자
방향을 얼추 맞춰주었다
코드도 수정해주자
pitch yaw roll에 유의해서 세팅해주자
(블루프린트에서 보이는 순서와 코드에서 사용하고있는 순서와 다름)
기본 베이직 모드에서는 칼을 들고있지않은 맨손 상태이므로
tab을 눌렀을때 칼을 보이게 해야한다
tab을 눌렀을때는 플레이어 컨트롤러에서 처리해주기떄문에
플레이어컨트롤러에서 GetPawn()에서 캐스팅되어있는 myPawn에서
SetVisibility를 tab눌렀을때만 보이게 처리해줬다
(여기서 플레이어 컨트롤러에서 swordCharacter 캐스팅 작업에서 이상한곳에서 삽질을 무려 한시간이나했다
생성자에서 캐스팅작업을 했는데 자꾸 swordCharacter가 Null이 뜨는것이였다
알고보니 생성자에서 캐스팅을 하면 그 시점에는 pawn이 생성이 되어있지않기때문에
getpawn해도 null 이였던것이였다 게임이 시작하고 난뒤 해당 함수에 캐스팅을 하니 잘 보인다)

이제 확인해보면 가만이있을때는 그냥 칼없이 달리다가
tab을 누루면 칼이 나오고 전투태세가 나온다
현재 tab을 누루면 전투태세에 들어가는데 다시 일반모드로 돌아가는 기능이없다
구현해보자
이럴때 필요한 기능은 토글기능
On / Off를 할수있는 기능이다
캐릭터 cpp에 다시 들어가서
bHasAttackMode라는 bool변수로 on과 off를 제어해보겠다

bHasAttackMode가 True일때 칼이 보이고 attackAnimInstance를 들고있고
bHasAttackMode가 False일때 칼이 보이지 않고 originAnimInstance를 들고있게 만들었다

이제 tab을누르면 공격모드와 일반모드를 자유롭게 드나들수있게되었다
'Unreal5 프로젝트 다이어리' 카테고리의 다른 글
Unreal 캐릭터 - 위젯애니메이션 (0) | 2025.04.04 |
---|---|
Unreal 캐릭터 - UI위젯과 동기화 (0) | 2025.04.04 |
Unreal 캐릭터 - 움직임의 제약(선딜과 후딜) (0) | 2025.04.04 |
Unreal 캐릭터 - 콤보어택 (0) | 2025.04.04 |
Unreal 캐릭터 - 플레이어 마우스 이동, 입력키 바인딩, 스테이트머신 (1) | 2025.04.04 |