Unity hỗ trợ cả đồ họa 2D và 3D, sử dụng ngôn ngữ lập trình như C#, Java, hay Boo (tương tự Python). Hãy đọc tiếp để hiểu cách tạo trò chơi đơn giản bằng Unity 3D.
Cách tạo trò chơi đơn giản với Unity 3D
Bí quyết tạo trò chơi đơn giản với Unity 3D
Tuân theo các bước sau để tạo một game đơn giản trên Unity 3D:
Tải Unity 3D về và cài đặt từ đường liên kết. Xem Hướng dẫn tạo tài khoản Unity tại đây.
Bước 1: Tạo dự án mới
Mở công cụ Unity3D đã cài đặt. Đóng cửa sổ Welcome to Unity nếu hiển thị. Tiếp theo, chọn File => New Project.
Chọn thư mục lưu dự án và đặt tên theo ý muốn, sau đó nhấn Create.
Bước 2: Điều chỉnh giao diện
Sau khi tạo xong dự án, tiếp theo là tùy chỉnh giao diện. Đơn giản chỉ cần click và kéo cửa sổ vào phần Layout ở góc trên cùng bên trái màn hình.
Có 5 layout chính cần tinh chỉnh: Scene, Game, Hierarchy, Project và Inspector. Cụ thể:
- Scene: Là không gian hiển thị bối cảnh game, nơi hiển thị các thành phần của game. Góc trên cùng bên phải có hướng dẫn lập thể bối cảnh.
Bước 3: Lưu Kịch bản và Cấu hình Phiên bản
Click chọn Tệp =>Lưu Bối cảnh. Lưu bối cảnh của game trong thư mục [tên dự án] => Tài nguyên. Trong đó Tài nguyên là thư mục sẵn có để bạn lưu trữ bối cảnh và mã script của mình.
Tiếp theo click chọn Tệp =>Cài đặt Phiên bản Xây dựng. Thêm bối cảnh (scene) mà bạn vừa tạo vào bản xây dựng.
Chọn một nền tảng theo mong 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 bạ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 Thiết đặt Người chơi nằm ở góc dưới cùng cửa sổ Cài đặt Xây dựng. Hành động này mở các tùy chọn Thiết đặt Người chơi trong cửa sổ Quản lý viên. Ở đây bạn có thể điều chỉnh tên công ty, tên sản phẩm (game), biểu tượng mặc định, ... . Khi hoàn tất, đóng cửa sổ Cài đặt Xây dựng 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 độ trong Unity là thêm các hình lập phương (cube).
Để thực hiện điều này, truy cập Game Object =>Tạo Đối Tượng Khác =>Hình Lập Phương (Cube), hoặc vào menu Tạo trong cửa sổ Hierarchy =>Thêm một hình lập phương.
Trong cửa sổ Inspector, tìm và nhấp chuột phải vào Biến Đổi để đặt lại biến đổi của hình lập phương.
Chọn hình lập phương trong cửa sổ Hierarchy và đổi tên thành Tường. Để thực hiện đ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 hình lập phương để đổi tên.
Thiết lập giá trị của Tường trong khung X sao cho chiều dài giống như bức tường.
Tiếp theo, trên cửa sổ Hierarchy, tìm và kích chuột phải vào Tường và nhân lên 3 lần để tạo thành 4 Tường. Kéo các tường này vào vị trí và áp dụng các tùy chọn biến đổi cho từng hình lập phương để 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 hoặc thu nhỏ. Nhấn và giữ đồng thời phím Alt + click chuột để xoay chế độ xem.
Tạo một vật thể cụ thể (hoặc Game Object) trống trong trò chơi bằng cách chọn menu Game Object nằm góc trên cùng của màn hình =>Create Empty. Đặt tên cho vật thể này là Đấu trường và đặt lại transform của nó về giá trị mặc định.
Chọn tất cả 4 Tường mà bạn đã tạo trước đó và kéo chúng vào trong đối tượng Đấu trường vừa tạo.
Bước tiếp theo là tạo một vật thể mới bằng cách click chọn Create trong cửa sổ Hierarchy, đặt tên vật thể là Sàn và kéo nó vào trong Đấu trường trong cửa sổ Hierarchy.
Tại mục Biến đổi, đặt giá trị cho Sàn trong khung Y là -0.5.
Chia tỷ lệ cho Sàn trong các hướng X, Y và Z bằng 1/10 tỷ lệ bạn đã áp dụng cho Tường.
Bước 5: Tạo nhân vật trong trò chơi
Nếu bạn muốn, bạn có thể truy cập tại đây để tải các nhân vật trò chơi trực tuyến khác nhau. Trong hướng dẫn này, Mytour sẽ chỉ cho bạn cách sử dụng Game Object để tạo nhân vật trong trò chơi.
Truy cập Game Objects => Create Other => Sphere.
Chọn
Trên cửa sổ Inspector, tìm và click chọn Thêm Component nằm ở góc dưới cùng =>Thêm Vật lý => Rigid Body, giữ nguyên các cài đặt mặc định.
Nếu bạn quan sát kỹ trong cửa sổ Inspector, bạn sẽ thấy mỗi đối tượng được cấu thành từ nhiều thành phần khác nhau. Mỗi hình hộp, hình cầu, ... đều có thành phần được gọi là 'collider'. Đây là khu vực mà nhân vật sẽ xuất hiện trên màn hình game.
Bước 6: Thiết lập chuyển động cho nhân vật trong trò chơi
Chọn nhân vật trong cửa sổ Hierarchy.
Để giảm kích thước của các thành phần không cần thiết trong cửa sổ Inspector, hãy click vào biểu tượng mũi tên hướng xuống ở bên trái tên của từng thành phần.
Sau đó, click chọn Add Component ở góc dưới cùng của cửa sổ Inspector, chọn New Script và đặt tên cho script là PlayerController, hoặc tên khác theo ý muốn của bạn. Chọn một ngôn ngữ lập trình, ví dụ như CSharp, ... , sau đó click chọn Create and Add.
Để giữ cho các file được tổ chức ngăn nắp, mở thư mục Assets trong thư mục Project, sau đó tạo một thư mục mới với tên là Scripts. Di chuyển script 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. Hành động này sẽ mở môi trường lập trình có tên MonoDevelop.
Mã nguồn 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 là FixedUpdate, được sử dụng để xử lý các thao tác liên quan đến vật lý. Thành phần này có dạng như sau:
void FixedUpdate () {
}
Trước khi thêm các lệnh, chúng ta cần thực hiện một 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 này giúp điều chỉnh tốc độ di chuyển của nhân vật trên đấu trường. Sử dụng đoạn mã sau để khai báo biến:
public float speed;
Dấu chấm phẩy ở cuối dòng mã để thông báo với chương trình rằng đây là phần kết thúc của dòng mã.
Trong phần 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 sẽ nhận các giá trị tùy thuộc vào các lệnh từ bàn phím, và FixedUpdate sẽ cập nhật giá trị của chúng theo từng frame.
float moveHorizontal = Input.GetAxis('Horizontal');
float moveVertical = Input.GetAxis('Vertical');
Vẫn ở phần FixedUpdate, tạo một Vector3 mới, đây là biến 3 chiều để di chuyển nhân vật xung quanh không gian 3D. Trong hướng dẫn này, giá trị đầu vào của các thuộc tính moveHorizontal, moveVertical, up và down là 0, vì trong trò chơi 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 lực để 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);
Sử dụng Time.deltaTime giúp tạo chuyển động mượt mà hơn. Sau đó, lưu file CSharp và quay lại Unity.
Mở cửa sổ Inspector và xem script điều khiển chuyển động của nhân vật trong game bạn vừa tạo. Tại đây, bạn có thể điều chỉnh giá trị các biến công khai nếu cần thiết.
Thiết lập tốc độ trong khoảng từ 100-1000, sau đó click chọn nút Play ở góc trên cùng màn hình. Bạn có thể điều khiển quả bóng di chuyển xung quanh bằng cách sử dụng các phím mặc định của Unity: ASWD hoặc các phím mũi tên.
Click chọn nút Play một 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à Ánh Sáng bằng cách chọn GameObject trên thanh công cụ ở góc trên cùng, sau đó chọn Tạo đối tượng trống.
Tạo hướng phản chiếu bằng cách chọn tùy chọn Tạo trên thanh công cụ trong cửa sổ Hierarchy để tạo đối tượng mới và đặt tên là Đèn Chính, sau đó kéo vào đối tượng Ánh Sáng đã tạo trước đó.
Tiếp theo, thay đổi giá trị của Đèn Chính được chọn trong cửa sổ Inspector. Chuyển giá trị Loại Bóng Đèn thành Bóng Đèn Mềm và Độ Phân Giải thành Độ Phân Giải Cao.
Tiếp theo, điều chỉnh góc xoay (rotation) của Đèn Chính thành Góc và đặt giá trị trong các khung X, Y, Z là 30, 60 và 0.
Click phải vào Đèn Chính trong cửa sổ Hierarchy và nhân bản thành một đối tượng khác, đặt tên là Đèn Lấp Đầy, sau đó kéo Đèn Lấp Đầy vào đối tượng Ánh Sáng.
Trong cửa sổ Inspector, thay đổi giá trị Độ Sáng của Đèn Lấp Đầy thành 0.1.
Đổi giá trị khung Bóng Đèn thành Không Bóng.
Góc phản chiếu của Đèn Lấp Đầy 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
Để camera nhìn xuống đấu trường, trong cửa sổ Hierarchy chọn Camera Chính và điều chỉnh transform của camera cho phù hợp.
Có thể thiết lập giá trị 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 chuyển động của nhân vật trong game, ta sẽ tạo script có tên 'cameraMovement' bằng cách thêm thành phần script mới vào Camera Chính 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 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 Camera Chính.
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 Đối tượng Trò chơi mới, có thể là hình cầu, hình hộp, hình trụ hoặc hình nón và đặt tên là 'Vật phẩm'. Trong bài viết này Mytour sử dụng hình hộp.
Gắn thẻ là 'vật_phẩm' bằng cách sử dụng tùy chọn Thẻ và tạo một thẻ mới đặt tên là 'vật_phẩm'. Tiếp theo quay lại cửa sổ Thẻ và chọn thẻ 'vật_phẩm' 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 vật_phẩm.
Thêm Vật phẩm vào Đối tượng Trò chơi trống có tên là 'Vật_phẩm', sau đó đặt lại vị trí ban đầu của Đối tượng Trò chơi.
Thêm rigidbody vào Vật phẩm.
Sao chép Vật phẩm 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 di chuyển người chơi 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 số vật phẩm họ đã lấy được.
Để thực hiện điều này, bạn cần thêm 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 tại đây.
private int soDiem;
public GUIText textSoDiem;
Trong hàm void Start(), khởi tạo soDiem và textSoDiem:
soDiem=0;
TextSoDiem();
Hàm dưới đây xác định điều gì sẽ xảy ra khi người chơi thu thập vật phẩm:
Lưu lại mã và quay trở lại Unity.
Chọn tất cả các mục của bạn, đảm bảo chúng đã được gắn thẻ với nhãn items và đánh dấu chọn hộp 'Is Trigger' trong mục Box Collider trên cửa sổ Inspector.
Ngoài ra, hãy đánh dấu chọn hộp 'Is Kinematic' để cấu hình để các vật phẩm không rơi xuống sàn.
Bước tiếp theo là tạo một GUI mới và đặ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 đối tượng game mới và đặt tên là 'Hazard'.
Tạo một hình vuông mới và đặt tên là 'Nguy Hiểm' và gắn thẻ là hazard, sau đó đánh dấu chọn Is Trigger.
Thay đổi màu sắc để người chơi có thể dễ dàng nhận biết mối nguy hiểm. Bạn có thể làm điều này trong cửa sổ Inspector bằng cách tìm và chọn tùy chọn Mesh Renderer.
Trên cửa sổ Mesh Renderer, chọn menu Materials, sử dụng biểu tượng hình tròn nhỏ màu xám ở phía bên phải để chọn màu sắc mới 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à giảm trục Y xuống -0.4.
Chỉnh sửa script Player trong hàm OnTriggerEnter() để thông báo cho người chơi rằng họ đã phát hiện mối nguy hiểm chứ không phải vật phẩm.
Lưu lại mã và quay trở lại cửa sổ Unity, nhân đôi Mối nguy hiểm để 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 trò chơi đơn giản bằng Unity 3D.
Bài viết trên đây được Mytour tạo ra để hướng dẫn bạn cách tạo một trò chơi đơn giản bằng Unity 3D. Nếu có bất kỳ thắc mắc hoặc câu hỏi nào cần giải đáp, độc giả có thể để lại ý kiến của mình trong phần bình luận dưới bài viết nhé.