Unity의 Character Controller 컴포넌트는 게임 오브젝트가 캐릭터와 같은 형태의 컨트롤러 역할을 할 수 있도록 도와주는 컴포넌트입니다. 이 컴포넌트는 캐릭터의 이동, 회전, 충돌 처리 등을 담당합니다.
다음은 Character Controller 컴포넌트의 주요 속성과 메서드입니다.
Step Offset: 캐릭터가 오르는 단계의 높이를 지정합니다.
Skin Width: 캐릭터의 충돌 체크를 할 때, 충돌체의 경계와 캐릭터의 경계 사이의 간격을 지정합니다.
Center: 캐릭터 컨트롤러의 중심 위치를 지정합니다.
Radius: 캐릭터 컨트롤러의 반지름을 지정합니다.
Height: 캐릭터 컨트롤러의 높이를 지정합니다.
Move: 캐릭터를 이동시킵니다.
SimpleMove: 캐릭터를 이동시키는 간단한 메서드입니다.
DetectCollision: 캐릭터와 충돌체 간의 충돌 여부를 검사합니다.
OnControllerColliderHit: 캐릭터와 충돌체 간의 충돌이 발생할 때 호출되는 이벤트입니다.
CharacterController.isGround
Character Controller 컴포넌트는 Rigidbody와 함께 사용할 수 없습니다. Rigidbody를 사용하려면 대신 Character Controller 대신에 Rigidbody를 사용해야 한다. 그래서 중력을 직접 적용해야한다.
gravity는 -9.81f로 값이 음수로 저장되어 있는 상태다.
CameraController
playerController
고박사 강의3D Model / Animations 강의
FBX는 "FilmBox"의 약자로, 3D 모델 및 애니메이션 데이터를 교환하기 위한 파일 형식입니다. FBX는 Autodesk에서 개발되었으며, 다양한 3D 애플리케이션 및 게임 엔진에서 사용됩니다.
FBX 파일은 3D 모델, 애니메이션, 재질, 텍스처, 조명 등 다양한 요소를 포함할 수 있습니다. 이러한 파일은 3D 애플리케이션 간에 데이터를 공유하거나 다른 소프트웨어에서 렌더링하거나 애니메이션을 만들기 위해 사용됩니다.
FBX 파일 형식은 개방형 표준으로 여러 소프트웨어에서 지원됩니다. 주로 Autodesk의 소프트웨어인 Maya, 3ds Max 등에서 사용되지만, Unity, Unreal Engine 등과 같은 다른 3D 엔진 및 소프트웨어에서도 지원됩니다.
FBX 파일은 3D 애니메이션 제작 파이프라인에서 중요한 역할을 합니다. 모델링, 애니메이션, 렌더링 등의 작업을 수행하는 다양한 소프트웨어 간에 데이터를 원활하게 이동하고 공유할 수 있도록 도와줍니다.
Mapping
Muscles & Settings
애니메이션 없을 때
애니메이션 있을 때
Animator.Play()는 지양하는 방식이다.
조건(Conditions)을 이용한 상태 전이(Transition)제어
Mask를 이용해 어느 부위에만 해당 레이어에 애니메이션을 재생할 것인지 설정 할 수 있다.
애니메이터 컨트롤러에 레이어를 두 개 이상 만들면 각 레이어에서 재생하는 애니메이션은 위에서 아래로 순서로 덮어쓰기(Override) 방식으로 적용된다.
순방향 운동학, 역 운동학
애니메이션은 FK를 기준으로 진행된다.
역 운동학 IK는 계단을 밟고 올라갈 때 처럼 관절이 먼저 움직여야하는 상황에 사용된다.
블랜드 트리는 하나의 상태 안에 여러개의 애니메이션 클립을 갖게 하고, 상태 안에 있는 여러개의 애니메이션 클립을 파라미터 값에 따라 온전한 하나 또는 두개 이상의 애니메이션을 혼합해서 재생하는 기능이다.
블랜드 트리 생성
블랜드 트리 설정
Blend Type
블랜드 트리 실습
느낀점 : 애니메이션 전환이 자연스럽고, 다루기 편하다. 블랜드 트리는 혼합 재생이 가능한 장점이 있는데 좋은 장점인 것 같다.
방향성을 가진 블랜드 트리로 두개의 파라미터로 애니메이션을 블랜드한다.
2D는 사용 용도에 따라 4가지로 나뉜다.
2D Simple Directional, 2D Freeform Directional, 2D Freeform Cartesian, Direct
모두 다른 방향을 향하는 애니메이션을 하나의 블랜드 트리로 구성할 때 사용한다.
대기 걷기 뛰기와 같이 동일한 방향의 여러개의 모션을 등록해 사용할 때 사용한다.
)
2D Freeform Directional과 2D Freeform Cartesian에 설정하는 그림이 다르다는 걸 알 수 있다.
주로 동일한 방향에 대한 애니메이션에 사용하도록 권장된다. 예를 들어 앞으로 이동중인 FPS 캐릭터가 좌우 45도 방향으로 총구를 겨누는 것과 같은 애니메이션을 만들때 사용한다.
Cartesian은 오직 한 방향으로만 가능했다. 뒤로 가기는 불가능했다. 하지만 좌 우를 45도정도 꺾으면서 달릴 수 있었다. 만약 뒤로 가기 없는 캐릭터 만든다면 Cartesian을 사용해서 만들면 되겠다는 생각이 든다.
모션별로 별도의 파라미터를 설정할 수 있다.
화면에서는 얼굴 표정을 Direct를 이용해 블랜드했다.
얼굴의 표정은 너무 다양하기 때문에 모든 표정을 따로 그리기보단, Direct를 사용해서 입모양, 눈 모양 등에 몇가지를 선택해 모션으로 설정하고 파라미터 수치에 따라 애니메이션을 변형시키면 다양한 표정을 쉽게 구현할 수 있다.
하체는 걷고, 상체는 기본 Idle로 움직이도록 만들겠다.
MoveSpeed에 값을 코드에서 변화시킬 수 있도록 처리 할 것이다.
걷기와 달리기를 구분하기 위해 Shitf키를 단축키로 만들 것이다.
PlayerController1D Scripts
Project 창에 Avater Mask를 만들고, Transform에 unityChanAvater를 넣고, Toggle All을해서 모든 선택을 해제 시킨 다음 내가 움직여야하는 것만 체크한다.
플레이어 기준으로 마우스 방향에 맞게 화면이 전환되고, 휠을 사용해서 Zoom in, out이 가능하다.
PlayerAnimator
playerController
Movement3D
Movement는 블랜드 트리로 만듬, Jump는 애니메이션