===> 수업과 관계 없는 부분임
[ Hero Character 2 : Hero의 상태에 따른 Animation 제어(Macanim 사용하기) ]
상위 오브젝트(Hero)를 선택하여 Animation에서 키프레임마다 하위오브젝트(팔, 다리 등)를 변경해주는방법으로 애니메이션 제작이 가능
Hero에 Animator Controller (Component) 삽입
Menu : Component >> Miscellaneous >> Animator
Project View의 Assets/Animation/Controllers에서 오른쪽 마우스 클릭후 Animator Controller 생성 (Name : Character)
Hero의 Animator에 Character(Controller) 연결
Animator 참고
Animator Menu
주황색 State - Default State로 여러 상태 중에 현재 테스트하고자 하는 상태를 가리킴
Alt 키를 누른 상태에서 마우스로 끌기를 하면 View가 이동됨
Create new BlendTree in State >> Double Click
Motion Add
Hero의 Idle 상태 만들기
Hero의 Animator View에서 오른쪽 마우스 클릭 (일단 Idle 상태만)
Create State >> Empty
New State 클릭 >> Inspect View
Idle로 이름 바꿈
Hero >> Animator 설정
Controller : Character
Avatar : None
Apply Root Motion : None (3D 바이패드로 구동되는 것이 아니므로 Uncheck)
Animate Physics : Check
Culling Mode : Based On Renders
Hero >> Idle 상태에 애니메이션 연결하기
Idle State에 해당하는 Animation 만들기
Project View의 Assets/Animation/Clips에서 오른쪽 마우스 클릭후 Animation 생성 (Name : Idle)
Hero의 Idle을 위한 애니메이션을 생성한다.
Hero >> Animator View >> Idle State >> Inspect View
Motion : Idle 로 세팅
Idle.anim Inspector
Loop : Check
Play 테스트
Hero의 Run 상태 만들기
Hero의 Animator View에서 오른쪽 마우스 클릭 (일단 Run 상태만)
Create State >> Empty
New State 클릭 >> Inspect View
Run으로 이름 바꿈
Hero >> Run 상태에 애니메이션 연결하기
Run State에 해당하는 Animation 만들기
Hero >> Animator View >> Run State >> Inspect View
Motion : Run으로 세팅
Run.anim Inspector
Loop : Check
Idle 상태에서 일정 속도가 되면 Run 상태로 전이할 수 있도록 하기
Idle 상태와 Run 상태간에 서로 전이될 수 있도록 설정
Animator Menu : idle(State) >> make Transition >> Run(State)
Animator Menu : Run(State) >> make Transition >> idle(State)
Motion Blending Animation은 하지 않도록 설정(전이할 때 모션이 합쳐지는 것)
일정 값을 비교하여 Idle 상태인지 Run 상태인지를 정의할 수 있도록 Parameters 추가
Animator Menu : Parameters >> Float
Speed(float 변수 이름 생성)
Animator Menu : idle(State) >> Inspector >> [ idle > Run ] Click
Conditions : Speed > 0.1 면 Transition
Animator Menu : idle(State) >> Inspector >> [ Run > idle ] Click
Conditions : Speed < 0.1 면 Transition
이제 Speed의 설정 값에 따라 상태의 변이가 생길 수 있게 된다.
Script (PlayerControls)를 이용하여 키입력에 따라 Speed값에 변화를 주기
anim.SetFloat("Speed", v); v의 값을 (Animator View에서 생성한 파라미터인 )Speed에 값을 전달
<Source>playerControls04.cs
Play 테스트
Hero의 Jump 상태 만들기
Hero의 Animator View에서 오른쪽 마우스 클릭
Create State >> Empty
New State 클릭 >> Inspect View
Jump으로 이름 바꿈
Hero >> Jump 상태에 애니메이션 연결하기
Jump State에 해당하는 Animation 만들기
Hero >> Animator View >> Jump State >> Inspect View
Motion : Jump으로 세팅
Idle 상태와 Jump 상태간에 서로 전이될 수 있도록 설정
Animator Menu : idle(State) >> make Transition >> Jump(State)
Animator Menu : Jump(State) >> make Transition >> idle(State)
Motion Blending Animation은 하지 않도록 설정(전이할 때 모션이 합쳐지는 것)
일정 값을 비교하여 Idle 상태인지 Jump 상태인지를 정의할 수 있도록 Parameters 추가
Animator Menu : Parameters >> Trigger
Jump(Trigger 변수 이름 생성)
Animator Menu : idle(State) >> Inspector >> [ idle -> Jump ] Click
Conditions : Jump가 Trigger 되면 Transition
Animator Menu : idle(State) >> Inspector >> [ Jump -> idle ] Click
Conditions : 한번 실행되면 끝나는 애니메이션으로 Exit Time으로 설정
Script (PlayerControls)를 이용하여 키입력에 따라 Jump에 변화 주기
anim.SetTrigger("Jump"); (Animator View에서 생성한 파라미터인 )Jump를 구동시킴
<Source>playerControls05.cs
Play 테스트
Run 상태와 Jump 상태간에 서로 전이될 수 있도록 설정
Animator Menu : Run(State) >> make Transition >> Jump(State)
Animator Menu : Jump(State) >> make Transition >> Run(State)
Motion Blending Animation은 하지 않도록 설정(전이할 때 모션이 합쳐지는 것)
일정 값을 비교하여 Run 상태인지 Jump 상태인지를 정의할 수 있도록 조건 주기
Animator Menu : Run(State) >> Inspector >> [ Run -> Jump ] Click
Conditions : Jump가 Trigger 되면 Transition
Animator Menu : Jump(State) >> Inspector >> [ Jump -> Run ] Click
Conditions 1: 한번 실행되면 끝나는 애니메이션으로 Exit Time으로 설정
Conditions 2: Speed > 0.1 면 Transition
Play 테스트
Hero가 공중에서 점프를 뛰지 못하게 하기(나중에 처리)
Prefab으로 만들기