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

COOKBOOK - TẠO ĐỒNG HỒ KIM


  - Tạo đồng hồ kim -

Việc tạo đồng hồ kim tốn nhiều thời gian để vẽ các kim chỉ thời gian nhưng đổi lại sử dụng đồng hồ kim sẽ nổi bật về mặt đồ họa hơn.


Cách để làm

B1. Tại thẻ Hierarchy, nhấp chọn nút Create | Directional Light để thêm thắt chút ánh sáng cho scene.

B2. Vẫn ở thẻ Hierarchy, nhấp chọn Create | Cylinder. Qua thẻ Inspector, điều chỉnh các thông số ở mục Transform như sau:


B3. Ở thẻ Hierarchy, nhấp chọn nút Create | Cube và tạo ra 3 khối hộp tượng trưng cho 3 kim chỉ thời gian và đổi tên, điều chỉnh thông số ở thẻ Inspector lần lượt như sau:

 


B4. Vào GameObject | Create Empty và đặt tên là hours-pivot. Điều chỉnh thông số Position ở thẻ Inspector là (0 , 0 , 0).

 

B5. Tại thẻ Hierarchy, kéo thả hand-hours vào hours-pivot như hình sau:


B6. Thực hiện tương tự với kim giây và kim phút như hình sau:


 



B7. Tại thẻ Project, chọn Create | C# Script và đặt tên là ClockAnalogue, double click vào file C# này và chèn đoạn code sau vào:


using UnityEngine;
using System.Collections;
using System;

public class ClockAnalogue : MonoBehaviour
{
    public Transform secondHandPivot;
    public Transform minuteHandPivot;
    public Transform hourHandPivot;
   
    private void Update()
    {
        DateTime time = DateTime.Now;
        float seconds = (float)time.Second;
        float minutes = (float)time.Minute;
        float hours12 = (float)time.Hour % 12;
        float angleSeconds = -360 * (seconds/60);
        float angleMinutes = -360 * (minutes/60);
        float angleHours = -360 * (hours12 / 12);
       
        // rotate each hand
        secondHandPivot.localRotation = Quaternion.Euler(0f, 0f, angleSeconds);
        minuteHandPivot.localRotation = Quaternion.Euler(0f, 0f, angleMinutes);
        hourHandPivot.localRotation = Quaternion.Euler(0f, 0f, angleHours);
    }
}


B8. Kéo thả file C# này vào Main Camera ở thẻ Hierarchy.

B9. Nhấp chọn Main Camera, qua thẻ Inspector, điều chỉnh mục Transform và kéo thả các pivot vào vị trí như hình sau:


B10. Nhấp nút Play để kiểm tra thành quả.


Nguyên lí làm việc

Mỗi kim đồng hồ có gốc được đặt tại tâm của mặt đồng hồ, và có độ dài khác nhau để phân biệt kim giờ, phút hoặc giây. Mỗi khung hình chạy qua, hàm Update( ) sẽ xoay các kim chỉ thời gian quanh trục Z căn cữ bởi hàm thời gian DateTime. Mỗi kim quay đều với góc quay 360*. Các góc quay sẽ được thực hiện bởi hàm Quaternion.Euler( ) được cung cấp bởi Unity.


Còn nữa

Điều chỉnh camera để hiển thị đồng hồ ở góc màn hình

Tại thẻ Hierarchy, nhấp chọn nút Create | Camera và đổi tên thành Camera-Clock. Tại thẻ Inspector, bỏ dấu stick ở mục Audio Listener đi và điều chỉnh ở mục Camera và Transform như hình sau:



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

Đăng nhận xét