Học làm game (5) - Lập trình với Unity

Bài trước: Học làm game (4) - Unity (game Tetris tiếp)

-----

1         Lập trình với Unity

1.1       Khởi tạo game

– Phần này chúng ta sẽ lập trình để phát sinh các khối hình ngẫu nhiên.

– Mỗi khối hình luôn có 4 ô vuông (như đã thiết kế ở bước trước).

– Tổng cộng có 7 loại khối hình khác nhau (biến thể), có tên tương ứng là O-Tetromino, I-Tetromino, T-Tetromino, L-Tetromino, J-Tetromino, S-Tetromino và Z-Tetromino.

– Chữ Tetris là viết ghép của Tetra (nghĩa là 4) và tennis (quần vợt)

Chúng ta sẽ tạo một GameObject rỗng, đặt tên là Spawner (máy đẻ trứng, chúng ta sẽ dùng nó để phát sinh ngẫu nhiên các khối hình). Để Spawner ở phía trên đầu của phân cảnh.

Trong GameObject, viết hàm spawnNext để sinh ngẫu nhiên các khối.

Bấm chuột phải vào vùng Project\Assets > chọn Create > chọn C# Script > đặt tên là Spawner.  


Để lập trình, bấm đúp chuột vào Spawner để mở Visual Studio.

Trên máy tính đang cài Visual Studio 2022, tuy nhiên lại bị báo lỗi này và không thể mở cửa sổ để lập trình.

Đọc thông báo lỗi, và coi phiên bản của Visual Studio đang mở, thì phát hiện ra, Unity đã mở mặc định Visual Studio 2008. Bản này cũ quá, nên không hỗ trợ Unity.

 Để chọn được phiên bản Visual Studio, cần tìm được tập tin thực thi của nó. Bấm phím cửa sổ trên bàn phím > gõ Visual Studio 2022 > chuột phải vào nó, chọn Open file location > hệ thống sẽ mở vị trí của shortcut (C:\ProgramData\Microsoft\Windows\Start Menu\Programs) > chuột phải vào shortcut, chọn Open file location sẽ thấy được tập tin thực thi của VS 2022 trong C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE , có tên là Devenv.exe. Chọn Devenv.exe.

Trong mục External Script Editor, bấm chuột vào mục Visual Studio 2008 > chọn Browser > và tìm tới tập tin Devenv.exe.

Vậy là đã mở được cửa sổ lập trình cho Spawner.


Trong lớp Spawner, khai báo để tạo mảng có tên là groups, phạm vi truy cập là public, thuộc kiểu GameObject để chứa các kiểu khối hình.

public class Spawner : MonoBehaviour

{

    public GameObject[] groups;

    // Start is called before the first frame update

    void Start()

Trong lớp Spawner, viết hàm spawnNext để chọn một kiểu khối hình ngẫu nhiên trong mảng groups và xuất ra giao diện trò chơi bằng Instantiate.

   public GameObject[] groups;

    public void spawnNext()

    {

        int i = Random.Range(0, groups.Length);

        Instantiate(groups[i], transform.position, Quaternion.identity);

    }

    // Start is called before the first frame update

    void Start()

Instantiate sẽ khởi tạo một khối ngẫu nhiên tại vị trí i. Tham số transform.position là vị trí của Spawner, tham số Quaternion.identity là chế độ xoay mặc định.

Spawner sẽ gọi hàm spawnNext() để sinh ra khối đầu tiên khi game bắt đầu.

    void Start()

    {

        spawnNext();

    }

Unity sẽ tự động gọi hàm Start() khi nạp phân cảnh và Spawner khởi chạy.

Trong Unity, chọn Spawner trong cửa sổ Hierarchy, chọn Add Component bên Inspector > chọn Scripts > chọn Spawner.

Kéo từng khối hình từ cửa sổ Project vào Groups của Spawner. Nếu không có mục Groups, bạn kiểm tra lại xem đã lưu lại mã nguồn bên Visual Studio chưa.



Bạn bấm Play, màn hình trò chơi sẽ xuất hiện khối đầu tiên. Bạn có thể giảm tọa độ Y của Spawner thành 12 để thấy khối hình hợp lý hơn.



-----

Cập nhật: 19/3/2023

Bài sau: Học làm game (6) - Lập trình với Unity (LT chức năng)