Khoảng cách giữa các vật
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 28 trên 85.
Vector3.Distance(a, b) cho biết khoảng cách giữa hai điểm, tính bằng đơn vị theo đường thẳng qua cả ba trục. Đây là độ dài bước giữa chúng, (a - b).magnitude, nên thứ tự của a và b không quan trọng. Khoảng cách từ (0, 0, 0) đến (3, 0, 4) là 5.
So sánh khoảng cách với một con số để tập lệnh biết khi nào có thứ gì đó ở gần. Người cắm trại này chỉ có thể sưởi ấm tay khi cách lửa trại không quá 4 đơn vị. Inspector thiết lập vị trí của lửa trại:
public Vector3 campfire = new Vector3(3, 0, 4);
void Update()
{
float d = Vector3.Distance(transform.position, campfire);
if (d < 4f && Input.GetKeyDown(KeyCode.Space))
{
Debug.Log("You warm your hands");
}
}Khoảng cách cũng tính cả độ cao: người cắm trại ở phía trên lửa trại 5 đơn vị thì cách lửa trại 5 đơn vị, không phải 0. Khi không cần tính độ cao, hãy so sánh hai điểm có cùng giá trị y.
Thử thách
DễLàm cho người đi bộ di chuyển với nửa tốc độ trong đầm lầy.
- Bên dưới
float s = speed;, viếtif (Vector3.Distance(transform.position, swamp) < 3f). - Bên trong câu lệnh đó, đặt
s = speed / 2;. Giữ nguyên trườngspeedvà các dòng di chuyển.
Nhấn “Chơi” rồi đi thẳng qua đầm lầy: người đi bộ sẽ chậm lại khi ở trong đó. Sau đó nhấn “Kiểm tra”.
Tự làm thử
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
public Vector3 swamp = new Vector3(0, 0.5f, 0);
void Update()
{
float s = speed;
// Khi ở cách swamp không quá 3 đơn vị, di chuyển với tốc độ bằng một nửa.
Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
transform.position += direction.normalized * s * Time.deltaTime;
}
}
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