Menu
CoddyTech

드롭

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

깨진 벽돌은 때때로 패들을 향해 떨어지는 파워업을 떨어뜨립니다. 파워업이 떨어지는지는 확률로 결정됩니다. Random.value는 0에서 1 사이의 임의의 부동 소수점 숫자이므로, Random.value < 0.15f는 100번 중 약 15번 참이 됩니다. 확률을 필드에 저장해 두면 값을 조정할 수 있고, 테스트에서 매번 떨어지도록 1로 설정하거나 한 번도 떨어지지 않도록 0으로 설정할 수도 있습니다.

어떤 파워업이 떨어질지는 두 번째 확률로 결정됩니다. 프리팹 배열에서 임의의 인덱스를 선택합니다. 정수와 함께 사용하는 Random.Range는 최댓값을 포함하지 않으므로, Random.Range(0, array.Length)는 모든 요소를 선택할 수 있습니다. 적의 전리품:

public GameObject[] loot;
public float lootChance = 0.25f;

void DropLoot()
{
    if (Random.value >= lootChance) return;
    int pick = Random.Range(0, loot.Length);
    Instantiate(loot[pick], transform.position, Quaternion.identity);
}

파워업은 매 프레임 스스로를 이동해 일정한 속도로 떨어지며, 플레이 영역 아래로 내려가면 스스로 파괴되므로 놓친 파워업이 쌓이지 않습니다. 파워업의 프리팹에는 키네마틱 Rigidbody와 트리거 콜라이더가 있어, 물리 시스템이 파워업이 움직인다는 것을 알 수 있고 패들에 닿았을 때 이를 감지할 수 있습니다.

challenge icon

챌린지

어려움

벽돌이 부서지면 가끔 파워업이 떨어집니다.

  1. PowerUp에 fallSpeed = 3f와 bottomY = -9f를 추가하고, Update()에서 초당 fallSpeed의 속도로 떨어지게 한 다음 bottomY 아래에서 파괴합니다.
  2. GameManager에 public GameObject[] powerUps;와 public float dropChance = 0.15f;를 추가합니다.
  3. BrickBroken에서 Random.value < dropChance이면 벽돌의 위치에 powerUps[Random.Range(0, powerUps.Length)]를 생성합니다.

‘플레이’를 눌러 벽돌을 부수세요. 가끔 파워업이 떨어집니다(다음에는 파워업을 잡는 기능을 추가합니다). 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;

public class PowerUp : MonoBehaviour
{
    // 마지막 장: 부서진 벽돌에서 떨어지는 파워업.
}

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

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