유니티 벽돌 파괴 스크립트: 충돌과 내구성 관리
유니티로 벽돌 깨기 게임을 만들 때, 공이 벽돌에 닿으면 벽돌이 사라지도록 만드는 과정이 필요합니다. 이 스크립트는 벽돌에 부착되어 공과의 충돌을 감지하고, 벽돌이 가진 내구성을 관리하여 최종적으로 벽돌을 파괴하는 기능을 구현합니다. 이 코드를 응용하면 한 번에 부서지는 벽돌은 물론, 여러 번의 타격을 견디는 단단한 벽돌까지 만들 수 있습니다.
벽돌 오브젝트의 역할을 담당하는 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);
: 이 명령은 스크립트가 부착된 오브젝트(즉, 벽돌)를 게임 화면에서 영구적으로 제거합니다.
유니티 에디터에서의 작업 순서
이 스크립트가 의도한 대로 작동하려면, 유니티 에디터에서 아래와 같이 환경을 구성해야 합니다.
- 벽돌 오브젝트 준비: 게임에 사용할 벽돌 오브젝트(예:
Sprite
또는Cube
)를 만들고,BoxCollider2D
같은 2D 콜라이더 컴포넌트를 추가합니다. - 공 오브젝트 설정: 공 오브젝트에는 **
Rigidbody2D
**와Collider2D
컴포넌트가 모두 있어야 충돌이 제대로 감지됩니다. - 태그 부여: 공 오브젝트를 선택하고, 인스펙터 창에서 태그를 **”Ball”**로 지정합니다. 이 태그는 스크립트가 충돌 대상을 구분하는 데 사용됩니다.
- 스크립트 적용: 작성한
Brick.cs
스크립트를 모든 벽돌 오브젝트에 부착합니다. - 내구성 설정: 각 벽돌을 선택한 후 인스펙터 창에서
health
변수의 값을 조정하여, 벽돌의 파괴 횟수를 원하는 대로 설정합니다.
이러한 단계를 거치면, 공이 벽돌에 닿을 때마다 내구성이 줄어들고, 0이 되면 벽돌이 사라지는 기능이 완성됩니다.