Unity의 Collision에 관하여

2023. 11. 30. 17:06·Unity
반응형

Unity의 Collision은 두 Collider가 충돌했을 때 발생하는 이벤트입니다. Collision 이벤트는 다음과 같은 정보를 제공합니다.

  • 충돌한 GameObject의 Collider
  • 충돌 지점
  • 충격량
  • 상대적인 선 속도
  • Rigidbody
  • Transform

Collider

Collider는 물리 엔진에 의해 충돌을 처리하는 데 사용되는 컴포넌트입니다. Collider에는 다음과 같은 종류가 있습니다.

  • BoxCollider: 상자 모양의 Collider
  • SphereCollider: 구 모양의 Collider
  • CapsuleCollider: 원통 모양의 Collider
  • MeshCollider: 메시를 사용하여 정의하는 Collider

Contacts

Contacts는 물리 엔진에 의해 생성되는 물체 간의 충돌 지점입니다.

접점은 여러 개가 될 수 있고, ContactPoint[]을 반환합니다. 

 

ContactPoint는 충돌 지점에 대한 정보를 제공하는 구조체입니다.

  • normal: 충돌 지점의 법선
  • otherCollider: 충돌 지점의 다른 Collider
  • point: 충돌 지점의 위치
  • separation: 충돌한 두 Collider 간의 거리
  • thisCollider: 충돌 지점의 첫 번째 Collider

gameObject

gameObject는 충돌한 게임 오브젝트입니다.

 

impulse

impulse는 충돌 시 발생한 충격량입니다. 충격량은 충돌한 두 객체의 운동량을 변화시킵니다.

 

relativeVelocity

relativeVelocity는 충돌한 두 객체의 상대적인 선 속도입니다. 상대적인 선 속도는 충돌한 두 객체가 충돌하기 전에 서로에 대해 가졌던 속도입니다.

 

rigidbody

rigidbody는 충돌한 GameObject의 Rigidbody 컴포넌트입니다. Rigidbody 컴포넌트는 물리 엔진에 의해 제어되는 객체의 물리적 특성을 나타냅니다.

 

transform

transform은 충돌한 GameObject의 Transform 컴포넌트입니다. Transform 컴포넌트는 객체의 위치, 회전, 스케일을 나타냅니다.

 

활용 방법

Collision 이벤트를 활용하여 다음과 같은 작업을 수행할 수 있습니다.

  • 충돌을 감지하고 처리하기
  • 충돌 시 발생한 효과를 구현하기
  • 충돌 시 발생한 데이터를 분석하기

예시

예를 들어, 다음 코드는 충돌을 감지하고 충돌 지점의 위치를 출력합니다.

void OnCollisionEnter(Collision collision)
{
    // 충돌 지점의 위치를 출력합니다.
    Debug.Log(collision.contacts[0].point);
}

 

다음 코드는 충돌 시 발생한 충격량을 사용하여 객체의 속도를 변화시킵니다.

void OnCollisionEnter(Collision collision)
{
    // 충격량을 사용하여 객체의 속도를 변화시킵니다.
    gameObject.rigidbody.AddForce(collision.impulse * collision.normal);
}

 

이러한 방법을 사용하여 충돌을 보다 효과적으로 처리하고 게임을 보다 재미있게 만들 수 있습니다.

저작자표시 비영리 변경금지 (새창열림)

'Unity' 카테고리의 다른 글

화면 위치에 해당하는 Ray 생성 : Camera.main.ScreenPointToRay  (0) 2023.12.07
Unity의 Character Controller : 간단하게 움직임 구현  (0) 2023.12.05
Unity의 PointEventData 클래스  (1) 2023.11.27
간단하게 오브젝트 간의 각도 구하는 방법  (0) 2023.11.24
Vector3 : Lerp, SmoothDamp, MoveTowards 비교  (0) 2023.11.23
'Unity' 카테고리의 다른 글
  • 화면 위치에 해당하는 Ray 생성 : Camera.main.ScreenPointToRay
  • Unity의 Character Controller : 간단하게 움직임 구현
  • Unity의 PointEventData 클래스
  • 간단하게 오브젝트 간의 각도 구하는 방법
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    ipcamera
    카페24리뷰
    파이썬
    codingcommunity
    카페24리뷰이관
    믈레코비타멸균우유
    스크립트 실행 순서
    라떼우유
    쇼핑몰리뷰
    상품 리뷰 크롤링
    cv2
    list
    Python
    리스트
    programming101
    유니티
    셀레니움
    리뷰이관
    unity
    스크립트 실행
    긴유통기한우유
    C#
    learntocode
    devlife
    codingtips
    appdevelopment
    programmerlife
    스마트스토어리뷰
    rtsp
    리뷰관리
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
Unity의 Collision에 관하여
상단으로

티스토리툴바