두 object간의 충돌을 감지해서 이벤트를 줘보려고 합니다.
모양을 가지는 컴포넌트로, 두 object 간 충돌의 기준을 정의한다.
사용하는 방법은 간단하다. 우선 에디터에서 collider 컴포넌트를 추가해주면 되는데,
[Insepctor] > [Add component]
모양에 따라 여러가지 콜라이더를 선택할 수 있고, 유니티에서는 3D가 기본이기 때문에 2D게임의 경우에는 2D가 붙은 컴포넌트를 선택해줘야 한다.
collider의 모양을 편집하기 위해서는 컴포넌트의 [Edit Collider]를 선택하면 Scene 창에서 수정할 수 있다.
collider를 가진 두 물체가 있으면 이제 충돌을 감지할 수 있다.
OnCollisionEnter
와 같은 이벤트 함수가 충돌이 발생하면 호출되기 때문에 해당 함수를 오버라이딩해서 충돌시 발생해야 하는 일을 적어주면 된다.
using UnityEngine;
public class DetectCollision : MonoBehaviour {
private void OnCollisionEnter2D(Collision2D collision) {
Destroy(gameObject); // 자기자신 삭제
Destroy(collision.gameObject); // 상대 오브젝트 삭제
}
}
여기서 "자기자신"이라하면, 해당 스크립트를 컴포넌트로 가지고 있는 오브젝트를 의미한다. 예를 들어, 두 오브젝트가 충돌시 양쪽 모두를 삭제하고 싶은 경우 두가지 방법을 쓸 수 있는데,
1. Destory(gameObject)
만을 넣은 스크립트를 두 오브젝트에 모두 추가하기
2. 자신과 상대를 모두 삭제하는 스크립트를 작성해 한 오브젝트에만 추가하기
혹은 상대방을 삭제하는 스크립트를 짜서 둘다 넣거나... (굳이)
구현할 수 있는 방법은 여러가지가 있기 때문에 상황에 맞는 방법을 선택하면 된다.