Chương trình làm ô tô 3D chuyển động được ứng dụng nhiều trong các game đua xe 3D, ngoài ra làm chuyển động ô tô 3d trên địa hình được ứng dụng vào trong lĩnh vực mô phỏng như các bài tập lái xe, kiểm tra các thiết bị của động cơ. Trong phần này nhóm 3DVietpro trình bày với các bạn các bước tạo một ô tô 3D chuyển động.Bước 1: Các bạn vào phần Asset của unity tìm kiếm từ khóa sau “Toturial car” và download về máy của mình và chạy chương trình: Hình 4.1.1. Giao diện chương trình đua xe ô tô được import từ Asset Unity
Bước 2: Các bạn tách mô hình Oto trong hình 4.1 ra một project riêng, để thực hiện tách các bạn lưu ý vấn đề sau:
- Vào thư mục gốc của project tìm đến \Assets\Models\Car
- Xuất hiện file “Materials” và “catamount.fbx”, các bạn thực hiện kéo vào cửa sổ Project của project mới tạo. Trong đó “Materials” là map của ô tô, còn fbx là mô hình 3D của ô tô.
Bước 3: Khi thực hiện kéo ô tô hiển thị không có màu sắc, các bạn click vào các phần của Oto sẽ hiện hình như dưới: Hình 4.1.2. Thành phần của ô tô được gắn map
Nếu phần “Material” trong hình trên không có, thì các bạn tìm trong thư mục Materials vừa Import để phù hợp.
Hình 4.1.3. Lựa chọn bánh xe phía trước bên tay trái
Hình 4.1.4. Tách bánh xe
Bước 4: Click đúp vào bánh xe, sau đó vào Game Object chọn Create Empty, khi chọn xong bạn sẽ thấy xuất hiện một điểm nằm ở trung tâm bánh xe và đó chính là điểm Game Object vừa rồi bạn tạo.
Bước 5: Đặt tên cho đối tượng Game Object trong Bước 4 , như hình 4.1.3. Chúng ta đặt là WheelFL_col
Bước 6: Click vào “WheelFL_col” trong phần Inspector chọn Add Component tìm đến Wheel Collider, khi bạn lựa chọn sẽ hiển thị như sau:
Hình 4.1.6. Wheel Collider được lựa chọn
Hình 4.1.7. Hình sau khi được lựa chọn xong, vạch màu xanh chính là Wheel Collider
Bước 7: Bạn thực hiện tương tự như các bước 4,5,6 với các bánh xe còn lại
Bước 8: Viết lênh cho bánh xe chuyển động bằng cách tạo ra một file C#, sau đó bạn kéo vào chiếc xe.
- Chúng ta khai báo dòng lệnh sau là Public
// Biến để thực hiện làm chuyển động bánh xe
public Transform WheelFL;
public Transform WheelFR;
public Transform WheelRL;
public Transform WheelRR;
//Biến để thực hiện làm chuyển động Collider
public WheelCollider WheelFL_col;
public WheelCollider WheelFR_col;
public WheelCollider WheelRL_col;
public WheelCollider WheelRR_col;
- Khai báo tốc độ và góc quay bánh trước của xe
public float speed =40f;
public float angle=60f;
- Để thực hiện làm chuyển động, như thực tế đã cho thấy là chúng ta phải dùng lực đẩy 2 bánh sau đi và bánh trước chỉ có nhiệm vụ quay góc làm bánh lái cho xe chạy theo các hướng được điều khiển. Các bạn viết hàm sau trong Update:
WheelRL_col.motorTorque = speed * Input.GetAxis("Vertical");
WheelRR_col.motorTorque = speed * Input.GetAxis("Vertical");
//WheelFL_col.motorTorque = speed * Input.GetAxis("Vertical");
//WheelFR_col.motorTorque = speed * Input.GetAxis("Vertical");
- Tạo góc quay cho bánh trước
WheelFL_col.steerAngle = angle * Input.GetAxis ("Horizontal");
WheelFR_col.steerAngle = angle * Input.GetAxis ("Horizontal");
- Trong Update các bạn viết thêm hàm sau để quay bánh xe:
WheelRL.Rotate (speed*Input.GetAxis("Vertical"),0,0);
WheelRR.Rotate (speed* Input.GetAxis("Vertical"),0,0);
WheelFL.Rotate (speed*Input.GetAxis("Vertical"),0,0);
WheelFR.Rotate (speed * Input.GetAxis ("Vertical"), 0, 0);
Và để chính xác với tốc độ quay chúng ta có thể thay biến speed bằng dòng lệnh sau:
“WheelFL_col.rpm/60*360”
- Để bánh trước có thể làm bánh lái chúng ta dùng dòng lệnh sau:
WheelFL.localEulerAngles = new Vector3(WheelFL.localEulerAngles.x,
angle * Input.GetAxis("Horizontal"), WheelFL.localEulerAngles.z);
WheelFR.localEulerAngles = new Vector3(WheelFL.localEulerAngles.x,
angle * Input.GetAxis("Horizontal"), WheelFL.localEulerAngles.z);
Thế là chúng ta đã viết lệnh chuyển động cho bánh xe, bây giờ các bạn chỉ cần gán các đối tượng Public cho các biến được khai báo và chạy chương trình:
Hình 4.1.8. Kéo các đối tượng vào các biến của xe 3D
Bước 9: Kết quả chạy
Như vậy trong phần này nhóm 3dvietpro đã hướng dẫn các bạn làm xe chuyển động bằng cách sử dụng Wheel Collider. Các bạn lưu ý một số thuộc tính sau của Wheel Collider:
1. motorTorque : Tạo động lực cho bánh xe
2. steerAngle : Tạo góc cho bánh
Để lấy vận tốc của xe các bạn thực hiện lệnh sau:
“rigidbody.velocity.magnitude * 3.6f”
Vận tốc * thời gian (3.6f) = Số km/hSửa bởi người viết 14/05/2015 lúc 12:16:15(UTC)
| Lý do: Chưa rõ