2023. 12. 5. 22:04ㆍIT/TIL
오늘의 TIL은 주제로 정해서 글을 쓰기가 애매하여
간단하게 배운 것들을 나열하고 마무리하고자한다.
오늘 가장 핵심적으로 작업했던 내용은 애니메이션과 관련된 작업으로,
- 애니메이션이 초기에 딜레이를 두고 작동하게 하는 것
- 애니메이션이 순차적으로 작동하게 하는 것
- 애니메이션이 끝난 뒤에 이미지를 표시하지 않게 하는 것
의 3가지가 중점적으로 고민했던 내용이다.
우선, 애니메이션이 초기에 딜레이를 두고 작동하게 하려고 방법을 찾은 결과,
Invoke 함수를 이용하여 딜레이를 두고 애니메이션을 작동하게 하고 싶은 이미지를
몇 초 후에 true가 되도록 설정함으로써 조절하였다.
애니메이션이 순차적으로 작동하는 것은 Unity의 Animator에서
Transition으로 순서를 정해주며, 이들이 작동하는 시간을 Inspector 창에서 Speed를 조절하여 조정하고
다음 차례의 애니메이션으로 넘어가는 것을 'Has Exit Time'을 체크하고 'Exit Time'을 1로 하여
해당 애니메이션이 1회 끝난 뒤에 다음 애니메이션으로 진행되게 할 수 있었다.
이후에 애니메이션이 끝난 뒤에 이미지를 표시하지 않게 하는 것은
아래의 StateMachineBehaviour라는 특별 스크립트 클래스를 이용하여 구현했다.
public class EnemiesDelete : StateMachineBehaviour
{
public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
Destroy(animator.gameObject);
}
}
이 스크립트는 애니메이션의 Add Behaviour에 추가할 수 있는 Script로
이 Script를 갖고 있는 애니메이션에 진입하면(OnStateEnter) 해당 gameobject를 Destroy하게 만드는 스크립트이다.
이미지를 표시하지 않게 하고 싶은 이미지의 마지막 애니메이션에 이 스크립트를 추가한 Empty를 연결하면,
마지막 애니메이션이 끝나고 Empty에 진입하는 순간 gameobject가 Destroy하게 된다.
(단, Destroy하게 되므로 SetActive(false)가 되는 것이 아니니, 보이지 않게 하는 것과는 다르다)
'IT > TIL' 카테고리의 다른 글
20231207_팀 프로젝트 회고 (1) | 2023.12.07 |
---|---|
20231206_StringBuilder (2) | 2023.12.06 |
20231204_값 타입, 참조 타입, Class (0) | 2023.12.04 |
20231201_Button UI (0) | 2023.12.01 |
20231130_팀 프로젝트 (0) | 2023.11.30 |