드롭
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와 트리거 콜라이더가 있어, 물리 시스템이 파워업이 움직인다는 것을 알 수 있고 패들에 닿았을 때 이를 감지할 수 있습니다.
챌린지
어려움벽돌이 부서지면 가끔 파워업이 떨어집니다.
PowerUp에fallSpeed = 3f와bottomY = -9f를 추가하고,Update()에서 초당 fallSpeed의 속도로 떨어지게 한 다음 bottomY 아래에서 파괴합니다.GameManager에public GameObject[] powerUps;와public float dropChance = 0.15f;를 추가합니다.- BrickBroken에서
Random.value < dropChance이면 벽돌의 위치에powerUps[Random.Range(0, powerUps.Length)]를 생성합니다.
‘플레이’를 눌러 벽돌을 부수세요. 가끔 파워업이 떨어집니다(다음에는 파워업을 잡는 기능을 추가합니다). 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
public class PowerUp : MonoBehaviour
{
// 마지막 장: 부서진 벽돌에서 떨어지는 파워업.
}
Unity 게임: 벽돌 깨기의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드