Tạo đối tượng ngẫu nhiên
Thuộc phần Những kiến thức cơ bản về lập trình trong Unity trong hành trình Unity của Coddy. Bài học 68 trên 85.
Random.Range(min, max) chọn một số ngẫu nhiên, và giá trị hàm có thể trả về tùy thuộc vào kiểu của các số bạn đưa vào. Với số thực, mọi giá trị từ min đến max đều có thể xuất hiện, bao gồm cả hai đầu mút. Với số nguyên, bản thân max không được tính. Vì vậy, để tung xúc xắc, ta dùng khoảng từ 1 đến 7:
int roll = Random.Range(1, 7); // 1, 2, 3, 4, 5 hoặc 6
Debug.Log("You rolled " + roll);Phiên bản số nguyên không tính max, nên Random.Range(0, names.Length) luôn cho ra một chỉ số mảng hợp lệ. Điều đó cũng có nghĩa là Random.Range(-5, 5) chỉ cho ra các số nguyên từ -5 đến 4, ngay cả khi bạn lưu kết quả vào một biến số thực. Hãy viết Random.Range(-5f, 5f) để lấy mọi giá trị trong khoảng đó.
Để tạo vị trí và hướng trong không gian 3D, Unity có sẵn hai vectơ ngẫu nhiên. Random.insideUnitSphere là một điểm ngẫu nhiên bên trong khối cầu bán kính 1, có tâm tại (0, 0, 0). Random.onUnitSphere là một điểm ngẫu nhiên trên bề mặt khối cầu đó, nên nó tạo ra một hướng ngẫu nhiên có độ dài 1. transform.position + Random.insideUnitSphere * 2f tạo ra một vị trí cách tối đa 2 đơn vị theo bất kỳ hướng nào, kể cả lên trên và xuống dưới.
Thử thách
Trung bìnhMỗi lần nhấp, một chiếc thùng rơi từ vị trí ngẫu nhiên trên sàn.
- Bên trong
ifxử lý thao tác nhấp, hãy chọnfloat x = Random.Range(-4f, 4f);vàfloat ztheo cách tương tự. - Gọi
Instantiate(cratePrefab, new Vector3(x, 5, z), Quaternion.identity);.
Nhấn Chơi rồi nhấp vài lần: các thùng rơi ở những vị trí mới. Sau đó nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
public class CrateDropper : MonoBehaviour
{
public GameObject cratePrefab;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
// Thả một thùng từ vị trí ngẫu nhiên: x và z từ -4 đến 4, y = 5
}
}
}
Tất cả bài học trong Những kiến thức cơ bản về lập trình trong Unity
1C# cơ bản trong Unity
Xin chào, UnityBiếnSố thập phân cần có fVăn bản trong ConsoleBiến có thể ghi nhớIf và elseSo sánh các sốÔn tập: Thu thập xu7Vòng lặp và phương thức
Lặp lại với forVòng lặp lồng nhauViết phương thứcPhương thức trả lờiMảngÔn tập: Cầu thang2Làm cho nó chuyển động
Đặt khối lập phươngDi chuyển theo từng khung hìnhXoay mỗi giâyĐiều khiển bằng các phímÔn tập: Lái khối lập phương5Vectơ
Cộng vectơPhương hướngKhông gian cục bộ và không gian thế giớiTốc độ theo đường chéoKhoảng cách giữa các vậtVector3 là một structÔn tập: Người điều khiển drone8GameObject và thành phần
Tham chiếu trong InspectorLấy một thành phầnThành phần bị thiếuThêm một thành phầnRequireComponentHiện và ẩnÔn tập: Công tắc đèn11Prefab và tạo đối tượng
Prefab và InstantiateTạo đối tượng theo bộ hẹn giờTạo đối tượng theo lướiDanh sách đối tượngXóa đối tượng mới nhấtHủy đối tượngTạo đối tượng ngẫu nhiênÔn tập: Pháo hoa3Inspector
Các trường trong InspectorSerializeFieldSố thực và MathfThuộc tính trong InspectorÔn tập: thang máy6Biến đổi và hệ phân cấp
Đối tượng cha và conKéo cờ lênTỷ lệNhìn vào các vật thểDi chuyển đến một điểmÔn tập: Mặt trăng quay quanh9Dự án: Bắt lấy ngôi sao
Người bắt saoNgôi sao rơiTự luyện tập: Playground Unity