Code Game 2D Dodge Block Bằng Unity (Phần 1)

Code Game 2D Dodge Block Bằng Unity (Phần 1)

Hiện có rất nhiều phần mềm Engine hỗ trợ việc lập trình game từ di động đến desktop, như Game Maker Studio, Unreal Engine 4, …  trong đó có Unity. Nhìn sơ qua thì Unity có thể là một nền tảng khá khó cho người mới học, họ dễ bị sốc kiến thức khi lần đầu tiếp cận unity vì nó cung cấp 1 lượng lớn thư viện hỗ trợ gồm các thư viện Asset đồ sộ, các model, được dựng sẵn.

Có một bí mật với Unity là nếu được hướng dẫn cơ bản 1 cách cụ thể thì bạn sẽ thấy học unity cực kì dễ.

Tại sao nên sử dụng unity?

Unity là một game engine được phát triển bởi Unity Technologies như một hệ sinh thái (Engine) đa nền tảng để phát triển game. Engine này được phát triển bằng C/C++ và có khả năng hỗ trợ mã viết bằng C#, JavaScript hoặc Boo (chủ yếu là xài C#).

Sử dụng ngôn ngữ lập trình phổ biến tại Việt Nam là C#.

Hỗ trợ đa nền tảng: bạn có thể build gần như mọi nên tảng từ PlayStation 3, Xbox 360, Wii U, iOS, Android, Windows, Blackberry 10, OS X, trình duyệt web đến tận linux. Mà không cần phải chủ trọng quá nhiều vào việc tối ưu từng dòng code.

Cộng đồng rất lớn mạnh: là engine phổ biến nhất trên thế giới, Unity có cộng đồng sử dụng rất lớn mạnh.

Thư viện phong phú, đa dạng: như đã nói phía trên thì nó hỗ trợ 1 thư viện asset gồm các model được dựng sẵn rất hưu dụng trong việc phát triển và chạy demo sản phẩm.

Setup môi trường

Đầu tiên các bạn vào unity3d.com chọn Unity hub để down về. Unity hub là nơi bạn sẽ quản lý các phần mềm bạn cài từ unity về

Các bạn cứ down file này về cài đặt như bình thường đến khi finish. Bật unity hub vào phần install bấm add. Do mình đã cài sẵn rồi nên nó sẽ có 1 phiên bản như bên dưới.

Về phiên bản khuyên nên chọn bản Unity 2019.4.0f1 (LTS) vì tính ổn định của nó. Ở phần này thì các bạn có thể chọn platforms mình muốn code, mình thì hay code game trên android và desktop.

Các bạn có thể không chọn phần này cũng được nếu các bạn đã có editor khác như vscode hoặc đã cài Microsoft visual studio community.

Sau đó bấm Next -> done và chờ nó tải về.

Tạo Giao diện và chuẩn bị các đối tượng trước khi bắt đầu

0. Lên kế hoạch giao diện:

Chúng ta sẽ làm 2 giao diện:

Phần thứ nhất là giao diện menu chính gồm:

  • 1 title: Chứa tên
  • 1 nút Start: khi bấm ta sẽ vào phần gameplay
  • 1 nút Credit: khi bấm vào nó sẽ chuyển đến phần tác giả
  • 1 nút Exit: nó sẽ tắt game khi thoát

Phần thứ hai là giao diện phụ cho phần tác giả khi ta bấm vào nút credit:

  • 1 tile: để điền tên tác giả và nôi dung
  • 1 nút retutrn: khi bấm nút này ta sẽ chuyển về lại menu chính.

1. Tạo project và setup 1 số thứ

Sau khi đã cài xong các bạn chọn New rồi chọn loại game muốn làm hiện chúng ta đang làm 1 game 2D nên chọn phần 2D. Đặt tên cho project và chỗ lưu sau đó bấm create thôi.

2. Tạo giao diện menu cơ bản:

Trước tiên chúng ta hay tạo 1 object Panel trước. Panel hiểu đơn giản là 1 đối tượng giúp ta dễ quản lý các thành phần trong nó hơn. Tạo UI panel bằng cách click chuột phải -> UI -> Panel. 

Sau đó chọn rename nó thành Menu. Như vậy chúng ta sẽ quản lý giao diện dễ hơn.

Tiếp theo Tạo 1 object text bằng cách click chuột phải tại menu -> UI -> Text

Tiếp theo chúng ta tạo thêm 3 button gồm 1 nút Start, Credit và Exit. bằng cách click chuột phải -> UI -> Button

Các bạn hay rename các button vừa tạo thành lần lượt thành Start, Credit và Exit bằng cách click chuột phải vào đối tượng chọn rename

Giờ qua bên tab scene ta sẽ thấy các đối tượng đang bị đè lên nhau, các bạn hãy reset ví trí của Object Text vừa tạo về trung tâm bằng click chuột phải vào thành Rect Transform chọn reset:

Giờ chúng ta sẽ chỉnh ví trí, click vào nút mũi tên xung quanh với object bạn muốn di chuyển, 2 mũi tên xanh và đỏ sẽ xuất hiện. Các bạn hãy kéo thả nó cho hợp theo ý của các bạn.

Các bạn có thể thay đổi kích thước của object, và ví trí của các button bằng nút bên trái hoặc nhập thủ công bằng bảng bên phải, cài này các bạn có thể tự test để trải nghiệm.

Rect transform: là 1 bảng thống kê dữ liệu gồm ví trí, kích thước, tọa độ của object mà đối tượng bạn đang sử dụng.

Trong mỗi button các bạn vừa tạo sẽ tự động sinh ra 1 object Text bên trong nó. Ở góc bên phải sẽ có 1 trường gọi là Text. Trường này giúp bạn đổi dòng text hiện thị, chỉnh font, kích thước chữ, căng kề, màu và nhiều thứ khác. Phần này các bạn hãy tự chỉnh cho phù hợp nhé.

Để kéo giãn kích thước này ra xung quanh thì ta nhấn nút bên góc trái, sau đó giữ phím Alt + kéo chuột cái nút màu xanh nước biển nhé.

Giờ ta chọn phần Game để xem tác phẩm của chúng ta. Như vậy ta đã xong 1 giao diện cơ bản.

Ta cũng có thể đổi màu nên bằng trường image khi click vào Panel Menu nhé.

Tiếp chúng ta sẽ tạo thêm giao diện riêng khi click vào nút Credit cũng tương tự như sau:

Để tiện cho việc tạo giao diện tạm thời ẩn giao diện của menu đi bằng cách bỏ tick ô bên phải

Lưu ý: để chữ ta gõ ở phần text không mất đi khi font-size quá to chúng ta sẽ chọn tab overflow để khắc khục hoặc chọn tab best fit.

Bấm nút này để tắt phần giao diện của Panel phụ đi vì ta không muốn nó bật lên lúc ta vừa vào Menu. Ta chỉ muốn bật giao diện panel phụ lên khi click vào nút credit thôi

ta nhấn chọn Panel rồi bỏ chọn ô bên phải.

Ta bật lại tab menu lên bằng cách nhấn chọn Menu sau đó check vào ô bên phải

Như vậy ta đã có 1 menu cơ bản gồm 1 Panel tên là Menu và 1 panel phụ cho nút Credit:

3. Code các chức năng cho giao diện:

Tiếp đến chúng ta sẽ code những function để các nút đó có thể hoạt động.

Các bạn click chuột vào phần Assets bên dưới sau đó chọn Create -> C# Script để tạo file csharp các bạn hay đặt tên nó là GameManager. Sau đó các bạn hay click 2 lần vào đó để mở file đó lên.

Trong file đó bạn sẽ code những function sau:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour {

    public GameObject CreditUI;

    public void exitgame() {
        // Tắt game
        Application.Quit();
    }

    public void openCredit() {
        CreditUI.SetActive(true); // bật credit lên
    }

    public void closeCredit() {
        CreditUI.SetActive(false); // tắt credit
    }

    public void startgame() {
        // ta sẽ tạo trước fucntion game;
        Debug.Log("Game Start");
    }

}

Sau đó các bạn hay lưu nó lại, và quay trở lại unity. Chọn các nút Start, Credit, Exit, button bấm nút Add Component để add Script vào trong những nút ta vừa tạo.

 

Ở object Start bạn hãy click vào dấu + sau đó kéo thả object Start vào ô none(Object) để khi ta click vào nút, thì để nó xác đính đối tượng thực hiện lênh từ file GameManager.

 

Sau khi add xong vào phần No function -> GameManager -> startgame().

Để dẫn tới function ta vừa code.

     

Làm tương tự như vậy với các nút còn lại.

Nút Credit

object Credit bạn hãy kéo thả Panel vào ô Credit UI, mục đính kéo panel vào để gán đối tương panel vào code, nhưng nút khác không cần kéo vì nó không sử dụng Panel. Chúng ta chỉ kéo đối tượng panel vào những nút nào sử dụng panel thôi. (Lưu ý: mà dù các bạn có lỡ kèo vào thì cũng không có vấn đề gì đâu nhé).

Nút Exit

Object Button:

Sau khi các bấm nút play để thử nghiệm

Build project chạy demo trên PC và Android:

Để build project bạn vào File -> build setting. Bạn có thể chọn platform muốn build android hoặc pc. Sau đó click vào nút add open scenes để nó tự thêm vào project vào.

Để code cho android thì các bạn chọn android chọn switch platform unity sẽ chuyển project về android sau khi chuyển xong bạn chỉ việc bấm nút build thôi. Sau đó chúng ta chỉ việc bấm nút build and run là xong. Như vậy bạn có demo 1 game gồm các giao diện 3 nút.

Build hoàn chỉnh: https://github.com/SeiSilver/Codelearn2DGame

Tổng kết:

Mình đã hướng dẫn các bạn nhưng thao tác cơ bản các tạo các đối tượng để làm việc, giới thiệu sơ cách sử dụng giao diện và cách thêm code vào trong các đối tượng unity. Hi vọng qua bài này các bạn đã có thể nắm sơ cách để làm việc với unity. Chúc các bạn thành công.