실행되는 시점이 미리 정해져 있는 함수들

Monobehavior LifeCycle

https://docs.unity3d.com/kr/current/Manual/ExecutionOrder.html

1. Start

맨 처음 첫 프레임에 실행

2. Update

매 프레임에 실행

충돌 이벤트

<aside> 💡 Collider 기준으로 물리적인 충돌 처리(참고사항) 물리적인 처리는 =⇒ Rigidbody, NavMeshAgent 컴포넌트의 역할

Untitled

왼쪽) Mesh는 굉장히 복잡하게 이루어져 있다. 무수한 삼각형들의 조합으로 이루어져 있기 때문에 충돌 기준으로 이 Mesh 기줁으로 잡으면 어마무시한 연산량이 필요

오른쪽) 위 같이 Box, Sphere, Capsule 모양의 Collder를 Mesh를 감싸도록 붙여서 이렇게 단순하게 생긴 것으로 충돌 처리를 대신

</aside>

1. OnCollisionXXX2D(Collision2D col)

<aside> 💡 Collision : 충돌 나랑 물리적으로 부딪친 오브젝트에 대한 정보가 담겨 있음

</aside>

부딪쳐서 밀리거나, 튕기거나, 멈추거나 등등 물리적 작용이 일어날 때 사용

<aside> 💡 이벤트 발생 조건

  1. (나 OR 상대 둘 중 하나는) 꼭 Rigidbody 컴포넌트를 가지고 있어야 한다.
  1. (나 AND 상대 둘 다 모두) Collider 컴포넌트를 가지고 있어야 한다.

</aside>

1) OnCollisionEnter2D

: 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

2) OnCollisionExit2D

: 오브젝트의 콜라이더와 다른 오브젝트의 콜라이더가 충돌에서 떨어진 순간에 호출

3) OnCollisionStay2D

: 오브젝트의 콜라이더와 다른 오브젝트의 콜라이더가 충돌하고 있는 동안 매 프레임 계속 호출

Untitled

2. OnTriggerXXX2D(Collider2D col)

<aside> 💡 Trigger 물리적으로 부딪치지 않더라도 내 Collider 범위 안에 들어온 오브젝트에 대한 정보가 담겨 있음

</aside>

그냥 닿았는지만 판별하고자 할 때

<aside> 💡 이벤트 발생 조건

  1. (나 OR 상대 둘 중 하나는) 꼭 Rigidbody 컴포넌트를 가지고 있어야 한다.
  1. (나 AND 상대 둘 다 모두) Collider 컴포넌트를 가지고 있어야 한다.

</aside>

1) OnTrigerEnter2D

: 오브젝트에 연결된 트리거 안에 다른 오브젝트가 들어갔을 때 호출

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

2) OnTriggerExit2D

: 트리거 상태의 오브젝트 콜라이더와 다른 오브젝트의 콜라이더가 충돌에서 떨어진 순간에 호출

3) OnTriggerStay2D

: 트리거 상태의 오브젝트 콜라이더와 다른 오브젝트의 콜라이더가 충돌하고 있는 동안 매 프레임 계속 호출

실습 과제

<aside> 📢 충돌이벤트 테스트 (3월 22일 수요일)