- BeginPlay : 플레이 시 호출되는 이벤트
- EndPlay : 플레이 종료 시 호출되는 이벤트
무엇을 상속받은 것인지 확인하고 싶을 때, 상속된 변수 표시를 통해서 확인할 수 있다. (필요할 때만 켜서 확인하면 됨)
'내 블루프린트 뷰에 접근 지정자를 표시합니다.'를 사용하면 좀 더 편하게 사용할 수 있다.
Asset 이주시키기
다른 프로젝트에 있는 Asset을 가져와서 쓰고싶다면 이주하기 기능을 사용하여 가져오는 것이 가장 안전하다.
굳이 이렇게 이주하는 이유는, 파일 탐색기 창에서 폴더 복사 / 붙혀넣기를 사용하면 그 파일에 묶여있는 레퍼런스가
깨질 수 있기 때문에 제대로 옮기기 위해서 직접 프로젝트로 들어가서 이주시키는 것이 안전하다.
새 프로젝트 - 게임 - 내려보기로 프로젝트를 하나 만든다. 임시로 만들어두고 Asset만 옮길 것이다.
내려보기 프로젝트를 만들었다면, 콘텐츠 브라우저를 통해 우리가 이주시킬 Asset들을 정리할 것이다.
다시 콘텐츠 상위경로로 올라와서 Mannequin폴더 우클릭 - 이주 를 선택해준다.
이제 이주시킬 경로를 선택하는데, 우리가 지금까지 사용하던 프로젝트(GPC_BP_12)의 Content폴더를 선택한다
콘텐츠/TopDownBP/Blueprints 경로의 M_Cursor_Decal를 상위 경로 콘텐츠로 복사해준 뒤, 똑같이 이주시킬 것이다.
폴더가 아닌 개별Asset들은 에셋 액션 안에 이주 기능이 있다.
이렇게 다른 프로젝트에 있는 Asset을 이주시키는 방법에 대해 알아보았다.
다시 원래 사용하던 프로젝트(GPC_BP_12)로 돌아와서 Asset이 무사히 이주된 것을 볼 수 있다.
이후, 콘텐츠 브라우저에 새 폴더(Tutorial) 하나 만들고, 이주시켜온 Asset을 제외한 나머지를 폴더 안에 넣어서 정리한다.
새 레벨 - Default로 하나 만들고(First) 기본으로 레벨이 있는 바닥은 지워버린다.
엔진 콘텐츠 / SM_Room_01을 현재 레벨로 올려서 디테일의 트랜스폼을 기본값으로 초기화한다.
(위치 옆에 유턴화살표 디폴트로 리셋 클릭)
컬렉션(Asset 분류하기)
콘텐츠에서 컬렉션으로 에셋들을 분류해줄 수 있다.
콘텐츠 브라우저 소스패널 검색창 우측에 컬렉션 뷰로 전환 - 컬렉션 + 해서 원하는 컬렉션 추가(Level)
우리가 만들었던 Level들 우클릭 후 컬렉션 관리 - Level을 선택해주면 컬렉션에 추가가 된다.
※주의! 컬렉션에서 에셋을 빼고싶다면 우클릭 - Level(컬렉션)에서 제거를 눌러야됨. 그냥 지우기하면 에셋이 삭제가 된다.
Character 살펴보기
콘텐츠 브라우저에서 새폴더(BluePrints)를 만들고, 우클릭 - 블루프린트 클래스 - Character를 추가(BP_Character)해준다.
컴포넌트 탭을 먼저 보자.
- SceneComponent : Capule Component, Arrow Componet(Arrow), Mesh(CharacterMesh0)
- ActerComponent : Character Movement
따라서 Character Movement는 트랜스폼이 없다.
- Capule Component : 충돌을 검사한다.
- Arrow Componet(Arrow) : 뷰포트에서 정면을 나타내준다. 에디터에서만 보고 쓸 수 있다.
- Mesh(CharacterMesh0) : 외형을 표시해준다.
- Character Movement : 물리적인 움직임을 구현한다.
언리얼에서 사용할 수 있는 Collision(충돌체)은 Box, Capsule, Sphere 이렇게 3가지가 있다.
우선 Mesh를 먼저 추가해주는데, Mesh 컴포넌트를 선택하고 메시에 SK_Mannequin을 넣어준다.
그러면 뷰포트에 저렇게 SK_Mannequin이 나올텐데, 중점이 발 밑으로 잡혀있는 것을 볼 수 있다.
SK_Mannequin에 자세히 들어가보면 Mannequin이 A포즈 형태로 서있는 것을 볼 수 있다. (T포즈, A포즈 두가지 있음)
보통 캐릭터의 중심 축은 발 밑에 있기 때문에 메시를 넣어줬을 때, Capule 컴포넌트 중점에 발 밑이 가 있는 것이다.
좌측의 스켈레톤 트리를 보면, 뼈 하나하나가 만들어져 있는 것을 볼 수 있다.
스켈레톤 트리를 보면 큰 root 아래에 bone(뼈)들이 자식으로 쭉 있는 Tree구조로 되어있는 것을 볼 수 있다.
root는 그냥 캐릭터 중점표시(발 밑)를 하고 있는 것이고, 실질적인 중점은 pelvis(골반)이다.
pelvis(골반)를 기준으로 상체, 하체(오른다리/왼다리)로 나뉘어져 있다.
같은 bone에 얽혀있는 정점(vertex)들은 모두 같은 영향을 받는다. 위의 길쭉한 주황색 도형이 bone이다.
각각의 부모자식의 관계를 가지고 있는 변환들을 bone이라고 부르고, bone들이 이루는 관계도를 Skeleton이라고 부르고,
bone의 정점들을 엮어 이동할 때 정점들이 다같이 영향을 받도록 해둔 것이 SkeletalMesh라고 한다.
캐릭터의 애니메이션을 통해 Transform을 보면 매 초마다 값이 바뀌는 것을 볼 수 있다.
물론 이 값을 하나하나 다 바꿔줄 수는 없으니, 3D 애니메이션을 표현할 때는, 선형 보간(Linear Interpolation)을 사용한다.
Linear Interpolation : 선형 보간. Lerp라고 줄여 말한다.
※ f(t) = (1 - t)x + ty일 때, 나올 수 있는 범위는 x <= t <= y이다.
Keyframe Animation : 전체 애니메이션 중에서 구간마다 Keyframe(구분 동작)을 찍어두고 이어서 애니메이션을 구성한다.
'언리얼엔진' 카테고리의 다른 글
9. 캐릭터 좌우 이동 수정하기 (0) | 2023.05.10 |
---|---|
8. 캐릭터 시점 이동하기 (0) | 2023.05.09 |
5. Construction Script / 이벤트 / 함수 / 매크로 / 와일드카드 (0) | 2023.05.03 |
4. 블루프린트 함수 디테일 (0) | 2023.05.03 |
3. 블루프린트 변수 / 함수 / 구조체 (0) | 2023.05.02 |