Unity 트리거와 OnTriggerEnter2D 완벽 가이드: 영역 감지와 상호작용 구현하기

GoGoComputer·2024년 10월 27일

unity2d game

목록 보기
10/17
post-thumbnail

Unity에서 트리거와 OnTriggerEnter 사용하기: 상세 가이드

이번 가이드에서는 Unity에서 트리거(Trigger)OnTriggerEnter2D 메소드를 사용하는 방법을 자세히 알아보겠습니다. 이 과정을 통해 플레이어가 특정 영역을 통과할 때 이를 감지하고, 콘솔에 메시지를 출력하는 기능을 구현해볼 것입니다.


1. 트리거로 사용할 게임 오브젝트 추가하기

첫 번째 단계는 트리거로 사용할 게임 오브젝트를 추가하는 것입니다.

  1. Hierarchy 창에서 마우스 우클릭합니다.

  2. [2D Object] > [Physics] > [Square]를 선택하여 사각형 오브젝트를 생성합니다.

    • 이때, Physics 아래에 있는 Square를 선택하는 이유는 물리 엔진과 연동된 2D 사각형 오브젝트를 생성하기 위함입니다.
  3. Scene 뷰에서 새로 생성된 사각형 오브젝트를 선택하고, 이동 툴을 사용하여 원하는 위치로 옮깁니다.

    • 플레이어가 이동할 경로 상에 배치하면 됩니다.
  4. 필요에 따라 Scale 값을 조절하여 사각형의 크기를 변경합니다.

    • 사각형을 더 크거나 작게 만들어 트리거 영역을 조절할 수 있습니다.

2. 사각형 오브젝트의 색상 변경하기

오브젝트의 색상을 변경하여 시각적으로 구분하기 쉽게 만들어봅시다.

  1. Inspector 창에서 Sprite Renderer 컴포넌트를 찾습니다.
  2. Color 필드의 흰색 사각형을 클릭합니다.
  3. 나타나는 색상 팔레트에서 원하는 색상을 선택합니다.
    • 예를 들어, 핑크색으로 변경하여 트리거 영역을 명확하게 표시할 수 있습니다.

3. 콜라이더 추가 및 트리거로 설정하기

플레이어와의 상호작용을 위해 콜라이더를 추가하고, 이를 트리거로 설정해야 합니다.

  1. Inspector 창에서 Add Component 버튼을 클릭합니다.
  2. 검색창에 Box Collider 2D를 입력하고 선택하여 추가합니다.
    • 사각형 모양의 오브젝트이므로 Box Collider 2D를 사용합니다.

  1. Box Collider 2D 컴포넌트에서 Is Trigger 옵션을 체크합니다.
    • 이 옵션을 활성화하면 콜라이더는 물리적인 충돌을 발생시키지 않고, 트리거 이벤트만 감지합니다.

4. 레이어 순서 조정하기

플레이어가 트리거 오브젝트 위에 렌더링되도록 레이어 순서를 조정합니다.

  1. 사각형 오브젝트의 Sprite Renderer 컴포넌트에서 Order in Layer 값을 확인합니다.

    • 기본값은 0입니다.
  2. 플레이어 오브젝트를 선택하고, Sprite Renderer 컴포넌트에서 Order in Layer 값을 10으로 설정합니다.

    • 이렇게 하면 플레이어가 항상 사각형 오브젝트보다 앞에 렌더링됩니다.

5. 스크립트 작성하기

트리거 이벤트를 감지하고, 콘솔에 메시지를 출력하는 스크립트를 작성하겠습니다.

5.1. Collision.cs 스크립트 열기

  1. Project 창에서 Collision.cs 스크립트를 찾습니다.
  2. 스크립트를 더블 클릭하여 Visual Studio 또는 기본 코드 편집기에서 엽니다.

5.2. OnTriggerEnter2D 메소드 추가하기

  1. Collision 클래스 내부에 아래의 메소드를 추가합니다:
void OnTriggerEnter2D(Collider2D other)
{
    Debug.Log("방금 뭐야?!");
}
  • 설명:
    • OnTriggerEnter2D는 오브젝트가 트리거 콜라이더에 진입할 때 호출되는 메소드입니다.
    • Debug.Log를 사용하여 콘솔에 메시지를 출력합니다.

5.3. 전체 코드 확인하기

Collision.cs 스크립트의 전체 코드는 다음과 같습니다:

using UnityEngine;

public class Collision : MonoBehaviour
{
    void OnCollisionEnter2D(Collision2D collision)
    {
        Debug.Log("아야!");
    }

    void OnTriggerEnter2D(Collider2D other)
    {
        Debug.Log("방금 뭐야?!");
    }
}
  • 주의 사항:
    • OnCollisionEnter2D 메소드는 물리적인 충돌이 발생할 때 호출됩니다.
    • OnTriggerEnter2D 메소드는 트리거 콜라이더를 통과할 때 호출됩니다.
    • 두 메소드를 모두 포함하여 충돌과 트리거 이벤트를 모두 처리할 수 있습니다.

6. 스크립트 저장 및 Unity로 돌아가기

  1. 코드 편집기에서 Ctrl + S 또는 파일 > 저장을 선택하여 스크립트를 저장합니다.
  2. Unity 에디터로 돌아와 Console 창에서 에러 메시지가 없는지 확인합니다.
    • 에러가 있다면, 코드에서 오타나 문법 오류를 확인하고 수정해야 합니다.

7. 게임 실행 및 테스트

  1. Console 창을 열어둡니다.

    • 상단 메뉴에서 Window > General > Console을 선택하여 열 수 있습니다.
  2. Play 버튼을 클릭하여 게임을 실행합니다.

  3. 플레이어를 조작하여 핑크색 사각형(트리거 영역)을 통과합니다.

  4. Console 창에서 "방금 뭐야?!"라는 메시지가 출력되는지 확인합니다.

    • 트리거 영역을 통과할 때마다 해당 메시지가 출력됩니다.

8. 추가 실험: 트리거 오브젝트 숨기기

트리거 오브젝트를 플레이어에게 보이지 않게 숨길 수 있습니다.

  1. 사각형 오브젝트를 선택합니다.

  2. Inspector 창에서 Sprite Renderer 컴포넌트의 Enabled 체크박스를 해제합니다.

    • 이렇게 하면 오브젝트는 씬에서 보이지 않지만, 콜라이더와 트리거 기능은 그대로 작동합니다.
  3. 게임을 다시 실행하고, 플레이어를 트리거 영역이 있던 위치로 이동합니다.

  4. Console 창에서 메시지가 출력되는지 확인합니다.

    • 오브젝트는 보이지 않지만 트리거 이벤트는 정상적으로 작동합니다.

9. OnTriggerExit2D 메소드 사용하기 (선택 사항)

플레이어가 트리거 영역에서 벗어날 때를 감지하려면 OnTriggerExit2D 메소드를 추가할 수 있습니다.

void OnTriggerExit2D(Collider2D other)
{
    Debug.Log("어디 가는 거야?");
}
  • 이 메소드를 Collision 클래스에 추가하면, 플레이어가 트리거 영역을 떠날 때 콘솔에 "어디 가는 거야?"라는 메시지가 출력됩니다.

  • 전체 코드 업데이트:

using UnityEngine;

public class Collision : MonoBehaviour
{
    void OnCollisionEnter2D(Collision2D collision)
    {
        Debug.Log("아야!");
    }

    void OnTriggerEnter2D(Collider2D other)
    {
        Debug.Log("방금 뭐야?!");
    }

    void OnTriggerExit2D(Collider2D other)
    {
        Debug.Log("어디 가는 거야?");
    }
}

10. 트리거와 콜라이더의 활용

트리거와 콜라이더는 게임 개발에서 다양한 용도로 사용됩니다.

  • 체크포인트: 플레이어가 특정 지점을 통과할 때 진행 상황을 저장하거나 이벤트를 발생시킵니다.
  • 시작/종료 지점: 레이스 게임 등에서 시작선이나 결승선을 나타냅니다.
  • 아이템 획득: 플레이어가 아이템에 닿았을 때 아이템을 획득하고 사라지게 합니다.
  • 지역 전환: 특정 영역에 진입하면 배경음악이 바뀌거나 새로운 적이 등장합니다.
  • 안보이는 벽: 플레이어가 특정 영역을 벗어나지 못하도록 제한합니다.

11. 마무리

이번 가이드를 통해 Unity에서 트리거와 OnTriggerEnter2D 메소드를 사용하는 방법을 자세히 알아보았습니다. 이를 통해 플레이어의 상호작용을 감지하고, 게임 내 다양한 이벤트를 구현할 수 있습니다.

요약하면:

  • 트리거 설정: 콜라이더의 Is Trigger 옵션을 활성화하여 트리거로 사용합니다.
  • 이벤트 감지: OnTriggerEnter2DOnTriggerExit2D 메소드를 사용하여 트리거 진입 및 이탈을 감지합니다.
  • 콘솔 출력: Debug.Log를 활용하여 개발 중에 이벤트 발생을 확인합니다.
  • 레이어 관리: Order in Layer를 조정하여 오브젝트의 렌더링 순서를 제어합니다.

이러한 기법들은 게임 개발의 기본적인 요소이며, 이를 활용하여 더욱 풍부하고 상호작용적인 게임을 만들 수 있습니다.

다음 단계:

  • 트리거 이벤트 발생 시 사운드 재생, 애니메이션 실행 등 다양한 반응을 추가해보세요.
  • 여러 개의 트리거 오브젝트를 생성하고 각각 다른 이벤트를 할당해보세요.
  • 플레이어가 특정 키를 눌렀을 때만 트리거가 활성화되도록 조건을 추가해보세요.

전체 실습 코드

아래는 이번 가이드에서 작성한 Collision.cs 스크립트의 전체 코드입니다.

using UnityEngine;

public class Collision : MonoBehaviour
{
    // 플레이어가 물리적인 충돌을 할 때 호출됩니다.
    void OnCollisionEnter2D(Collision2D collision)
    {
        Debug.Log("아야!");
    }

    // 플레이어가 트리거 영역에 진입할 때 호출됩니다.
    void OnTriggerEnter2D(Collider2D other)
    {
        Debug.Log("방금 뭐야?!");
    }

    // 플레이어가 트리거 영역에서 벗어날 때 호출됩니다.
    void OnTriggerExit2D(Collider2D other)
    {
        Debug.Log("어디 가는 거야?");
    }
}
  • 사용 방법:
    • 이 스크립트를 플레이어 오브젝트에 추가합니다.
    • 필요한 콜라이더와 트리거 설정이 완료되었는지 확인합니다.
    • 게임을 실행하여 트리거와 충돌 이벤트가 정상적으로 작동하는지 테스트합니다.

축하합니다! 이제 Unity에서 트리거와 콜라이더를 활용하여 다양한 게임 메커니즘을 구현할 수 있게 되었습니다. 계속해서 실습하고 응용하여 자신만의 독특한 게임을 만들어보세요.

profile
IT를 좋아합니다.

0개의 댓글