무기 스켈레톤 파일 우클릭 - 스켈레톤 - 스켈레톤 할당 - 원하는 스켈레톤 메쉬 선택 후 수락 바로 클릭
매테리얼
샘플링 : 해당 모델의 정점에 매핑하는 작업
텍스쳐 샘플 : 모델의 정점에 텍스쳐를 매핑하는 작업
[SM5] 오류 의미 : Shader Model 5.0 오류 라는 뜻이다. ⇒ DX11이 5.0이므로 언리얼은 DX11 기반으로 텍스쳐를 사용하고 있다는 의미이다.
각 항목에 연결된 텍스쳐 샘플의 텍스쳐에 알맞은 텍스쳐 파일을 선택하여 넣은 후 연결해야한다.
베이스 컬러 - Diffuse 파일
Metalic - Metalic 파일
러프니스 - Roughness 파일
Normal - Normal 파일
러프니스(거칠기) : 0이면 맨들맨들(거울처럼 반사)하고, 1일수록 거질어져서 상 반사가 안된다.
메탈릭 : 금속성 텍스쳐를 표시해주는 옵션이다.
연결 후 무기 스켈레톤 파일 더블 클릭 후 메테리얼 할당
노드접기
접을 노드 전체 드래그 - (노드에서) 우클릭 - 노드 접기 클릭
선택한 노드를 한 노드로 묶을 수 있다.
영역 묶기 : 묶을 노드 드래그 - (알파벳) c ⇒ 기능 별로 알아보기 쉽게 묶을 수 있다.
검 소환
검은 플레이어에게서 소환된다.
(플레이어) 이벤트 그래프 - SpawnActor From Class 검색 - Class : 스폰시킬 무기의 블루프린트 클래스 - Make Transform 검색해서 Spawn Transform 핀에 연결 - self(플레이어) 검색 후 Instigator 연결 - Sword 이름의 무기 블루프린트 오브젝트 레퍼런스 변수 생성 후 Set으로 배치 후 연결 - AttachActor To Component 검색 후 연결 - 캐릭터 스켈레톤 메쉬 끌어서 Parent에 연결 - 소켓 이름 넣기
SpawnActor From Class : 지정된 위치에 액터를 스폰 시도하는 함수다.
Spawn Transform은 기본값이 반드시 들어가야한다.
기본값이 반드시 들어가야하는지 확인하는 방법 : 기본값이 필요한데 없으면 컴파일에서 에러난다.
넣어야할 값이 구조체인지 알아보는 방법 : 핀을 끌고 Make를 쳐본다.
Make Transform이 나온다면 구조체다.
Instigator : 해당 액터가 가한 데미지 및 이벤트를 처리하는 폰 연결 핀
리플렉션 : 자료형을 변수처럼 다루는 기능이다. (C#에도 있다.)
클래스 타입을 넣으면 해당 클래스 타입으로 객체를 스폰을 시켜서, 화면에 배치된 그 결과를 리턴한다.
스폰시킬 클래스(블루프린트)를 만들어야한다.
콘텐츠 브라우저 - 우클릭 후 블루프린트 클래스 - 액터 클래스 선택 - 컴포넌트에 스켈레탈 메시 추가 - 디테일의 메시 - 무기 스켈레톤 메시 선택
무기를 휘두르고 데미지나 공격이벤트를 실행할 객체 ⇒ 플레이어
Attach Actor To (Actor or) Component : 액터에 붙일거냐 컴포넌트에 붙일거냐
캐릭터(액터)의 스켈레탈 메쉬에 붙일것이다.
Attach Actor To Actor : 액터끼리 붙일 때 사용한다.
액터 투 액터는 ‘소켓’을 사용할 수 없다.
타깃 : 캐릭터에 붙일 무기
Parent : 무기를 붙일 캐릭터 메쉬
Socket Name : 무기를 놓을 소켓
본 과 스켈레톤
두개는 다른것이다.
본 : 뼈와 뼈를 이어주는 관절들
스켈레톤 : 관절과 관절의 간격을 유지시켜준다.
오브젝트와 인스턴스도 다른것이다.
pelvis : 몸체
spine_01 : 허리 위 상체
thigh : 허리 아래 하체
홀스터 생성
장착 기준점 : 소켓
소켓 우클릭 - 프리뷰 생성 : 아무 기능 없지만 여기에 뭘 보여줄건지 미리 보여주는 기능이다.
무기 뽑기
액션 매핑 추가 - 캐릭터 블루 프린트 - 이벤트 그래프에서 액션 매핑 이벤트 검색 후 클릭 - Custom Event 검색 후 이름 작성 - 우클릭 후 생성한 커스텀 이벤트 이름 검색해서 Pressed에 연결 - ABP 캐릭터 - 이벤트 그래프에서 시퀀스 추가 - Drawing Set으로 배치 후 시퀀스에 연결 - 플레이어 변수 가져오고 Equipping 검색하여 연결하고 Drawing Set에 연결
플레이어에서 Equipping이 True 라면 Drawing이 True가 된다. ⇒ Equip 이벤트 실행
커스텀 이벤트 추가
애니메이션 이벤트
애니메이션 노티파이(이벤트)
노티파이 클래스를 만들어 쓰는법 (실무에선 이걸 쓴다.)
콘텐츠 브라우저 - 노티파이 클래스를 모아놓을 폴더 생성(보기 편하라고) - 우클릭 후 블루프린트 클래스 선택 - 모든 클래스에서 notify 검색해서 Anim Notify 클래스 선택 - 내 블루프린트의 함수 칸에서 오버라이드의 Get NOtify Name 클릭 - Return Value에 내가 정의할 이벤트의 이름을 정의한다. - 내 블루프린트의 함수 칸에서 오버라이드의 Received Notify 클릭 - Mesh Component에 Get Owner를 검색해서 연결 - 이벤트 연결할 애니메이션 더블클릭 - 이벤트 넣을 트랙에 우클릭 후 애니메이션 노티파이 클래스 이름 검색 후 클릭 - 원하는 애니메이션 동작에서 끌고 배치 - 노티파이 클래스 - Get Owner는 모든 액터를 가진 액터 클래스이니 이벤트를 실행할 캐릭터의 클래스로 ‘형변환’ 해줘야 한다. - 형변환 후 우클릭 후 실행할 이벤트의 이름 검색 후 반환 노드에 연결
모든 클래스는 ‘오브젝트’ 클래스를 상속받아 사용된다.
클래스 선택에서 활성화 안된 색의 클래스들은 C에서 사용하는 클래스로, 화면에 배치되지 않고 사용되는 클래스들이다.
Get Notify Name : 이벤트를 검색해서 이벤트그래프에 배치했을떄 나타나는 이름을 지정하는 함수다.
Received Notify : 발생할 이벤트를 정의하는 함수다.
Get Owner : 이벤트가 작동하는 메시의 소유주(캐릭터)를 반환한다.
블루프린트를 만들어 쓰는방법 (이건 좋은 방법은 아니다)
이벤트 넣을 애니메이션 더블클릭 - 위의 가로 4줄이 트랙으로 나눠진것이다. - 1번에 이벤트 넣을 곳에 우클릭 후 ‘새 노티파이’ 클릭 후 이름지정 - ABP 캐릭터 - 이벤트 그래프 우클릭 후 이벤트 이름 검색
좋은 방식이 아닌 이유 : 애니메이션 마다 이벤트가 많이 생길건데, 이렇게 되면 ABP 클래스 안에 모든 이벤트가 몰리기 때문이다.
진짜 무기 뽑기(소켓 넣었고, 이벤트 정의했고)
캐릭터 불르프린트 - 이벤트 그래프 - 우클릭 후 무기 장착 이벤트 이름 검색 - Attach Actor To Component 검색 - 타깃 : 무기 객체 변수, Parent : 캐릭터 스켈레톤 메쉬 객체 변수
찾아서 이해해야하는거
AN_Begin_Equip에서 왜 Get Owner 반환을 BP_Player 형변환에 연결하는가?
Get Owner는 액터 클래스이고, 장착은 캐릭터(BP_Player)이기 때문에 ‘다운 캐스팅’을 해줘야 레퍼런스 등록이 가능하다.