Unity hỗ trợ cả đồ họa 2D và 3D, các chức năng được lập trình bằng ngôn ngữ C#, Java hay Boo (ngôn ngữ tương tự Python). Tham khảo tiếp bài viết dưới đây của Taimienphi.vn để tìm hiểu cách tạo một trò chơi đơn giản bằng Unity 3D.
Cách tạo một trò chơi đơn giản bằng Unity 3D
Thực hiện theo các bước dưới đây để tạo một game đơn giản với Unity 3D:
Tải Unity 3D về máy và cài đặt tại đây.
Tham khảo Cách tạo tài khoản Unity tại đây.
Bước 1: Tạo project mới
Đầu tiên mở công cụ Unity3D mà bạn đã tải về và cài đặt trên máy. Đóng cửa sổ Welcome to Unity hiển thị mặc định khi bạn mở công cụ.
Tiếp theo click chọn File => New Project.
Chọn vị trí để lưu project và đặt một tên bất kỳ mà bạn muốn, sau đó click chọn Create.
Bước 2: Tùy chỉnh layout
Sau khi đã tạo xong project, bước tiếp theo chúng ta cần làm là tùy chỉnh layout. Để sử dụng các layout mặc định trên Unity, chỉ cần click và thả cửa sổ vào mục Layout nằm góc trên cùng bên trái màn hình.
Có 5 layout chính mà chúng ta cần tinh chỉnh, bao gồm Scene, Game, Hierarchy, Project và Inspector. Trong đó:
- Scene: hiểu nôm nay đây là bối cảnh game, tại đây hiển thị các phần tử trong game. Ngoài ra có một khối nằm góc trên cùng bên phải định hướng lập thể bối cảnh.
- Game: hiển thị chế độ xem mà Main Camera quan sát Scene và xuất hiện tất cả các sự kiện trong game lên màn hình. Bạn có thể kiểm tra game của mình tại cửa sổ này bằng cách click chọn nút Play nằm giữa góc trên cùng màn hình.
- Hierarchy: liệt kê tất cả các phần tử mà bạn đã thêm vào Scene, mặc định đây là Main Camera. Để thêm các phần tử mới, chỉ cần click chọn Create và chọn loại đối tượng (object) mà bạn muốn thêm. Hoặc cách khác là click chọn menu GameObject nằm góc trên cùng màn hình.
- Project: hiển thị tất cả các file được sử dụng cho game. Để tạo các thư mục, script, ... bạn chỉ cần click chọn nút Create nằm trong cửa sổ Project.
- Inspector: tại đây bạn có thể tùy chỉnh các phần tử trong Scene. Chỉ cần chọn đối tượng mà bạn muốn tùy chỉnh trong cửa sổ Hierarchy hoặc kích đúp chuột vào đối tượng trên cửa sổ Scene để hiển thị các thuộc tính của đối tượng trong bảng Inspector.
Bước 3: Lưu Scene và thiết lập bản build
Click chọn File =>Save Scene. Lưu bối cảnh trong game của bạn trong thư mục [tên project] => Assets. Trong đó Assets là thư mục được tạo sẵn để bạn lưu trữ các bối cảnh và script của mình.
Tiếp theo click chọn File =>Build Settings. Thêm bối cảnh (scene) mà bạn vừa tạo vào bản build.
Chọn một nền tảng mà bạn muốn, bao gồm máy tính, hệ thống game và điện thoại di động. Hoặc nếu đây là lần đầu tiên tạo game, bạn có thể chọn các nền tảng Web Player hoặc PC/Mac/Linux Standalone.
Click chọn Player Settings nằm góc dưới cùng cửa sổ Build Settings. Thao tác này để mở các tùy chọn Player Settings trong cửa sổ Inspector. Tại đây bạn có thể thay đổi tên công ty, tên sản phẩm (game), icon mặc định, ... . Sau khi hoàn tất, đóng cửa sổ Build Settings lại.
Bước 4: Tạo các cấp độ trong game
Cách đơn giản nhất để tạo các cấp độ game trong Unity là thêm các cube.
Để làm được điều này, truy cập Game Object =>Create Other =>Cube, hoặc truy cập menu Create trong cửa sổ Hierarchy =>Add a cube.
Trên cửa sổ Inspector, tìm và kích chuột phải vào Transform để reset lại transform của cube.
Chọn cube trong cửa sổ Hierarchy và đổi tên thành Wall. Để làm được điều này, trên cửa sổ Hierarchy hoặc Inspector, bạn tìm và kích đúp chuột vào cube để đổi tên.
Thiết lập giá trị của Wall trong khung X sao cho chiều dài giống bức tường.
Tiếp theo, trên cửa sổ Hierarchy, tìm và kích chuột phải vào Wall và nhân lên 3 lần để tạo thành 4 Wall. Kéo các wall này vào vị trí và áp dụng các tùy chọn transform cho từng cube để tạo đấu trường.
Lưu ý: Để xem qua các chế độ xem bối cảnh game, click vào nút chuột giữa để xoay và cuộn chuột để phóng to hay thu nhỏ. Nhấn và giữ đồng thời phím Alt + click chuột để xoay chế độ xem.
Tạo một đối tượng cụ thể (hay Game Object) trống trong game bằng cách chọn menu Game Object nằm góc trên cùng màn hình =>Create Empty. Đặt tên cho object này là Stage và reset lại transform của object.
Chọn tất cả 4 Wall mà bạn đã tạo trước đó và kéo các Wall này vào trong game object Stage vừa tạo.
Bước tiếp theo là tạo một game object mới bằng click chọn Create trong cửa sổ Hierarchy, đặt tên object là Floor và kéo và mục Stage trong cửa sổ Hierarchy.
Tại mục Transform, thiết lập giá trị cho Floor trong khung Y là -0.5.
Chia tỷ lệ cho Floor trong các mục X, Y và Z direction bằng 1/10 tỷ lệ mà bạn đã sử dụng cho Wall.
Bước 5: Tạo nhân vật trong game
Nếu muốn bạn có thể truy cập tại đây để tải các nhân vật game trực tuyến khác nhau. Trong bài viết này Taimienphi.vn sẽ hướng dẫn bạn cách sử dụng Game Object để tạo nhân vật trong game.
Truy cập Game Objects => Create Other => Sphere.
Chọn Sphere trong cửa sổ Hierarchy, đổi tên thành Player và reset lại transform.
Trên cửa sổ Inspector, tìm và click chọn Add Component nằm góc dưới cùng =>Add Physics => Rigidbody, giữ nguyên các cài đặt mặc định.
Nếu để ý kỹ trong cửa sổ Inspector bạn sẽ thấy mỗi đối tượng được bao gồm một loạt các thành phần khác nhau. Mỗi cube, sphere, ... đều bao gồm thành phần có tên "collider". Đây là khu vực xuất hiện nhân vật trong game lên màn hình.
Bước 6: Thiết lập chuyển động cho nhân vật trong game
Chọn nhân vật trong cửa sổ Hierarchy.
Để thu nhỏ các thành phần không liên quan trong cửa sổ Inspector, click chọn biểu tượng mũi tên hướng xuỗng xuống nằm bên trái tên mỗi thành phần.
Tiếp theo click chọn Add Component nằm góc dưới cùng cửa sổ Inspector, chọn New Script và đặt tên cho script là PlayerController, hoặc tên bất kỳ mà bạn muốn và chọn một ngôn ngữ lập trình, có thể là CSharp, ... , sau đó click chọn Creat and Add.
Để đảm bảo các file được sắp xếp theo thứ tự, mở thư mục Assets nằm trong thư mục Project, sau đó tạo thư mục mới và đặt tên là Scripts. Thêm script mới của bạn vào thư mục này.
Để mở và chỉnh sửa script, chỉ cần kích đúp chuột vào tên script trong cửa sổ Inspector hoặc mở script trong cửa sổ Project. Thao tác này để mở môi trường lập trình có tên MonoDevelop.
Mã bao gồm 2 thành phần mặc định: void Start () và void Update (). Chúng ta sẽ thêm thành phần thứ 3 có tên gọi là FixedUpdate, thành phần này xử lý các giao thức liên quan đến vật lý, và có dạng như dưới đây:
void FixedUpdate () {
}
Trước khi thêm lệnh, chúng ta sẽ phải thao tác thêm bước khai báo các biến.
Để thêm các chuyển động cho nhân vật, chúng ta sẽ sử dụng biến có tên là "speed", điều chỉnh tốc độ mà nhân vật di chuyển trên đấu trường. Sử dụng dòng mã dưới đây để khai báo biến:
public float speed;
Dấu chấm phẩy để thông báo với chương trình đây là phần cuối của dòng mã.
Trong mục FixedUpdate, chúng ta sẽ khai báo thêm 2 thuộc tính float là moveHorizontal và moveVertical. Các thuộc tính này nhận các giá trị tùy thuộc vào các lệnh bàn phím, FixedUpdate sẽ cập nhật các giá trị theo từng frame.
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vẫn trong FixedUpdate, tạo Vector3 mới, đây là biến 3 chiều để di chuyển các nhân vật xung quanh không gian 3D. Trong phần hướng dẫn này, các giá trị đầu vào cho các thuộc tính moveHorizontal, moveVertical, up và down là 0, vì trong game người chơi chỉ có thể di chuyển theo 2 chiều: Vector3 movement = new Vector3(moveHorizontal,0.0f,moveVertical);
Cuối cùng thêm force để người chơi có thể di chuyển nhân vật bằng cách sử dụng giao thức rigidbody.AddForce được tích hợp trong Rigidbody: rigidbody.AddForce(movement*speed*Time.deltaTime);
Time.deltaTime được sử dụng giúp chuyển động mượt hơn. Cuối cùng lưu file CSharp và quay lại Unity.
Truy cập cửa sổ Inspector và xem script chuyển động nhân vật game mà bạn vừa tạo. Ngoài ra tại đây bạn có thể thay đổi giá trị các biến công khai.
Thiết lập tốc độ trong khoảng từ 100-1000, sau đó click chọn nút Play nằm ở giữa góc trên cùng màn hình. Bạn có thể di chuyern quả bóng xung quanh bằng cách sử dụng các phím di chuyển mặc định của Unity, ASWD hoặc các phím mũi tên.
Click chọn nút Play lần nữa để thoát khỏi chế độ thử nghiệm.
Bước 7: Tạo hiệu ứng phản chiếu
Tạo một Game Object trống mới và đặt tên là Lights bằng cách click chọn GameObject trên thanh công cụ nằm góc trên cùng, chọn Create empty.
Tạo hướng phản chiếu bằng cách chọn tùy chọn Create trên thanh công cụ trên cửa sổ Hierarchy để tạo object mới và đặt tên là Main Light và kéo vào object Lights đã tạo trước đó.
Bước tiếp theo thay đổi giá trị Main Light được chọn trong cửa sổ Inspector. Thay đổi giá trị Shadow Type thành Soft Shadows và Resolution thành Very High Resolution.
Tiếp theo thay đổi góc xoay (rotation) của Main Light thành Angel và thiết lập giá trị trong các khung X, Y, Z lần lượt là 30, 60 và 0.
Kích chuột phải vào Main Light trong cửa sổ Hierarchy và nhân đôi thành object khác, đặt tên là Fill Light, tương tự kéo Fill Light vào object Lights.
Trên cửa sổ Inspector, thay đổi giá trị Intensity của Fill Light là 0.1.
Thay đổi giá trị khung Shadows thành No Shadows.
Góc phản chiếu của Fill Light ngược với góc phản chiếu ban đầu.
Bước 8: Tinh chỉnh góc nhìn của camera
Để góc nhìn camera chiếu xuống đấu trường, trên cửa sổ Hierarchy bạn chọn Main Camera và điều chỉnh transform của camera phù hợp.
Bạn có thể thiết lập các giá trị mục Position là (0, 10.5, -10) và Rotation là (45, 0, 0).
Bước 9: Tạo camera theo dõi chuyển động của nhân vật trong game
Để tạo camera theo dõi các chuyển động của nhân vật trong game, chúng ta sẽ tạo script có tên "cameraMovement" bằng cách thêm thành phần script mới vào Main Camera trong cửa sổ Inspector. Kích đúp chuột vào script để mở trong cửa sổ MonoDevelop.
Script này sẽ truy cập Game Object khác là player, vì vậy chúng ta phải khai báo trước script bằng hàm Start():
public GameObject player;
Tạo Vector3 đặt tên là "offset":
private Vector3 offset;
Trong hàm Start() gán giá trị của offset là:
offset=transform.position;
Trong đó (x,y,z) là vị trí của camera.
Tiếp theo sử dụng hàm LateUpdate (), xác định vị trí camera là vị trí của nhân vật:
void LateUpdate () {
transform.position=player.transform.position+offset;}
Lưu script và quay lại Unity.
Bước tiếp theo cần làm là gán Game Object cho "player" mà bạn đã định nghĩa trong script cameraMovement. Trên cửa sổ Inspector, tìm và chọn Main Camera.
Trong script cameraMovement, bạn sẽ thấy thư mục có tên là "Player", hiện được gán giá trị là None (GameObject). Kéo Player từ cửa sổ Hierarchy vào mục này để gán game object player vào script cameraMovement
Click chọn nút Play nằm ở giữa góc trên cùng màn hình để mở thử game. Sử dụng các phím mũi tên để di chuyển nhân vật, camera sẽ theo dõi các chuyển động của nhân vật.
Lưu lại bối cảnh và project.
Bước 10: Tạo các vật phẩm trong game
Tạo một Game Object mới, có thể là sphere, cube, capsule hoặc cylinder và đặt tên là "Item". Trong bài viết này Taimienphi.vn sử dụng cube.
Gắn thẻ là "item" bằng cách sử dụng tùy chọn Tags và tạo một thẻ mới đặt tên là "item". Tiếp theo quay lại cửa sổ Tags và chọn thẻ "item" mới mà bạn vừa tạo. Gắn thẻ tất cả các mục của bạn làm items.
Thêm Item vào Game Object trống có tên là "Items", sau đó reset lại transform của Game Object.
Thêm rigidbody vào Item.
Sao chép Item thành nhiều bản sao khác nhau và đặt xung quanh đấu trường.
Bước 11: Vật phẩm và điểm số
Mở script player movement trên cửa sổ Inspector và chỉnh sửa script để cho phép người chơi thu thập vật phẩm và theo dõi các vật phẩm mà họ đã thu thập được.
Để làm được điều này, bạn sẽ phải thực hiện 2 khai báo: một biến theo dõi điểm số của người chơi và biến khác là GUI (giao diện đồ họa người dùng) hiển thị số điểm số tại đây.
private int count;
public GUIText countText;
Trong hàm void Start(), khởi tạo count và CountTex:
count=0;
CountText();
Hàm dưới đây để định nghĩa điều gì sẽ xảy ra khi người chơi thu thập vật phẩm:
Lưu lại các mã và quay trở lại Unity.
Chọn tất cả các mục của bạn, đảm bảo các mục đã được gắn thẻ dưới dạng items và đánh tích chọn hộp "Is Trigger" trong mục Box Collider trên cửa sổ Inspector.
Ngoài ra đánh tích chọn hộp "Is Kinematic" để cấu hình các vật phẩm không bị rơi xuống sàn.
Tiếp theo chúng ta sẽ tạo một GUI mới đặt tên là Text bằng cách sử dụng tùy chọn Create trong cửa sổ Hierarchy.
Thiết lập giá trị transform của GUI Text là (0,1,0) và pixel offset là (10, -10) trong mục GUIText component trên cửa sổ Inspector.
Kéo GUI Text vào hộp Count Text trên cửa sổ Inspector.
Bước 12: Thiết lập các cấp độ nguy hiểm trong game
Tạo một game object mới đặt tên là "Hazards".
Tạo một Quad mới đặt tên là "Hazard" và gắn thẻ là hazard, sau đó đánh tích chọn Is Trigger.
Bằng cách thay đổi màu sắc để người chơi có thể nhận biết các mối nguy hiểm. Để làm được điều này, trong cửa sổ Inspector bạn tìm và chọn tùy chọn Mesh Renderer.
Trên cửa sổ Mesh Renderer, click chọn menu Materials, sử dụng biểu tượng hình tròn nhỏ màu xám nằm phía bên phải để chọn màu sắc khác hiển thị cho các mối nguy hiểm.
Thay đổi góc quay của Hazard thành 90 trên trục X và trục Y giảm xuống -0.4.
Chỉnh sửa script Player trong hàm OnTriggerEnter() để giải thích cho người chơi cái mà họ đang nhìn thấy không phải là vật phẩm mà là mối nguy hiểm.
Lưu lại mã và quay trở lại cửa sổ Unity, nhân đôi Hazard để tạo thêm một số mối nguy hiểm khác và thêm các mối nguy hiểm vào một số vị trí trên đấu trường.
Như vậy là bạn đã hoàn tất việc tạo một game đơn giản bằng Unity 3D.
Bài viết trên đây Taimienphi.vn vừa hướng dẫn bạn cách tạo một trò chơi đơn giản bằng Unity 3D. Ngoài ra nếu có bất kỳ thắc mắc hoặc câu hỏi nào cần giải đáp, bạn đọc có thể để lại ý kiến của mình trong phần bình luận bên dưới bài viết nhé.