Vật phẩm rơi xuống
Bài học 14 trên 19 trong khóa học Trò chơi Unity: phá gạch của Coddy.
Một viên gạch bị phá đôi khi làm rơi vật phẩm tăng sức mạnh, vật phẩm này rơi về phía thanh đỡ. Việc viên gạch có làm rơi vật phẩm hay không phụ thuộc vào một lần tung ngẫu nhiên: Random.value là một số thực ngẫu nhiên từ 0 đến 1, nên Random.value < 0.15f đúng khoảng 15 lần trong 100 lần. Lưu cơ hội này trong một trường giúp bạn điều chỉnh nó, đồng thời cho phép một bài kiểm thử đặt giá trị thành 1 để lần nào cũng rơi vật phẩm, hoặc thành 0 để không lần nào rơi.
Vật phẩm tăng sức mạnh nào sẽ rơi được quyết định bằng một lần tung thứ hai: chọn ngẫu nhiên một chỉ số trong mảng prefab. Khi dùng số nguyên, Random.Range không lấy giá trị tối đa, nên Random.Range(0, array.Length) có thể chọn mọi phần tử. Chiến lợi phẩm của kẻ địch:
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);
}Vật phẩm tăng sức mạnh rơi với tốc độ ổn định bằng cách tự di chuyển mỗi khung hình, rồi tự hủy khi xuống dưới khu vực chơi để những vật phẩm bị bỏ lỡ không chất đống. Prefab của vật phẩm có Rigidbody động học và collider dạng trigger, nhờ đó hệ thống vật lý biết vật phẩm đang di chuyển và vật phẩm có thể nhận biết khi chạm tới thanh đỡ.
Thử thách
KhóĐôi khi, gạch vỡ sẽ rơi ra vật phẩm tăng sức mạnh.
- Trong
PowerUp, thêmfallSpeed = 3fvàbottomY = -9f; trongUpdate(), cho vật phẩm rơi với tốc độ fallSpeed mỗi giây và hủy vật phẩm khi nó rơi xuống dưới bottomY. - Trong
GameManager, thêmpublic GameObject[] powerUps;vàpublic float dropChance = 0.15f; - Trong BrickBroken, nếu
Random.value < dropChance, tạo một đối tượng từpowerUps[Random.Range(0, powerUps.Length)]tại vị trí của viên gạch.
Nhấn Chơi rồi phá gạch: thỉnh thoảng sẽ có một vật phẩm tăng sức mạnh rơi ra (bắt vật phẩm sẽ là phần tiếp theo). Sau đó nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
public class PowerUp : MonoBehaviour
{
// Chương cuối: các vật phẩm tăng sức mạnh rơi ra từ những viên gạch bị phá vỡ.
}
Tất cả bài học trong Trò chơi Unity: phá gạch
4Vật phẩm tăng sức mạnh
Vật phẩm rơi xuốngTự luyện tập: Playground Unity