3D object인 Plane과 Cube를 사용
Cube에 Ex_02라는 스크립트를 추가하였습니다.
스크립트를 보시면 Update() 안에 Input.GetKey를 이용하여 방향키를 눌렀을 때
transform.Translate, transfom.Rotate 이용하여 움직임을 구현하였습니다.
21번 줄에 Time.deltaTime을 사용하지 않은 이유는
Time.deltaTime을 사용하였을 때와 사용하지 않았을 때의 차이를 보여주기 위함입니다.
Time.deltaTime을 사용하게 되면 초당 한 번씩 실행되지만 사용하지 않을 경우엔
Update()의 호출 간격(한 프레임)에 의해 실행되게 됩니다.
그리고 FixedUpdate와 Update의 호출 간격의 차이를 보기 위해
각 부분에 Debug.Log를 이용하여 호출 간격을 확인하였습니다
Cube의 움직임을 보면 Time.deltaTime의 사용 유무에 의해
앞으로 갈 때는 50, 뒤로 갈 때는 0.1의 값만큼 증가시켰음에도 불구하고
앞으로 갈 때와 뒤로 갈 때의 속도 차이가 보입니다.
그리고 왼쪽 Console 창의 호출 간격을 보면 알 수 있듯
Update()의 경우
프레임 당 1회 호출되며 규칙적인 시간 간격으로 호출되지 않습니다.
(프레임 처리 시간이 다음 프레임보다 길면 업데이트 호출 사이의 시간이 다르게 됩니다.)
반면 FixedUpdate()의 경우
규칙적인 시간 간격으로 호출되며 호출된 직후 필요한 모든 물리 계산이 수행됩니다.
따라서 Rigidbody, 즉 물리 오브젝트에 영향을 주는 것은
Update()보다 FixedUpdate()에 작성하는 게 좋습니다.
Rigidbody는 다음 예제에서 알아보도록 하겠습니다.
위는
https://unity3d.com/kr/learn/tutorials/topics/scripting/translate-and-rotate?playlist=17117
https://unity3d.com/kr/learn/tutorials/topics/scripting/update-and-fixedupdate?playlist=17117
을 참고하여 작성되었습니다.
'Unity > 기초 예제' 카테고리의 다른 글
유니티 마우스, 키보드 입력 간단한 예제 유니티 기초 (0) | 2021.05.03 |
---|---|
유니티 Look At (다른 오브젝트가 나를 바라보는 간단한 예제) 유니티 기초 (0) | 2021.04.29 |
유니티 리지드바디(Rigidbody)를 이용한 오브젝트 움직임 구현 간단한 예제 유니티 기초 (0) | 2021.04.28 |
유니티_Rigidbody_리지드바디_간단한 예제_유니티 기초 (0) | 2021.04.22 |
유니티 예제_오브젝트의 상태 확인, Activating GameObjects, activeSelf, activeInHierarchy, SetActive()_간단한 예제, 유니티 기초 (0) | 2021.04.18 |