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)
// 충돌
이벤트 발생 조건
- 충돌하는 두 개의 오브젝트에는 모두 Collider가 있어야 한다.
- 두 개의 오브젝트 중 하나 이상의 오브젝트에 Rigidbody가 있어야 한다.
- 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 |