실행되는 시점이 미리 정해져 있는 함수들
https://docs.unity3d.com/kr/current/Manual/ExecutionOrder.html
맨 처음 첫 프레임에 실행
매 프레임에 실행
<aside> 💡 Collider 기준으로 물리적인 충돌 처리(참고사항) 물리적인 처리는 =⇒ Rigidbody, NavMeshAgent 컴포넌트의 역할
왼쪽) Mesh는 굉장히 복잡하게 이루어져 있다. 무수한 삼각형들의 조합으로 이루어져 있기 때문에 충돌 기준으로 이 Mesh 기줁으로 잡으면 어마무시한 연산량이 필요
오른쪽) 위 같이 Box, Sphere, Capsule 모양의 Collder를 Mesh를 감싸도록 붙여서 이렇게 단순하게 생긴 것으로 충돌 처리를 대신
</aside>
<aside> 💡 Collision : 충돌 나랑 물리적으로 부딪친 오브젝트에 대한 정보가 담겨 있음
</aside>
부딪쳐서 밀리거나, 튕기거나, 멈추거나 등등 물리적 작용이 일어날 때 사용
<aside> 💡 이벤트 발생 조건
</aside>
: Collision 충돌 시 호출되는 함수 : 오브젝트의 자식 콜라이더가 다른 콜라이더에 충돌했을 때 호출
void OnCollisionEnter2D(Collision2D col) { // Collision2D <== 충돌한 상대방 물체 정보
Debug.Log(col.gameObject); // col.gameObject <= 상대방 오브젝트
Debug.Log(col.transform);
Debug.Log(col.collider);
Debug.Log(col.rigidbody);
Debug.Log(col.relativeVelocity);
}
Collision 충돌 시작 | OnCollisionEnter2D |
---|---|
Collision 충돌 중 | OnCollisionStay2D |
Collision 충돌 끝 | OnCollisionExit2D |
: 오브젝트의 콜라이더와 다른 오브젝트의 콜라이더가 충돌에서 떨어진 순간에 호출
: 오브젝트의 콜라이더와 다른 오브젝트의 콜라이더가 충돌하고 있는 동안 매 프레임 계속 호출
<aside> 💡 Trigger 물리적으로 부딪치지 않더라도 내 Collider 범위 안에 들어온 오브젝트에 대한 정보가 담겨 있음
</aside>
그냥 닿았는지만 판별하고자 할 때
<aside> 💡 이벤트 발생 조건
</aside>
: 오브젝트에 연결된 트리거 안에 다른 오브젝트가 들어갔을 때 호출
void OnTriggerEnter2D(Collider2D col) {
Debug.Log(col.gameObject);
Debug.Log(col.transform);
//Debug.Log(col.collider); -- 없음
//Debug.Log(col.rigidbody); -- 없음
//Debug.Log(col.relativeVelocity); -- 없음
}
Trigger 통과 시작 | OnTriggerEnter2D |
---|---|
Trigger 통과 중 | OnTriggerStay2D |
Trigger 통과 끝 | OnTriggerExit2D |
: 트리거 상태의 오브젝트 콜라이더와 다른 오브젝트의 콜라이더가 충돌에서 떨어진 순간에 호출
: 트리거 상태의 오브젝트 콜라이더와 다른 오브젝트의 콜라이더가 충돌하고 있는 동안 매 프레임 계속 호출
실습 과제
<aside> 📢 충돌이벤트 테스트 (3월 22일 수요일)