Thứ Năm, 13 tháng 2, 2014

DEVGAME 1.3 - CẤU TRÚC CỦA MỘT TỆP MÃ - HÀM THỜI GIAN


Time.deltaTime là một phần quan trọng của việc viết code trên Unity. Time.deltaTime cho phép chúng ta tương tác với đối tượng theo giây thay vì một khung hình như ở bài viết trước. Vì thế nội dung hoạt cảnh sẽ thích hợp khi phát trên nhiều máy kể cả việc tỷ lệ khung hình có tốc độ chênh lệch nhau. Time.deltaTime là một biến sẽ trả về một lượng thời gian đã qua kể từ lần gọi trước đến khi gọi hàm Update.

1. Double click vào file java Simple Rotate đã tạo ở bài viết trước và sửa dòng code transform.Rotate lại thành như dưới đây:
  
#pragma strict

function Update () {

    transform.Rotate(0, 5 * Time.deltaTime,0);
}

2. Save đoạn script lại và nhấp nút Play để kiểm tra kết qua.
Bây giờ, vật thể sẽ quay 5 độ/giây thay vì 5 độ/khung hình như trước kia.

3. Tăng góc quay từ 5 lên 50 và save đoạn scrip lại để thấy sự khác biệt.

|| Mẹo: Nhớ lưu file script thường xuyên sau khi thay đổi để thấy sự khác biệt.

Bây giờ hãy thêm phần Translate (dịch chuyển) và thấy rằng sẽ như thế nào nếu bạn code bị lỗi. Hãy chú ý chữ cái đầu tiên của từ translate.
1. Chèn dòng code sau vào bên dưới transform.Rotate.

transform.translate(2 * Time.deltaTime, 0, 0);

Ngay khi bạn save file script sau khi chèn câu lệnh trên, một thông báo lỗi error sẽ hiển thị bên dưới thẻ Khung nhìn Game.


Bạn có thể click vào dòng thông báo đó để mở hộp thoại Console để xem chi tiết.

 

Trong trường hợp này, lỗi cú pháp là lỗi dễ nhận ra, và chương trình sẽ thông báo nên làm gì cho chúng ta.
2. Thay chữ t của từ translate thành chữ hoa và save đoạn script lại. Tên hàm luôn được viết hoa chữ đầu.

#pragma strict

function Update () {

    transform.Rotate(0, 50* Time.deltaTime,0);
    transform.Translate(2 * Time.deltaTime, 0, 0);
}


3. Nhấp chọn lại hộp thoại Console.


Bây giờ, thông báo lỗi error đã biến mất và hộp thoại console đã trống trơn.

4. Tắt hộp thoại console đi.

5. Nhấp nút Play để kiểm tra kết quả.

Bây giờ khối hộp sẽ dịch chuyển 2 mét/giây, nhưng nó không giống như những gì chúng ta muốn. Thật ra do dòng code xoay vòng được thực hiện trước, và dịch chuyển thực hiện kế tiếp dựa trên trục tọa độ của khối hộp. Nếu bạn muốn khối hộp vừa xoay vòng vừa dịch chuyển thẳng tiến theo trục ngang (trục X), bạn có thể tham khảo ở bài viết sau.

Không có nhận xét nào:

Đăng nhận xét