애니메이션을 한번만 재생해야 되는데 애를 먹을 때 찾다가 발견한 애니메이션 관련 함수!
아래는 관련 기능 설명
// 애니메이션 레이어를 사용하지 않는 경우, StateInfo()에 0을 넣어주면 됨.
Animator stateInfo = animator. GetCurrentAnimatorStateInfo(0);
stateInfo.normalizedTime >= 1f;
-> 애니메이션이 1번 재상됐으면 normalizeTime이 1f다. 만약 계속해서 반복되는 경우는 1f를 초과함.
애니메이션이 1번 재생되게 하려면 bool 변수를 추가해서 if문으로 제어
stateInfo.length
-> 애니메이션의 길이를 반환해준다. (단위: 초, float)
stateInfo.speed
-> 애니메이션의 재생속도를 반환. (단위: float)
stateInfo.speedMultiplier
-> 애니메이션의 속도 조정 비율 (이건 안써봐서 잘 모르겠음...)
stateInfo.isLoop
-> 애니메이션이 반복적으로 재생되는지
-> 결과값이 true면 반복(loop)재생, false면 1번 재생
stateInfo.shortNameHash == Animator.StringToHash("애니메이션 이름")
-> 애니메이션의 전체 경로 해시를 가져오는데 사용, 애니메이션이 트리 구조일때 사용
(경로 관련인 것 같은데 안써봐서 잘 모르겠음...)
stateInfo.tagHash == Animator.StringToHash("애니메이션 이름")
-> 조건에 해당 애니메이션의 태그를 확인
아래는 예시 코드
// 코드 출처: chatGPT
using UnityEngine;
public class AnimatorStateInfoExample : MonoBehaviour
{
private Animator animator;
void Start()
{
animator = GetComponent<Animator>();
}
void Update()
{
// 현재 애니메이션 상태 정보를 가져옴
AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);
// normalizedTime: 애니메이션이 끝까지 재생되었는지 확인
if (stateInfo.normalizedTime >= 1f)
{
Debug.Log("애니메이션이 한 번 완료되었습니다.");
}
// length: 애니메이션의 길이(초)
Debug.Log("애니메이션 길이 (초): " + stateInfo.length);
// speed: 애니메이션 재생 속도 확인
Debug.Log("애니메이션 재생 속도: " + stateInfo.speed);
// speedMultiplier: 속도 조정 비율
Debug.Log("속도 조정 비율: " + stateInfo.speedMultiplier);
// isLoop: 애니메이션이 루프인지 확인
if (stateInfo.isLoop)
{
Debug.Log("이 애니메이션은 루프 재생됩니다.");
}
else
{
Debug.Log("이 애니메이션은 한 번 재생됩니다.");
}
// shortNameHash: 애니메이션 상태를 확인 (예시: 특정 애니메이션 상태를 실행 중인지)
if (stateInfo.shortNameHash == Animator.StringToHash("Run"))
{
Debug.Log("Run 애니메이션이 재생 중입니다.");
}
// fullPathHash: 애니메이션의 전체 경로 해시값
Debug.Log("애니메이션 전체 경로 해시: " + stateInfo.fullPathHash);
// tagHash: 애니메이션의 태그 확인
if (stateInfo.tagHash == Animator.StringToHash("Jump"))
{
Debug.Log("Jump 태그가 있는 애니메이션이 재생 중입니다.");
}
}
}
'C#, Unity' 카테고리의 다른 글
| C#, Unity) Activation / Diactivation Functions - SetActive, enabled, activeSelf, OnEnable, OnDisable (1) | 2024.08.22 |
|---|---|
| C#, Unity) IEnumerator, Coroutine, Lerp 함수 (1) | 2024.08.12 |
| C#, Unity) Array - Remove Functions (0) | 2024.08.02 |
| C#, Unity) 범위 안 Enemy 판별 (1) | 2024.07.13 |