케이디님의 유니티 입문 강좌를 듣고 정리한 내용입니다.
오브젝트의 충돌을 처리하고, 충돌범위를 조절하는 컴포넌트이다. 모양에 따라서 box, capsule, sphere 등이 있다. 2D Collider는 앞에 명시되있고 일반 Collider는 3D를 취급한다.
두 물체의 충돌은 적어도 한 물체에 Reigidbody 컴포넌트를 추가해야 두 물체 간에 충돌이 발생한다.
또한 IsTrigger 가 활성화된 Collider 끼리는 충돌 감지가 되지 않는다.
onCollision: Enter, Stay, Exit 단계로 나눌 수 있다. 각각의 이벤트는 Collider 컴포넌트의 is Trigger가 false인 상태의 충돌이 시작할 때, 지속될 때, 끝나는 순간 호출된다.
onTrigger: Enter, Stay, Exit 단계로 나눌 수 있다. 각각의 이벤트는 Collider 컴포넌트의 is Trigger가 true 인 상태의 충돌이 시작할 때, 지속될 때, 끝나는 순간 호출된다.
public class Text4 : MonoBehaviour
{
private BoxCollider col;
void Start()
{
col = GetComponent<BoxCollider>();
}
//isTrigger가 체크된 상태에서 collider가 지속될 때 실행.
private void OnTriggerExit(Collider other)
{
//충돌 된 물체의 위치를 변경. 충돌이 끝나는 순간 실행 안함.
other.transform.position += new Vector3(0, 0, 0.01f);
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{ //마우스가 있는 좌표에 레이저 쏘기
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hitinfo; //맞은 레이저 정보
//레이저에 쏴서 큐브와 충돌 할 경우
if(col.Raycast(ray,out hitinfo, 1000))
//(레이저 시작점, true일 경우 정보가 저장될 변수, 레이저 최대 길이)
{
//맞았으면 맞은 곳으로 이동
this.transform.position = hitinfo.point;
}
}
}
}