safarizone

모든 작성하고 싶어하는 마음으로

유니티 벽돌 파괴 스크립트: 충돌과 내구성 관리

유니티로 벽돌 깨기 게임을 만들 때, 공이 벽돌에 닿으면 벽돌이 사라지도록 만드는 과정이 필요합니다. 이 스크립트는 벽돌에 부착되어 공과의 충돌을 감지하고, 벽돌이 가진 내구성을 관리하여 최종적으로 벽돌을 파괴하는 기능을 구현합니다. 이 코드를 응용하면 한 번에 부서지는 벽돌은 물론, 여러 번의 타격을 견디는 단단한 벽돌까지 만들 수 있습니다.


벽돌 오브젝트의 역할을 담당하는 Brick.cs 스크립트

이 스크립트는 게임 내의 모든 벽돌 오브젝트에 적용되어 각자의 파괴 로직을 독립적으로 처리합니다.

C#

using UnityEngine;

public class Brick : MonoBehaviour
{
    // 벽돌이 버틸 수 있는 타격 횟수. 0이 되면 파괴됩니다.
    // 유니티 에디터에서 개별 벽돌의 값을 조절하여 난이도를 변경할 수 있습니다.
    public int health = 1;

    // 2D 환경에서 다른 충돌체와 접촉했을 때 호출됩니다.
    void OnCollisionEnter2D(Collision2D other)
    {
        // 충돌한 오브젝트의 태그가 "Ball"인지 확인합니다.
        if (other.gameObject.CompareTag("Ball"))
        {
            // 충돌이 발생하면 내구성을 1 감소시킵니다.
            health--;

            // 내구성이 0 이하가 되면 벽돌을 제거합니다.
            if (health <= 0)
            {
                // 현재 벽돌 게임 오브젝트를 파괴하는 명령입니다.
                Destroy(gameObject);
            }
        }
    }
}

코드 상세 설명

  • public int health = 1;: 이 변수는 벽돌의 내구성을 나타냅니다. public 변수이므로, 유니티 에디터의 인스펙터 창에서 각 벽돌마다 다른 health 값을 설정해 다양한 종류의 벽돌을 쉽게 만들 수 있습니다.
  • void OnCollisionEnter2D(Collision2D other): 이 함수는 벽돌에 부착된 2D 콜라이더가 다른 오브젝트의 2D 콜라이더와 접촉하는 순간 자동으로 호출됩니다.
  • other.gameObject.CompareTag("Ball"): 충돌이 발생하면, other 변수에 부딪힌 오브젝트의 정보가 담깁니다. 이 정보를 활용해 충돌 상대방의 태그가 “Ball”인지 확인하여, 오직 공에 의해서만 벽돌이 파괴되도록 조건을 지정합니다.
  • health--;: 조건이 만족되면, 벽돌의 내구성이 1씩 줄어듭니다.
  • if (health <= 0): 내구성이 0 또는 그 이하가 되면 벽돌을 파괴하는 다음 단계로 넘어갑니다.
  • Destroy(gameObject);: 이 명령은 스크립트가 부착된 오브젝트(즉, 벽돌)를 게임 화면에서 영구적으로 제거합니다.

유니티 에디터에서의 작업 순서

이 스크립트가 의도한 대로 작동하려면, 유니티 에디터에서 아래와 같이 환경을 구성해야 합니다.

  1. 벽돌 오브젝트 준비: 게임에 사용할 벽돌 오브젝트(예: Sprite 또는 Cube)를 만들고, BoxCollider2D 같은 2D 콜라이더 컴포넌트를 추가합니다.
  2. 공 오브젝트 설정: 공 오브젝트에는 **Rigidbody2D**와 Collider2D 컴포넌트가 모두 있어야 충돌이 제대로 감지됩니다.
  3. 태그 부여: 공 오브젝트를 선택하고, 인스펙터 창에서 태그를 **”Ball”**로 지정합니다. 이 태그는 스크립트가 충돌 대상을 구분하는 데 사용됩니다.
  4. 스크립트 적용: 작성한 Brick.cs 스크립트를 모든 벽돌 오브젝트에 부착합니다.
  5. 내구성 설정: 각 벽돌을 선택한 후 인스펙터 창에서 health 변수의 값을 조정하여, 벽돌의 파괴 횟수를 원하는 대로 설정합니다.

이러한 단계를 거치면, 공이 벽돌에 닿을 때마다 내구성이 줄어들고, 0이 되면 벽돌이 사라지는 기능이 완성됩니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다