우선 첫번째 (당연하겠지만) Animation과 Animator Controller는 다르다
직관적으로 보면 Animation은 내가 원하는 움직임을 담고 있고
Animator Controller는 Animation들을 관리한다고 볼 수 있다.
ex) 걷는 움직임 Animation / 걷고 뛰는 Animation을 모아놓은 Animator Controller
Window - Animation - Animation을 통해 애니메이션 창을 열 수 있다. 창을 통해서 애니메이션을 조절할 수 있다.
Window - Animation - Animator를 통해 애니메이터 창을 열 수 있다.
-
기본적으로 Entry부터 실행되고 Entry에 직접적으로 연결된 State(네모박스)는 주황색으로 표시된다.
State는 빈공간에 우클릭하여 만들 수 있다.
State를 우클릭하면 Transition(화살표)을 만들 수 있고 Transition을 State에 연결한 후 조건을 걸어 진행할 수 있다.
Transition을 만들었으면 Transition을 눌러서 세팅할 수 있다.
Has Exit Time을 체크하면 애니메이션 실행 도중에 조건이 바뀌더라도 실행하던 애니메이션을 끝까지 실행한다.
Conditions에 있는 변수를 통해 진행여부를 결정할 수 있다.
bool형식의 character_nearby 변수값이 true라면 애니메이션을 진행한다.
Conditions에 있는 변수 character_nearby는 Parameters에서 만들어줄 수 있다.
+버튼을 눌러서 만들면 된다~
여기까지 연결했으면 inspector창에서 Animator를 추가해주고 아까 만들어준 Animator Controller를 넣어준다.
이제 스크립트를 통해 아까 만들어준 character_nearby 변수 값을 조정해주면 애니메이션이 성공적으로 작동한다.
문이 무언가와 충돌 할 경우 문이 열리고 충돌이 끝나면 닫힌다.
public class Door : MonoBehaviour
{
private Animator animator;
// Start is called before the first frame update
private void Awake()
{
animator = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
}
private void OnCollisionEnter(Collision collision)
{
animator.SetBool("character_nearby", true); //변수 값 true
}
private void OnCollisionExit(Collision collision)
{
animator.SetBool("character_nearby", false); //변수 값 false
}
}
문 열기 끝!
유튜브 참고 https://www.youtube.com/watch?v=hOrH3aUSn64
사용한 에셋 https://assetstore.unity.com/packages/3d/environments/sci-fi/sci-fi-styled-modular-pack-82913
'UNITY' 카테고리의 다른 글
[UNITY] HandController 오큘러스에서 움직이는 손 만들기 (0) | 2022.04.14 |
---|---|
[UNITY] SceneManager.LoadScene 씬 변경하기 (0) | 2022.04.10 |
[UNITY] Find / FindWithTag | 오브젝트 찾기 (0) | 2022.01.10 |
[UNITY] RigidbodyConstraints | Rigidbody 움직임 제한하기 (0) | 2022.01.09 |
[UNITY] Rigidbody - useGravity, isKinematic 접근하기 (0) | 2022.01.08 |