Version: 2023.2
언어: 한국어
충돌을 사용하여 다른 이벤트 트리거
OnTrigger 이벤트

OnCollision 이벤트

충돌 이벤트는 트리거되지 않은 두 개의 콜라이더가 접촉할 때 발생합니다.

충돌 이벤트의 사용 예시는 다음과 같습니다.

  • 발사체가 타겟에 맞으면 발사체와 적을 모두 파괴합니다.
  • 플레이어 캐릭터가 문에 닿으면 문을 여는 애니메이션을 트리거합니다.
  • 플레이어 캐릭터가 파워업에 닿으면 플레이어의 크기가 커집니다.

충돌 이벤트 작업에는 주로 다음 API 함수가 사용됩니다.

  • Collider.OnCollisionEnter: 두 콜라이더가 처음 접촉하면 Unity가 각 콜라이더에서 이 함수를 호출합니다.
  • Collider.OnCollisionStay: 두 콜라이더가 접촉하는 동안 각 콜라이더에서 물리 업데이트마다 한 번씩 이 함수를 호출합니다.
  • Collider.OnCollisionExit: 두 콜라이더가 접촉을 중지하면 Unity가 각 콜라이더에서 이 함수를 호출합니다.

충돌 이벤트의 경우 연관된 오브젝트 중 하나 이상에 동적 물리 바디(Is Kinematic이 비활성화된 리지드바디 또는 관절 바디)가 있어야 합니다. 충돌에 포함된 두 게임 오브젝트가 모두 키네마틱 물리 바디인 경우, 충돌은 OnCollision 함수를 호출하지 않습니다.

다음 예시는 Unity가 각 함수를 호출할 때 콘솔에 메시지를 출력합니다.

using UnityEngine;
using System.Collections;

public class DoorObject : MonoBehaviour
{
    // "other" refers to the collider that is touching this collider
    void OnColliderEnter (Collider other)
    {
        Debug.Log ("A collider has made contact with the DoorObject Collider");
    }

    void OnColliderStay (Collider other)
    {
        Debug.Log ("A collider is in contact with the DoorObject Collider");
    }
    
    void OnColliderExit (Collider other)
    {
        Debug.Log ("A collider has ceased contact with the DoorObject Collider");
    }
}

OnCollision 이벤트에 대한 실제 적용 예시는 콜라이더 이벤트 스크립트 예시를 참조하십시오.

충돌을 사용하여 다른 이벤트 트리거
OnTrigger 이벤트