개요

  • Collider
    • 물리 충돌을 처리하는 역할을 하는 컴포넌트
    • 충돌 영역을 포함한다
    • 연산 처리 속도는 Sphere Collider > Capsule Collider > Box Collider
  • Collision: 충돌한 대상에 대한 정보.
  • Static Collider
    • Collider(no_trigger)
    • 콜라이더는 있지만 리지드바디는 없는 게임 오브젝트.
    • 예) 움직이지 않는 벽, 바닥
  • Rigidbody Collider
    • Collider(no_trigger) + Rigidbody(no_kinematic)
    • 콜라이더와 리지드바디가 같이 있는 게임 오브젝트.
    • 물리 엔진을 통해 물리적인 힘과 충돌에 반응함.
  • Kinematic Rigidbody Collider
    • Collider(no_trigger) + Rigidbody(kinematic)
    • 콜라이더와 리지드바디 컴포넌트가 함꼐 있음.
    • Kinematic 옵션이 활성화 되어있다.
      • 물리적 힘이나 충돌에 반응하지 않고 스크립트를 통해 움직임.
    • 평소에는 정적 콜라이더와 같이 동작함.
    • 예) 상황에 따라 반응하는 문
  • Trigger
    • Collider(trigger)
    • 콜라이더에 Trigger 속성이 켜져있는 게임 오브젝트.
    • 물체를 통과 시키고 감지하는 역할.

물리적인 충돌이 일어났고 충돌 여부와 별개로 물리적인 값들을 얻고 싶다면 OnCollision 을 사용하라. 단순 콜라이더 충돌만 확인하려면 OnTrigger를 사용하라. 충돌에 의해 막히는가 막히지 않는가의 차이. 2D 환경이라면 모든 함수와 객체 뒤에 2D를 붙이면 된다. (OnTriggerEnter2D, Collider2D)

private void OnCollisionEnter(Collision collision); // 충돌체가 들어옴
private void OnCollisionStay(Collision collision); // 충돌체가 들어온 상태
private void OnCollisionExit(Collision collision); // 충돌체가 빠져나감
private void OnTriggerEnter(Collider collider); // 트리거가 들어옴
private void OnTriggerStay(Collider collider); // 트리거가 들어온 상태
private void OnTriggetExit(Collider collider); // 트리거가 빠져나감

collision.collider.CompareTag("SilverBullet");
collider.CompareTag("SilverBullet"); // Collider target
collider.gameObject.tag.Equals("SilverBullet");

Polygon Collider 2D

Shift 키를 누른 상태에서 콜라이더 폴리곤 (녹색 선) 위에 마우스를 올려 놓으면 버텍스를 볼 수 있다.

Shift 키를 누른 상태에서 기존 버텍스를 드래그 하면 움직일 수 있다.

Shift 키를 누른 상태에서 폴리곤의 Edge 위에 새로운 버텍스를 만들 수 있다.

Ctrl을 누른 상태에서 버텍스 위로 마우스를 가져가면 붉은색 버텍스가 생긴다. 이 상태에서 마우스 좌클릭하면 버텍스를 제거할 수 있다.

참고자료