lab 4 scripting cƠ bẢn · giờ đâm phải chướng ngại vật nào). chúng ta có thể...
TRANSCRIPT
![Page 1: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/1.jpg)
Lab 4 SCRIPTING CƠ BẢN
Trịnh Thành TRUNG (MSc)
![Page 2: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/2.jpg)
SCRIPTING CƠ BẢN
1. Mục tiêu
2. Script cho Player
3. Script cho Street
4. Script cho Enemy
5. Xử lý va chạm
![Page 3: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/3.jpg)
MỤC TIÊU
![Page 4: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/4.jpg)
MỤC TIÊU
1. Player luôn tiến về phía trước với vận tốc không đổi
2. Sử dụng chuột để điều khiển xe sang trái, sang phải
3. Camera luôn đi theo Player
4. Enemy ngẫu nhiên xuất hiện trên đường đi. Chỉ một Enemy xuất hiện cùng lúc
5. Nếu Player chạm vào Enemy thì game kết thúc
![Page 5: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/5.jpg)
SCRIPT CHO PLAYER
![Page 6: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/6.jpg)
SCRIPT CHO PLAYER
• Trong cửa sổ Project chọn Create | C# Script. Đặt tên cho script, ví dụ PlayerCallback
• Chọn script PlayerCallback, ấn vào Open… trong cửa sổ Inspector
• Như chúng ta thấy, Unity đã soạn sẵn cho ta script
![Page 7: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/7.jpg)
SCRIPT CHO PLAYER
using UnityEngine;
using System.Collections;
public class PlayerCallback : MonoBehaviour
{
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
Tất cả các lớp thừa kế từ MonoBehaviour
Start() được gọi khi đối tượng được khởi tạo
Update() được gọi liên tục trong vòng đời của đối tượng
![Page 8: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/8.jpg)
SCRIPT CHO PLAYER
• Player luôn di chuyển về phía trước (trục Z) với vận tốc 0.5f
• Viết trong phương thức Update( ) this.transform.position +=
new Vector3(Input.GetAxis("Mouse X"), 0, 0.5f);
Camera.main.transform.position += new Vector3(0, 0, 0.5f);
• Lưu lại. Kéo đoạn mã vừa tạo thả vào đối tượng Player
![Page 9: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/9.jpg)
SCRIPT CHO STREET
![Page 10: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/10.jpg)
SCRIPT CHO STREET
• Ý tưởng:
– Liên tục đưa đối tượng Street mà camera vừa đi qua đặt lên trên Street mà camera sắp chiếu tới.
– Trên màn hình lúc nào cũng chỉ có 2 Street được hiển thị và chỉ cần 3 đối tượng để xử lý
– Không cần phải tạo ra quá nhiều đối tượng không dùng đến.
![Page 11: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/11.jpg)
SCRIPT CHO STREET
• Tạo Script mới
• Viết trong phương thức Update( ) if (Camera.main.transform.position.z >=
(this.transform.position.z + 20))
{
this.transform.position += new Vector3(0, 0, 60);
}
• Lưu lại, kéo đoạn mã vừa tạo thả vào cả 3 đối tượng Street
![Page 12: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/12.jpg)
SCRIPT CHO ENEMY
![Page 13: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/13.jpg)
SCRIPT CHO STREET
• Tạo Script mới
• Viết trong phương thức Update( ) if (Camera.main.transform.position.z >=
(this.transform.position.z + 20))
{
Vector3 np = this.transform.position;
np.x = 0;
np += new Vector3(Random.Range(-4.5f, 4.5f), 0,
Random.Range(40, 60));
this.transform.position = np;
}
• Lưu lại, kéo đoạn mã vừa tạo thả vào đối tượng Enemy
![Page 14: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/14.jpg)
XỬ LÝ VA CHẠM
![Page 15: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/15.jpg)
XỬ LÝ VA CHẠM
• Unity đã hỗ trợ xử lý va chạm,
• Mặc định các đối tượng không hỗ trợ xử lý va chạm. Nếu muốn đối tượng nào xét xử lý va chạm thì phải cho phép đối tượng đó.
• Chọn Player, vào menu Component | Physics | Rigidbody.
![Page 16: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/16.jpg)
XỬ LÝ VA CHẠM
• Chọn Player, mục Inspector xuất hiện thêm một số component mới. Đánh dấu chọn vào Is Trigger trong component Box Collider để kích hoạt sự kiện OnTriggerEnter mỗi khi xảy ra va chạm và bỏ mục Use Gravity của component Rigid Body vì chúng ta không sử dụng trọng lực trong game này.
![Page 17: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/17.jpg)
XỬ LÝ VA CHẠM
• Mở script PlayerCallback, thêm vào phương
thức OnTriggerEnter như sau
void OnTriggerEnter(Collider obj)
{
if (obj.name == "Enemy")
{
Debug.Log("Crashed!");
}
}
![Page 18: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/18.jpg)
XỬ LÝ VA CHẠM
• Chạy thử game
![Page 19: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/19.jpg)
BÀI TẬP
![Page 20: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/20.jpg)
GIỚI HẠN DI CHUYỂN
• Hiện tại Player của chúng ta có thể di chuyển ra ngoài đường đi (mà như vậy thì sẽ không bao giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ:
– Giới hạn tọa độ x của Player, chỉ cho phép Player di chuyển trong phạm vi của đường
– Đặt thêm các đối tượng Rigidbody ở hai bên đường để cản trở di chuyển của Player
![Page 21: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/21.jpg)
TĂNG TỐC VÀ GIẢM TỐC
• Ý tưởng: Khi bắt đầu chuyển động thì vận tốc của xe bằng 0, sau đó vận tốc của xe mới bắt đầu tăng dần đều đến một vận tốc tối đa được đặt trước. Khi đâm phải chướng ngại vật thì vận tốc của xe giảm dần về 0.
• Thực hiện: Đưa vào một biến vận tốc và một biến gia tốc cho PlayerCallback
![Page 22: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/22.jpg)
TÍNH ĐIỂM
• Ý tưởng: Khi bắt đầu chuyển động thì vận tốc của xe bằng 0, sau đó vận tốc của xe mới bắt đầu tăng dần đều đến một vận tốc tối đa được đặt trước. Khi đâm phải chướng ngại vật thì vận tốc của xe giảm đột ngột về 0, sau đó vận tốc mới từ từ tăng lên. Khi xe chạm vào vỉa hè thì vận tốc của xe giảm dần về 0.1.
![Page 23: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/23.jpg)
TÍNH ĐIỂM
• Thực hiện: Bổ sung vào game 2 yếu tố: Fuel và Score. Fuel của game là một số được đặt trước, sau đó giảm dần về 0. Score là quãng đường mà người chơi đã đi được. Khi Fuel của Player giảm về 0 thì tốc độ của xe giảm dần về 0. Khi tốc độ của xe giảm hoàn toàn về 0 thì trò chơi kết thúc và tính Final Score của người chơi.
![Page 24: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/24.jpg)
THÊM CÁC YẾU TỐ GAME
• Tự suy nghĩ và đưa vào các yếu tố trò chơi theo ý mình
• Gợi ý
• Thêm các xe chở xăng, các loại enemy khác nhau, các loại đường khác nhau…
• Sử dụng các mô hình cây cối, mô hình ô tô…
![Page 25: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/25.jpg)
Phát triển game: Prototype
• Khi phát triển game, chúng ta thường xây dựng các mẫu thử (prototype)
– Sử dụng các mô hình, hình ảnh, texture.... đơn giản (Ví dụ: Sử dụng các hình khối, mô hình low-poly, các hình ảnh vẽ bằng Paint...)
– Các tính năng khác của game vẫn được phát triển hoàn thiện (playable)
![Page 26: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/26.jpg)
Phát triển game: Prototype
Ví dụ: Mẫu thử game Braid
![Page 27: Lab 4 SCRIPTING CƠ BẢN · giờ đâm phải chướng ngại vật nào). Chúng ta có thể khắc phục bằng nhiều cách. Ví dụ: –Giới hạn tọa độ x của](https://reader033.vdocuments.mx/reader033/viewer/2022041708/5e46182a9926a32ba15caaf7/html5/thumbnails/27.jpg)
THÊM CÁC YẾU TỐ GAME