새로 생성한 스크립트
- GreatSword : 기본 베이스는 Sword와 동일 / 시작부터 손에 붙이고 비활성화하기
- 대검 프리펩 콜라이더 설정 및 프리펩 생성 / 대검 스크립트 생성 / 대검 스크립트 - 시작부터 손에 붙이고 비활성화하기
네스티드 프리펩
- 프리펩 안에 프리펩이 들어있는 구조다.
기본 애니메이션 상태 변화
- 기본적으로 애니메이션은 FSM(Animator)로 작동한다.
- 상태 시스템 완료 : 플레이부터 어느 지점의 애니메이션 이벤트가 콜 됬을때까지
- 캐릭터의 모델은 Mesh(SkinedMesh Renderer)를 가지고 있다.
- Game Logic Tread(Update)와 Game Logic Thread(Reading)
- Game Logic Thread(Reading) 은 렌더링 파이프라인으로 작동 순서는 IA → VS → RS → PS → OM으로 동작한다.
- VS : ㅉ ㅍ ㅖ tp wjdwja todtjd
- RS : 세 정점이 연결된다.
- 월드 좌표와 Transform이 같다고 생각해라
- 부모의 월드좌표 P(w)와 자신(현재 사용하는 오브젝트)의 상대좌표를 곱하면 자신의 월드 좌표가 나온다.
- P(w) * L(R) = L(w) ⇒ 모델에서 움직일 오브젝트 까지의 상대간격을 알아보는 계산식 (즉, Hip에서 팔꿈치까지의 상대간격을 확인하는 계산이다.)
- P(w) * L(R) * A(애니메이션) = L(w) ⇒ 애니메이션의 한 프레임에서 오브젝트의 변화량을 알아보는 게산법이다. (상태변화 확인)
Root Transform Motion
- 애니메이션이 작동할떄 Hip은 이동하는데 Player 오브젝트가 이동하지 않을때 그것을 맞춰주는 역할을 한다.
- 기존의 하던것처럼 모든 애니메이션 동작에 root motion Node를 체크하면 동작에 맞춰 전진한 다음 다시 원래 위치로 되돌아온다.
- OnAnimatorMove() 함수로 애니메이터 자체의 프레임별 Hip 위치를 조정할 수 있다.
private void OnAnimatorMove() { transform.position += animator.deltaPosition; //animator.deltaPosition : Hip의 좌표다. transform.rotation *= animator.deltaRotation; //회전은 쿼터니온이라 곱셈으로 가야한다. } - Root Transform Rotation : 동작의 정면을 설정하는 인스펙터다.
- body orientation : 디자이너가 정해준 동작의 회전값과 유니티의 회전이 다르면 유니티가 자체적으로 동작의 회전을 유니티의 전방으로 잡아주는 기능이다.
- original : 동작을 디자인 한 디자이너가 의도적으로 동작에 회전값을 준것이기에 유니티가 정한 회전과 다르게 정면이 바뀐다.
- bake into Pose : 회전 방향을 움직일 값을 어떻게 사용하냐를 체크하는 기능이다. ⇒ 즉, deltaRotation이나 deltaPosition을 쓸지 안쓸지를 결정하는 bool이다. (간단하게 말하면 Hip에 있는 값을 Player(최상위 부모 오브젝트)에 넣을건지를 물어보는 기능이다.)