기존 이동 : 카메라 시선에 따라 이동 또는 방향키를 정면으로 이동 (X축 이동만 한다.)
무기 장착 이동 : 카메라 시선에 따라 이동하지만 방향키는 X Y 축이동을 한다.
무기 장착 이동을 위해 애니메이션 블랜딩을 생성한다.
콘텐츠 브라우저 우클릭 - 애니메이션 - 블렌드 스페이스(1D 가 아닌것을 선택한다.) - 애니메이션 스켈레톤 선택
2D는 축이 하나 더 생성된다.
축은 이름을 지정해서 변수로 가져올 수 있다.
좌측 상단에 트라이앵글화 표시 끄고, Shift + 드래그로 애니메이션을 놓는다면 점에 딱딱 놓을 수 있다.
속도 0 : 모든 각도에서 Idle을 실행한다.
속도 400 : 걷기 동작을 실행한다.
180 : 뒤
-90 : 좌측
0 : 정면
90 : 우측
180 : 뒤
속도 600 : 달리기 동작을 실행한다.
생성한 블랜드 스페이스를 애님 그래프에 배치한다.
ABP 파일 - Anim Graph - 에셋 브라우저 - 만든 블랜드 스페이스 배치
가로축 값(Direction)과 세로축 값(Speed)를 할당 해줘야한다.
무기 장착 동작에서 남은시간이 0.3(70% 이상 동작을 진행했을때) 동작을 전환한다.
블랜드 스페이스 노드 클릭 - 디테일 - 애님 프리뷰 에디터 - 루트 모션 - 루트 모션 모드 : Ignore Root Motion ⇒ 루트모션을 무시하고 제자리에서 움직이도록 설정한다.
Direction 값 세팅하기
ABP 파일 - 이벤트 그래프 - 1번 시퀀스 - 배치된 Player 변수에서 Get Control Rotation 검색 - Calculate Direction 검색 후 연결 - Direction 변수 생성 후 연결 - 애님 그래프 블랜드 스페이스 노드에 변수 연결
Control 노드를 찾으면 카메라를 의미하는 것이다.
Get Control Rotation : 카메라의 회전값을 가져온다는 의미다.
Calculate Direction : 플레이어의 속도와 카메ㅇ라의 회전값을 가지고 현재 각도가 얼마인지 알려주는 함수다.
무기 장착 이동 회전 전환
캐릭터 블루프린트 파일 - 커스텀 이벤트 생성(장착 종료 이벤트) - 캐릭터 무브먼트를 끌어서 노드로 만든다. - Set Orient Rotation to Movement 검색 후 옵션 체크를 해제한다. - Set Use Controller Rotation Yaw 검색 후 옵션 체크한다.
무브먼트 방향으로 회전 : 체크하면 키보드 입력 대로 캐릭터의 정면 벡터를 바꿔서 회전시킨다.
컨트롤러 ‘요’ 사용 : 체크를 끄면 마우스로 카메라를 사용할 수 있게 된다.
Set Orient Rotation to Movement : 무브먼트 방향으로 회전 옵션을 세팅할 수 있게 하는 함수다.
Set Use Controller Rotation Yaw : 컨트롤러 ‘요’ 사용 옵션을 세팅할 수 있게 하는 함수다.
장착 종료 이벤트를 연결할 노티파이 생성
콘텐츠 브라우저 - 블루프린트 클래스 - 모든 클래스에서 notify 검색 후 Anim Notify 클릭 - Get Notify Name에서 이름 지정 - Get Received_Notify 클릭 - Mesh Component 핀을 끌고 Get Owner 검색 후 연결 - 반환 핀을 끌어서 ‘캐릭터 블루프린트 클래스’ 이름 검색 - 캐릭터 반환 레퍼런스 핀 끌어서 노티파이에 연결할 ‘커스텀 이벤트 이름’ 검색 후 연결
Get Notify Name : 노티파이 배치할때 띄워지는 이름
Get Owner : 여기서는 핻ㅇ 노티파이를 가지고있는 ‘액터 클래스’를 가져온다.
이걸 다운 캐스팅하고 사용한다.
애니메이션에 생성된 노티파이 배치
이벤트 넣을 애니메이션 클릭 - 노티파이 넣을 트랙 줄 확인하고 우클릭 - 노티파이 추가 - 새 노티파이에서 노티파이 이름 검색 후 클릭
검 애니메이션 - 무기 집어넣기
장착을 해제하려면 장착이 되어있는것을 확인해야한다.
bool 변수로 확인
이벤트 그래프 - Equip Sword 접은 노드 클릭 - ‘무기 장착 됨’ 확인 변수 생성 - 장착 종료 이벤트에 ‘장착중’ 변수 Set으로 연결 후 체크 해제 - ‘장착됨’ 변수 연결 후 체크 ⇒ 장착이 종료되었다면 장착중이 아니니 ‘장착 중’은 false로 설정하고, ‘장착 됨’ 변수는 true로 설정한다.
Sword 입력 이벤트 클릭 - Pressed에 Branch 연결 후 Condition에 ‘장착됨’ 변수 연결 - false에 Equip 커스텀 함수 검색 후 연결 ⇒ ‘Sword’ 키를 눌렀을 때 ‘장착됨’ 변수가 false라면 Equip 이벤트를 실행하라는 의미다.
커스텀 함수 검색해서 장착 해제 이벤트 생성 - 장착 해제 중 확인 변수 생성 - Branch 겸색 후 ‘장착 해제 중’ 변수 연결 - false에 ‘장착해제중’ 변수를 Set으로 연결하고 true로 체크한다. ⇒ 이벤트가 실행됬을 때 장착 해제 중이 아니라면 장착 해제 중 변수를 키라는 의미다.
커스텀 함수 검색해서 장착 해제 시작 이벤트 생성 - Attach Actor To Component 검색해서 ‘검 변수’와 ‘메시’ 노드를 끌고와서 연결한다. - End_Equip 이벤트의 순서와 같으나 옵션 체크가 반대로 이뤄진다. ⇒ 장착 해제 관련 이벤트 생성
Equip 노티파이 Begin ‘ End 복사 후 클릭 - 이름과 이벤트를 ‘장착 해제’로 바꾼다.
ABP 파일 클릭 - 무기 해제 애니메이션 배치하고 연결 - 장착 상태에서 해제 모션 들어가는 조건 설정 - 장착해제 변수 생성 후 Get 으로 연결 - 다음 조건 : Time Remaining(ratio) 검색 후 0.3보다 낮을 때 로 설정해서 연결 - 다음 조건 : Time Remaining(ratio) 검색 후 0.3보다 낮을 때 로 설정해서 연결 ⇒ 애니메이션 배치 후 조건 설정
ABP 파일 클릭 - 이벤트 그래프 - 배치되어있는 플레이어 변수 노드 핀을 하나 더 끌어서 ‘장착 해제 중’ 변수 검색 - 장착 중 Set 변수의 핀을 끌어서 ‘장착해제중’ Set 변수를 연결하고, 캐릭터의 ‘장착해제중’ 변수 노드를 연결한다. ⇒ 조건에 들어갈 값 할당
노티파이 들어갈 애니메이션 클릭 - 노티파이 들어갈 트랙에 우클릭 - 노티파이 배치
캐릭터 블루프린트 - Sword 입력 이벤트 노드 확인 - Branch의 true 핀을 끌어서 ‘장착 해제 이벤트’ 검색
애니메이션 노티파이 생성 순서
캐릭터 블루프린트에서 커스텀 이벤트 생성
ex. 장착 이벤트, 장착 해제 이벤트
전체 이벤트, Begin, End 하나씩 생성
이벤트 실행 여부를 변수(bool 형)으로 확인
장착은 움직임 막기
애님 블루프린트 클래스 생성
이름, 기능 정의
Get Owner(애니메이션 할당한 캐릭터), 할당한 캐릭터로 클래스 형변환, 반환 연결
애니메이션 블루프린트에 애니메이션 넣어서 순서대로 연결
애니메이션이 넘어가는 변수는 이벤트 그래프에서 값을 정의한다.
캐릭터 변수 - 해당 캐릭터의 블루프린트가 갖고 있는 변수 - 값 설정
애니메이션에 노티파이 할당
애니메이션에 노티파이를 놓을때 0(최초) 또는 100(끝)에 이벤트를 놓으면 무시 될 가능성이 있기 때문에 살짝 띄워줘야한다.
장착 및 해제 중 이동 정지
캐릭터 블루프린트 - 이벤트 그래프 - 이동 관련 노드 확인 - ‘이동 가능’ 확인 변수 생성하고 처음부터 움직일 수 있도록 기본값을 true로 체크한다. - ‘정면 이동’ 이벤트 핀을 끌어서 Branch 검색후 Condition에 ‘이동 가능’ 변수 연결 - ‘측면 이동’ 이벤트에도 Branch와 ‘이동 가능’ 변수 연결 ⇒ 이동 시 이동가능한지 확인
이벤트 그래프 - 무기 장착 노드 확인 - 장착 이벤트에 ‘이동 가능’변수를 Set으로 연결하고 체크를 해제한다. - 장착 종료 이벤트에 ‘이동 가능’ 변수를 Set으로 연결하고 체크한다. - Unequip 이벤트 들에도 연결하고 설정한다. ⇒ 이동 가능 변수 값 세팅
애니메이션 루트 모션 설정
In Place로 설정하는 방법
이동 애니메이션 클릭 - 에셋 디테일 - 루트모션 - ‘루트 모션 활성화’ 체크 해제 - ‘루트 강제 잠금’ 체크
몽타주
한번만 작동하는 애니메이션
점프도 원래 몽타주가 맞긴 하다.
공격
액션 몽타주 생성
한번만 실행될 애니메이션 우클릭 - 생성 - 애님 몽타주 생성 클릭
액션 입력 키 세팅
편집 - 프로젝트 세팅 - 엔진 - 입력 - 액션 매핑 + 버튼 - 이름과 버튼 지정
액션 입력 이벤트 설정
캐릭터 블루프린트 - 이벤트 그래프 - ‘액션 키’ 이름 검색 - Pressed 핀 끌고 ‘Play Anim Montage’ 검색
Play Anim Montage : 애니메이션 몽타주 플레이 함수
Anim Montage : 어떤 애니메이션 몽타주를 실행할지 선택하는 옵션
in Play Rate : 몽타주 실행 속도
몽타주 - DefaultSlot : 몽타주를 어떤 그룹네서 실행시킬 것인지 설정
다른 그룹을 생성해서 본 마다 그룹을 지정해서 움직임을 다르게 섞을 수 있다.
유니티의 마스크 역할이다.
몽타주 플레이 슬롯 설정
ABP 파일 - Anim Graph - 스테이트 머신 핀 끌고 ‘몽타주 슬롯 이름’ 검색 (DefaultSlot을 연결하면 DefaultSlot 그룹에 속한 몽타주를 실행한다.)
무기를 들었을 때만 공격 실행 설정
캐릭터 블루프린트 - ‘액션’ 이벤트 핀 끌고 Branch 검색 ‘장착 됨’ 변수를 연결하고 True핀과 다음 노드를 연결 ⇒ 무기가 장착 됬을때만 액션 실행
공격 한번만 실행 설정
캐릭터 블루프린트 - ‘공격 중’ 변수 생성 - 장착 확인 Branch의 True 핀을 끌어서 또 다른 Branch 검색 - COndition에 ‘공격 중’ 변수를 연결 후 False핀을 ‘공격 중’ Set 노드에 연결하고 True로 체크하고 다른 노드와 연결한다. ⇒ 공격중이 아닐때 다른 노드로 진행되게하고, 넘어왔으니 공격중을 True로 바꾼 다음 애니메이션을 실행한다.
변수 설정을 먼저하는 이유 : 진행 조건 세팅이 어디에서 되는지 잘 보이지 않기 때문이다.
공격 종료 이벤트 설정
캐릭터 블루프린트 - ‘공격 종료’ 커스텀 이벤트 생성 후 ‘공격 중’ Set 노드와 연결 후 체크 해제
콘텐츠 브라우저 - End_장착해제와 비슷하기에 복사 - 이름 변경과 이벤트 연결 변경
몽타주 파일 클릭 - 노티파이 트랙 우클릭 - 추가 후 ‘공격 종료’ 이벤트 할당
애니메이션 몽타주 끝나면 entry로 들어가서 다른 애니메이션으로 들어가는 문제
해결법 : 2개 동시 실행
언암드 → 실행 결과 저장(Cache Pose 라고 한다.)
Pose(Sword) → 블랜딩 → 휘두르고 처음으로 돌아가야하지만 블랜딩이 되어있어서 다시 Sword 상태로 돌아가게 된다.
Pose(Action) → 몽타주 Slot → 블랜딩
유니티에는 없는 기능이다. ⇒ 아바타 마스크는 관절이 정해져있지만, 언리얼은 모든 본에 가능하다.