Unreal 캐릭터 - 소켓의 활용, 외부에셋활용, 칼들려주기, 모드의구분

2025. 4. 4. 20:12·Unreal5 프로젝트 다이어리

이번에는 기본모드와 칼든액션 두가지를 만들어보자

내가 가지고있는 캐릭터에 다른데서 들고온 모션을 합치고싶을때

 

예전 언리얼버전에서는 리타게팅을 직접 발끝부터 머리끝까지 ik_tetargeter로 맞춰야했는데

5.4버전업데이트 이후에는 자동 리타게팅 기능이 지원되게 바뀌었다

오오...영롱한 기능이로다

리타겟 애니메이션을 누르고 타깃에 내가 적용시키고싶은 캐릭터를 넣어준뒤

원하는 애니메이션을 선택해준다

그러면 자동으로 리타게팅된 애니메이션 시퀀스가 생성이 된다

 

 
이렇게 idle애니메이션과 walk애니메이션을 리타게팅해서
애니메이션 블렌드스페이스 젤앞쪽(0)과 젤뒤쪽(600)에 넣어주면
달리는 애니메이션블렌드스페이스가 만들어진다

그럼 이제 tab을 눌렀을때 적용되도록 해주자

다시 그러면 기초적인 바인드작업부터

 

인풋 추가해주고!

요로코롬 Tab을 바인드 해준다!

그러면 이 바인드한 Tab 키를 눌렀을때 저 액션으로 변경하게 해주면된다

​

myPawn 즉 내캐릭터는 계속 사용할예정이니 전역변수로 바꿔주고

AnimClass를 변경하기 위해 UAnimInstance를 불러주기위해

이렇게 TSubclassOf로 참조 선언해준다

그리고 생성자에서

이렇게 클래스파인더로 attackAnimClass에 할당

(*컨퍼런스복사할떄 앞에부분을 잘 지우고 /game/부터 그리고 뒤에 _C를 넣어줘야함)

그리고 attackAnimInstance에 할당해준다

그다음 아까 할당해준 attackAnimInstance를

SetAnimInstanceClass에 적용해준다

SetAnimInstanceClass는 USkeletalMeshComponent안에 있다

 

그리고 루트모션이 틀어지지않게 고정해주는작업을해준다

루트 강제 잠금옵션을 체크해서 강제로 잠궈버릴수있다

(이작업을 안하면 캐릭터가 중앙에서 벗어나버려서 루트와 캐릭터의 애니메이션이 따로 논다)

잠궈주고 테스트를 해보자

 

해당된 애니메이션으로 잘 바뀌는걸 확인할수있다

 

이제 칼을 들려주자

모든 에셋을 마켓플레이스에서 다 들고올수있으면 좋겠지만

그러면 돈이 엄청나게 들겠죠?

그래서 SketchFab이라는곳에서 소스를 들고와서 사용해보도록하겠습니다

https://sketchfab.com/feed

 

 

 

 
 
 
 

 

 

Log in to your Sketchfab account

 

sketchfab.com

Sketchfab이라는 여러가지 에셋파일들을 제공해주는 사이트이다

여러가지 에셋이 많아 자주 사용하고있습니다

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

내파일에 임포트시키고

확인해보자

어떤 모델은 한개의 모델이 완성되어서 색상도 정상이고 한개의 모델만 있는경우도있지만

지금 다운받은 모델처럼 여러개로 나누어져있고 색도 흰색으로 나오지않는경우가 있습니다

이럴때는 메테리얼이 빠져있고 나누어진건 합치면됩니다

Actor Combine

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를 제어해보겠다

swordCharacter->bhasAttackMode = !swordCharacter->bHasAttackMode로 토글기능을 만들어줬다

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
'Unreal5 프로젝트 다이어리' 카테고리의 다른 글
  • Unreal 캐릭터 - UI위젯과 동기화
  • Unreal 캐릭터 - 움직임의 제약(선딜과 후딜)
  • Unreal 캐릭터 - 콤보어택
  • Unreal 캐릭터 - 플레이어 마우스 이동, 입력키 바인딩, 스테이트머신
lucodev
lucodev
커피와 노트북 그리고 개발
  • lucodev
    루코 개발테이블
    lucodev
  • 전체
    오늘
    어제
    • 분류 전체보기 (122) N
      • Unreal5 프로젝트 다이어리 (73)
      • Unreal5 프로젝트 다이어리2 (4) N
      • Unreal 팁 (8)
      • Unreal 디버깅 (8)
      • C++ 프로그래머스 다이어리 (21)
        • Stack (3)
        • Hash (4)
        • Heap (2)
        • Sort (1)
      • 코드 개인보관함 (8) N
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 링크

  • 공지사항

  • 블로그 메뉴

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

    unreal loading
    unreal 로딩
    unreal look at
    언리얼
    언리얼 behaviortree
    언리얼 모션매칭
    unreal 컷씬
    언리얼 시퀀스
    언리얼 로딩창
    언리얼 비헤이비어트리
    언리얼 behavior tree
    언리얼 컷씬
    언리얼 페이드 아웃
    언리얼 foot step
    언리얼 로딩
    언리얼 motionmatching
    언리얼 look at
    unreal 모션매칭
    unreal 시퀀스
    unreal sequence
  • hELLO· Designed By정상우.v4.10.3
lucodev
Unreal 캐릭터 - 소켓의 활용, 외부에셋활용, 칼들려주기, 모드의구분
상단으로

티스토리툴바