250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
- 플레이어 방향전환
- rotation
- LayerMark
- raycasting
- Unity
- 플레이어 이동
- Hpbar
- Transform
- Hp바
- joystick
- 2D슈팅게임
- 일시정지
- rigidbody
- Vector3
- 프리팹
- Scrooling
- 스크롤링
- 오브젝트 풀링
- apk
- CSharp #자료구조
- Object Pooling
- 패럴렉스
- Ainimation Blending
- Object Poling
- Prefabs
- Animation State Machine
- Parallax
- Blend Type
- raycast
- 유니티
Archives
- Today
- Total
주녘공부일지
[Unity] StateMachineBehaviour 본문
728x90
StateMachineBehaviour란?
AnimatorController의 컴포넌트로 붙일 수 있는 StateMachineBehaviour 스크립트
- Animator 상태 머신의 상태 변화에 따라 CallBack 함수를 실행해주는 방식
public class MoveAnim : StateMachineBehaviour
using UnityEngine;
public class MoveAnim : StateMachineBehaviour
{
public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
// 애니메이션 실행 시 첫 프레임에 한번 호출
}
public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
// 처음과 마지막 프레임을 제외한 각 프레임 단위로 호출
}
public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
// 해당 애니메이션 스테이트를 나가기 직전 (마지막 프레임)에 한번 호출
}
public override void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
// MonoBehaviour.OnAnimatorMove 직후에 실행
}
public override void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
// MonoBehaviour.OnAnimatorIK 직후에 실행
}
}
실행 순서 : OnStateEnter -> OnStateUpdate,Move -> OnStateMove -> OnStateExit
MonoBehaviour.OnAnimatorMove
- Update 프레임마다 Animator 정보가 갱신될 시에 호출되는 이벤트 함수
MonoBehaviour.OnStateIK
- Update 프레임마다 IK 정보가 갱신될 시에 호출되는 이벤트 함수
+ 위 두 이벤트 함수는 애니메이터가 붙어있는 오브젝트만 호출 가능
MonoBehaviour를 상속받은 스크립트에서 접근하는 방법 간단 예제
private Animator _animator;
private StateMachineExample _stateMachineExample;
void Start()
{
_animator = GetComponent<Animator>();
_stateMachineExample = _animator.GetBehaviour<StateMachineExample>();
}
728x90
'GameEngine > UnityEngine - Class' 카테고리의 다른 글
[Unity] MonoBehaviour Life Cycle (생명주기) (0) | 2023.09.05 |
---|---|
[Unity] Animation Blending (0) | 2022.03.23 |
[Unity3D] Camera (0) | 2022.03.01 |
[Unity3D] Physics.Raycast (+LayerMask) (0) | 2022.02.24 |
[Unity3D] Collision (충돌) (0) | 2022.02.23 |