[Unity] 3D Animation 적용에 사용되는 Option 외

남이섬·2023년 3월 29일
0

Add Component > Animator > Apply Root Motion

루트 모션 적용은 게임 오브젝트의 위치와 회전을 애니메이션이 제어하도록 허용한다

앞으로 움직이는 애니메이션이 있다고 가정해보자, 루트 모션을 체크하면 캐릭터가 앞으로 움직이면 게임오브젝트의 위치가 이전보다 앞쪽으로 변경되게 된다
루트 모션을 적용하지 않으면 제자리에서 걷는 애니메이션이 나오게 된다

Animator > Transitions > Has Exit Time

종료 시점(Exit Time)을 활성화 하는 옵션이다

활성화

종료 시점이 존재하게 되어 전이의 조건을 만족해도 다음 상태로 전이하지 않게된다

비활성화

전이 조건을 만족하는 즉시 전이가 실행된다

ex

Run -> Jump 전이에서 Has Exit Time이 활성화되어 있고,
종료 시점이 0.5(50%)로 설정된 경우,
전이 조건을 만족해도 Run 애니메이션 클립이 최소 절반은 재생되어야 전이가 이루어진다

Animator > 애니메이션 파라미터

파라미터는 Animator 클래스의 SetFloat, SetInt, SetBool, SetTrigger 및 ResetTrigger 등의 함수를 사용하여 스크립트로 부터 값을 할당 받을 수 있다

unity docs

Animator > Sun-State Machine

애니메이션을 그룹 단위로 묶어서 정리하는 기능

Script > Movement3D > Mathf.Clamp()

Clamp란 ?

최소 / 최대값을 설정하여 float 값이 범위 이외의 값을 넘지 않도록 한다

Animator > Any State

애니메이션이 현재 어느 상태에 있든지 조건 만족시 해당 애니메이션으로 전환

Collider > Is Trigger

collider가 설정된 오브젝트는 다른 오브젝트와 충돌 시 서로 관통하지 못한다
하지만 is trigger을 설정하면 서로 관통을 하면서 관통한 오브젝트의 정보도 얻을 수 있다

Combat System

  1. 마우스 왼쪽 / 오른쪽 버튼 클릭
    -> 플레이어의 공격 애니메이션 재생
  2. 공격 애니메이션의 특정 프레임에 이벤트 함수 호출
    -> 공격 충돌 박스 AttackCollision 오브젝트 활성화
  3. 공격 충돌 박스에 오브젝트가 부딪히면 ?
    -> 부딪힌 오브젝트의 TakeDamage() 함수 호출 (피격 애니메이션, 오브젝트 색상 변경)

Event 관련


사용하고자 하는 모션을 지정하고 새로운 이벤트를 만들어 apply한다

이곳에서 작성해서 호출이 가능한 함수는
해당 애니메이션을 재생하는 애니메이터 컴포넌트와 같은 오브젝트에 포함된 컴포넌트의 퍼블릭 함수만 가능하다

예를들어 현재 공격은 플레이어가 사용하고 있고,
플레이어의 공격 애니메이션을 재생하는것은 Toko_Sum 오브젝트에 애니메이터 컴포넌트가 하고있다
여기서
공격함수에 애니메이션의 이벤트 함수를 등록하려면 Toko_Sum 오브젝트에 있는 컴포넌트여야한다

OnAttackCollision 함수는 Toko_Sum 오브젝트의 컴포넌트로 등록되어있는 플레이어 애니메이터 클래스의 퍼블릭 함수이기 때문에 호출이 가능하다

profile
즐겁게 살자

0개의 댓글