Unity 2D 게임 충돌 감지 튜토리얼: 객체 충돌 시 이벤트 처리하기

GoGoComputer·2024년 10월 27일

unity2d game

목록 보기
9/17
post-thumbnail

게임에서 충돌 영역을 코드에 적용하여, 어떤 객체가 다른 객체에 부딪혔을 때 특정 동작이 실행되도록 만들어 보겠습니다. 마지막에는 작동 가능한 전체 코드를 제공해 드릴 테니 함께 따라와 주세요.

1. 충돌 감지 코드를 만드는 이유

게임에서 플레이어가 다른 객체와 부딪힐 때 이를 감지하여 원하는 동작을 실행하고 싶습니다. 예를 들어, 부딪혔을 때 콘솔에 메시지를 출력하거나, 점수를 증가시키거나, 효과음을 재생할 수 있겠죠.

2. 새로운 스크립트 생성하기

새로운 기능을 추가할 때는 기존 스크립트에 코드를 덧붙이는 것보다 새로운 스크립트를 생성하는 것이 좋습니다. 이렇게 하면 코드 관리가 쉬워지고, 스크립트가 너무 길어지는 것을 방지할 수 있습니다.

  • Assets 영역에서 우클릭하여 "Create" > "C# Script"를 선택합니다.
  • 스크립트 이름을 Collision이라고 지정합니다.
  • 생성된 Collision 스크립트를 더블 클릭하여 열어주세요.

3. 불필요한 코드 삭제하기

기본적으로 생성되는 Start()Update() 함수는 이번 예제에서 필요하지 않으므로 삭제하겠습니다.

using UnityEngine;

public class Collision : MonoBehaviour
{
    // Start()와 Update() 함수 삭제
}

4. 충돌 감지를 위한 함수 추가하기

Unity에는 충돌을 감지하는 내장 메서드가 있습니다. 우리는 2D 게임을 만들고 있으므로 OnCollisionEnter2D 메서드를 사용하겠습니다.

using UnityEngine;

public class Collision : MonoBehaviour
{
    void OnCollisionEnter2D(Collision2D other)
    {
        // 충돌 시 실행될 코드 작성
    }
}
  • Collision2D other는 충돌한 객체에 대한 정보를 담고 있습니다. 이번 예제에서는 이 정보를 사용하지 않지만, 나중에 필요할 수 있으니 그대로 두겠습니다.

5. 충돌 시 콘솔에 메시지 출력하기

충돌이 발생했을 때 콘솔에 "아야!"라는 메시지를 출력해 보겠습니다.

using UnityEngine;

public class Collision : MonoBehaviour
{
    void OnCollisionEnter2D(Collision2D other)
    {
        Debug.Log("아야!");
    }
}
  • Debug.Log("아야!");는 콘솔에 메시지를 출력하는 함수입니다.

6. 스크립트를 플레이어 객체에 추가하기

이제 작성한 스크립트를 플레이어 객체에 연결해야 합니다.

  • Hierarchy 창에서 플레이어 객체를 선택합니다.
  • Inspector 창에서 "Add Component" 버튼을 클릭하고, Collision 스크립트를 검색하여 추가합니다.
    • 또는 프로젝트 창에서 Collision 스크립트를 드래그하여 플레이어 객체에 넣어도 됩니다.

7. 게임 실행 및 테스트

  • 콘솔 창을 열어주세요. (메뉴 바에서 "Window" > "General" > "Console" 선택)
  • 게임을 실행하고, 플레이어를 움직여 다른 객체와 충돌시켜 봅니다.
  • 충돌이 발생하면 콘솔에 "아야!"라는 메시지가 출력됩니다.

8. 콘솔의 Collapse 기능 활용하기

  • 콘솔 창의 "Collapse" 버튼을 클릭하면 동일한 메시지가 하나로 묶여 표시됩니다.
  • 메시지 오른쪽에 숫자가 나타나며, 이는 해당 메시지가 몇 번 출력되었는지를 나타냅니다.

9. 충돌이 감지되지 않는다면?

  • 양쪽 객체 모두 Collider가 부착되어 있는지 확인하세요. (예: Box Collider 2D)
  • 적어도 하나의 객체에는 Rigidbody 2D가 있어야 합니다.
    • Rigidbody 2D를 추가하려면 객체를 선택하고 "Add Component"에서 Rigidbody 2D를 검색하여 추가합니다.

10. 완성된 코드

아래는 이번 예제에서 사용한 전체 코드입니다.

using UnityEngine;

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

11. 마무리

축하합니다! 이제 객체 간의 충돌을 감지하고, 충돌 시 특정 동작을 수행하는 방법을 배웠습니다. 이번 예제에서는 간단히 콘솔에 메시지를 출력했지만, 앞으로는 충돌 시 더 흥미로운 동작을 추가해 볼 수 있습니다.

예를 들어:

  • 플레이어의 체력을 감소시키기
  • 효과음 재생하기
  • 점수 증가 또는 감소시키기
  • 애니메이션 재생하기

profile
IT를 좋아합니다.

0개의 댓글