Người chạy
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 75 trên 85.
Chương này hướng dẫn bạn xây dựng một trò chơi nhỏ, Dodge the Blocks. Bạn điều khiển nhân vật chạy dọc theo một làn đường trong khi các khối rơi từ trên trời xuống, và chỉ cần chạm một lần là lượt chơi kết thúc. Toàn bộ trò chơi nằm trong một script, Runner, được bổ sung một tính năng trong mỗi bài học: điều khiển, các khối rơi, dọn chúng đi, va chạm và điểm số.
Tính năng đầu tiên là điều khiển để nhân vật luôn ở trên làn đường, bằng Mathf.Clamp(value, min, max) trong Catch the Star: hàm này trả về min khi giá trị nhỏ hơn phạm vi, max khi giá trị lớn hơn phạm vi, còn lại thì trả về chính giá trị đó. Vị trí đặt hàm giới hạn rất quan trọng. Thanh năng lượng này đầy lên khi bạn giữ Space, cạn dần khi bạn không giữ phím và luôn nằm trong khoảng từ 0 đến 10:
[SerializeField] private float charge = 0f;
void Update()
{
if (Input.GetKey(KeyCode.Space))
{
charge += 4f * Time.deltaTime;
}
else
{
charge -= 2f * Time.deltaTime;
}
charge = Mathf.Clamp(charge, 0f, 10f);
transform.localScale = new Vector3(0.5f, charge, 0.5f);
}Hãy đặt hàm giới hạn sau khi thay đổi giá trị. Nếu giới hạn giá trị trước, nó có thể vượt quá giới hạn một bước khi kết thúc khung hình, và thanh sẽ được vẽ theo giá trị đó. Mathf.Clamp cũng trả về một số mới thay vì thay đổi biến bạn truyền vào, vì vậy hãy gán kết quả trở lại biến.
Thử thách
Trung bìnhBắt đầu trò Dodge the Blocks: điều khiển nhân vật chạy dọc theo làn đường.
- Trong
Update(), sao chéptransform.positionvàoVector3 p, rồi cộngInput.GetAxisRaw("Horizontal") * speed * Time.deltaTimevàop.x. Trục thô giúp nhân vật di chuyển ngay ở tốc độ tối đa. - Đặt
p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge);, sau đó đặttransform.position = p;.
Nhấn Chơi, nhấp vào trò chơi rồi chạy đến cả hai đầu: nhân vật sẽ dừng ở mép đường. Sau đó nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
public class Runner : MonoBehaviour
{
[SerializeField] private float speed = 6f;
[SerializeField] private float laneEdge = 4f;
void Update()
{
// Di chuyển dọc theo trục x bằng các phím mũi tên, rồi giữ x trong làn đường
}
}
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 đèn3Inspector
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