Menu
CoddyTech

공 놓치기

Coddy의 Unity 게임: 벽돌 깨기 코스 레슨. 19개 중 8번째.

패들을 지나친 공은 잃게 됩니다. 이제 패들 아래에는 DeathZone이 있습니다. Is Trigger로 설정된 박스 콜라이더와 DeathZone 태그가 있는 오브젝트입니다. 트리거는 아무것도 막지 않습니다. Rigidbody가 있는 물체가 트리거에 들어오면 OnTriggerEnter(Collider other)를 보냅니다. 공은 생명 수를 관리하고 다음에 일어날 일을 결정하는 GameManager에 공을 잃었다고 알립니다.

물에 빠진 구슬은 스폰 지점에서 다시 시작합니다.

void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("Water")) Respawn();
}

void Respawn()
{
    rb.linearVelocity = Vector3.zero;
    transform.position = spawnPoint.position;
}

공은 구슬보다 할 일이 적습니다. Update()는 launched가 false인 동안 매 프레임 공을 패들 위에 올려놓으므로, 초기화할 때는 해당 플래그를 해제하고 공을 멈추기만 하면 됩니다. 그러면 다음 프레임에 공이 패들로 돌아오고, Space를 눌러 다시 발사할 수 있습니다.

challenge icon

챌린지

중급

공을 놓치면 목숨이 하나 줄고 공이 패들 위로 돌아옵니다.

  1. Ball에서 public void ResetToPaddle()을 작성하세요. 내용은 launched = false;와 속도를 Vector3.zero로 설정하는 것입니다.
  2. Ball의 OnTriggerEnter에서 DeathZone 태그가 지정된 오브젝트에 들어가면 GameManager.Instance.BallLost(this)를 호출하세요.
  3. GameManager에 public int lives = 3;과 public void BallLost(Ball lost)를 추가하세요. 목숨을 하나 줄인 다음 lost.ResetToPaddle();을 호출하세요.

‘플레이’를 누르고 공을 놓쳐 보세요. 공이 다시 패들 위에서 기다립니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;

public class GameManager : MonoBehaviour
{
    public static GameManager Instance;

    public Brick brickPrefab;
    public Transform wall;
    public int rows = 5;
    public int columns = 9;
    public float spacingX = 1.75f;
    public float spacingY = 0.75f;
    public float topY = 6f;
    public int[] rowHits = { 2, 1, 1, 1, 1 };

    int score;

    void Awake()
    {
        Instance = this;
    }

    void Start()
    {
        BuildWall();
    }

    void BuildWall()
    {
        float left = -(columns - 1) * spacingX / 2f;
        for (int row = 0; row < rows; row++)
        {
            for (int col = 0; col < columns; col++)
            {
                Vector3 pos = new Vector3(left + col * spacingX, topY - row * spacingY, 0f);
                Brick brick = Instantiate(brickPrefab, pos, Quaternion.identity, wall);
                brick.SetHits(rowHits[row]);
            }
        }
    }

    public void BrickBroken(Brick brick)
    {
        score += brick.points;
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Unity 게임: 벽돌 깨기의 모든 레슨

직접 연습해 보세요: Unity 플레이그라운드