Nhìn trước
Thuộc phần Vật lý và lối chơi trong hành trình Unity của Coddy. Bài học 49 trên 71.
Camera đặt giữa người chơi đang di chuyển sẽ cho thấy cả khu vực phía sau lẫn phía trước họ. Thay vào đó, góc nhìn ngang có thể đi trước: đặt camera cách người chơi vài đơn vị về phía trước, theo hướng họ đang di chuyển.
Hướng đi trước đổi khi người chơi quay lại, nhưng nếu hướng đi trước đổi ngay lập tức thì toàn bộ khung hình sẽ giật mạnh. Vì vậy, hãy lưu hướng đi trước trong một trường và dịch chuyển nó dần đến giá trị mới bằng Mathf.MoveTowards, từng chút một theo mỗi khung hình. Camera thuyền này đi trước 2 đơn vị và dịch chuyển với tốc độ 3 đơn vị mỗi giây:
float lead;
float heading = 1f; // 1 đi thuyền sang phải, -1 đi thuyền sang trái
void LateUpdate()
{
lead = Mathf.MoveTowards(lead, heading * 2f, 3f * Time.deltaTime);
transform.position = new Vector3(boat.position.x + lead, transform.position.y, transform.position.z);
}Hướng đi là hướng thuyền di chuyển lần gần nhất: so sánh tọa độ x hiện tại với tọa độ x ở khung hình trước, và giữ nguyên hướng đi trong khung hình thuyền không di chuyển, để thuyền đang đứng yên vẫn giữ khoảng cách đi trước.
Thử thách
Trung bìnhĐiều chỉnh camera bên để hiển thị nhiều hơn về phía trước của nhân vật chạy.
- Trong
LateUpdate(), so sánh tọa độ x của nhân vật chạy vớilastX: đi sang phải thì đặtdirectionthành 1, đi sang trái thì đặt thành -1, đứng yên thì giữ nguyên giá trị. - Điều chỉnh dần
shift = Mathf.MoveTowards(shift, direction * ahead, shiftSpeed * Time.deltaTime);. - Đặt tọa độ x của camera thành
player.position.x + shift, đồng thời giữ nguyên y và z.
Nhấn Chơi và chạy theo cả hai hướng. Sau đó nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
public class LookAheadCamera : MonoBehaviour
{
public Transform player;
public float ahead = 3f;
public float shiftSpeed = 4f;
void LateUpdate()
{
// Đưa camera đi trước player một khoảng ahead theo hướng di chuyển gần nhất, rồi dịch chuyển mượt với tốc độ shiftSpeed.
transform.position = new Vector3(player.position.x, transform.position.y, transform.position.z);
}
}
Tất cả bài học trong Vật lý và lối chơi
1Rigidbody
Trọng lực và khối lượngĐẩy bằng AddForceNhảy bằng xung lựcFixedUpdate cho vật lýVận tốcVật thể động họcÔn tập: Bệ phóng4Coroutine
InvokeInvokeRepeating, CancelInvokeCoroutine đầu tiên của bạnVòng lặp trong CoroutineDừng CoroutineÔn tập: đếm ngược10Dự án: Thoát khỏi đấu trường
Đấu trườngThợ săn2Va chạm
OnCollisionEnterMình đã va chạm với gì?Vỡ khi va chạmĐứng trên mặt đấtĐộ nảy và ma sátHình dạng colliderÔn tập: Tường có thể phá vỡ5Dự án: Cuộc đua thu thập xu
Quả bóng lănThu thập xuTự luyện tập: Playground Unity