Collision의 경우는 물리를 기반으로 한 충돌처리라는 점으로 Rigidbody가 필요하다.

물체간의 관통을 할 수 없다.

 

Collision은 충돌 관련 정보를 담아두는 컨테이너로

입력으로 들어온  Collision을 통해 충돌한 상대방 게임 오브젝트, 충돌 지점, 충돌 표면의 방향 등을 알 수 있다.

 

ㅇㅇㅇ

private void OnCollisionEnter(Collision collision)
{
    // 이 컴포넌트가 부착된 게임 오브젝트의 콜라이더와 충돌한 게임 오브젝트 가져오기
    var obj = collision.gameObject;

    // 특정 컴포넌트 가져오기
    var component = collision.gameObject.GetComponent<SomeComponent>();

    // 콜라이더 가져오기
    var collider = collision.collider;
    Debug.Log("충돌 시작!");
}

Trigger의 경우는 충돌처리를 함에 있어, 물리 연산을 필요로 하지 않는다는 점으로

충돌이 일어나도 관통을 시킬 수 있다.충돌한 상대방의 게임 오브젝트의 콜라이더 컴포넌트가 Collider 타입으로 들어온다.

충돌 당한 상대의 콜라이더(Collider) 정보를 받아오는 것이라 생각하면 된다.

 

private void OnTriggerEnter(Collider other)
{
    // 이 컴포넌트가 부착된 게임 오브젝트의 콜라이더와 충돌한 게임 오브젝트 가져오기
    var obj = other.gameObject;

    // 특정 컴포넌트 가져오기
    var component = other.gameObject.GetComponent<SomeComponent>();
    Debug.Log(other.name + "감지 시작!");
}

리지드바디 없이 또는 물리적 특징 없이 관통, 충돌체크 하는법

 

  • Is Kinematic 옵션을 활성화 하면 물리적 특징이 사라지고 오직 Trigger 이벤트 발생만을 감지할 수 있다.

 

 

 

 

 

  • 거리인식으로 리지드바디 없이 충돌판별을 할 수 있다.
거리 인식으로 충돌을 판별하면 Rigidbody는 필요가 없다.

Sphere Collider 을 가진 크기가 다른 공 2개가 있다고 하면

SphereCollider ball_1;
SphereCollider ball_2;
float radius;
float distance;

radius = ball_1_col.radius / 2 + ball_2_col.radius / 2;
distance = Vector3.Distance(ball_1.gameObject.transform.position, ball_2.gameObject.transform.position);

if(distance <= radius)
 // 충돌

이벤트 발생 조건

  1. 충돌하는 두 개의 오브젝트에는 모두 Collider가 있어야 한다.
  2. 두 개의 오브젝트 중 하나 이상의 오브젝트에 Rigidbody가 있어야 한다.
  3. Trigger로 사용할 오브젝트는 Collider의 Is Trigger가 체크(Ture)여야 한다.

 

https://luv-n-interest.tistory.com/738

https://wergia.tistory.com/217

 

Collider에 대한 모든 것(기본) [Unity]

이번 글에서는 Collider의 종류와 쓰임 보다는 Collider가 무슨 역할을 하며 왜 필요한지.. 어떤 property를 가지고 있는지를 알아볼 것이다. 도대체 무엇인가? ++Unity.Engine 클래스에 포함되어 있다. RigidB

luv-n-interest.tistory.com

 

 

[Unity3D] Physics - Collider 컴포넌트로 충돌체크하기

Physics - Collider 컴포넌트로 충돌체크하기 작성 기준 버전 :: 2019.2 [본 포스트의 내용은 유튜브 영상을 통해서도 확인할 수 있습니다] 게임에서는 많은 것들이 충돌한다. 캐릭터가 총알이나 화살에

wergia.tistory.com

 

 

'Unity' 카테고리의 다른 글

ScreenPointToRay, ScreenToWorldPoint 차이, 미니맵 클릭 사용 함수  (0) 2022.02.15
추가 정리할 목록들  (0) 2022.02.14
Unity 호출순  (0) 2022.01.26
Unity 드래그 앤 드롭(Drag&Drop)  (0) 2022.01.18

+ Recent posts