Learning
When: 1학년 5월 2일
How:
게임을 만들다가 제가 호출하지 않은 OnCollisionEnter2D, OnTriggerEnter2D 같은 메서드가 어떤 방식으로 호출되는지 궁금해져서 공부를 해보았습니다.
Understanding:
Unity에서는 컴파일 단계를 거칠 때, MonoBehaviour를 상속한 스크립트를 살펴보고 Update나 다른 Unity에서 호출해야 하는 메서드가 있는지 확인한 후, 해당 메서드를 포함한 스크립트를 오브젝트에 자동으로 연결합니다.
그 후, Unity는 Update, FixedUpdate 같은 메서드들을 자동으로 정해진 순서에 따라 호출하는 콜백 구조로 실행합니다.
호출 순서를 제가 아는 메서드 기준으로 정리해보면 다음과 같습니다:
Awake, OnEnable, Start, FixedUpdate, 물리 연산(충돌 예상), OnTrigger, OnCollision, yield WaitForFixedUpdate, OnMouse, Update, yield null, yield WaitForSeconds, yield StartCoroutine, LateUpdate, OnDisable, OnDestroy
정도로 정리할 수 있습니다. 이것을 공부하면서 저는 Unity가 물리 연산을 수행하는 도중에 velocity를 기준으로 오브젝트의 다음 위치를 예측하고, 충돌이 발생할지를 계산한 후, 충돌이 감지되면 OnTriggerEnter2D, OnCollisionEnter2D 같은 메서드를 콜백으로 자동 호출한다는 것을 알게 되었습니다.
Result:
물리 연산이 수행되는 도중에 Velocity를 구하고 충돌이 될지 예상한 후 On(Collision/Trigger) 메서드를 호출합니다.
(FixedUpdate -> 물리연산 -> On(Collision/Trigger))
'UnityEngine' 카테고리의 다른 글
| [Unity] Particle System같은 타입 변수 만들기 (0) | 2025.05.07 |
|---|---|
| [Unity] 코드에서 GameObject 가져오기 (0) | 2025.05.06 |
| [Unity] 여러가지 이동 방식 (0) | 2025.05.02 |
| [Unity] Monobehaviour 스크립트의 구동 (0) | 2025.04.28 |
| [Unity] 오브젝트 코드로 회전시키기 (0) | 2025.04.27 |