Hướng dẫn làm game craze math
Bài đăng này đã không được cập nhật trong 3 năm
Chào các bạn! Như tiêu đề mình sẽ hướng dẫn các bạn làm game crazemath. Một game khá là thú vị cũng từng được 1 số báo viết bài.
Có 1 lưu ý nhỏ là, đây là 1 mini game, và mình làm bài hướng dẫn này ngắn gọn nhất, dễ làm nhất để các bạn mới làm quen với unity cũng có thể làm được! Vì vậy chúng ta sẽ không bàn đến vấn đề tối ưu hay kĩ thuật quá cao siêu nhé!
Bước 1: Các bạn tạo 1 project unity như bình thường (3d hay 2d j cũng ko quan trọng nhé):
Bước 2: Chúng ta sẽ tạo cho mình các đối tượng sau:
- 1 Image
- 3 text
- 2 button. Theo cấu trúc sau:
Bước 3: Chúng ta sẽ cài đặt lại các thông số của các đối tượng sau:
- Camera:
- Canvas:
- Image:
- Text:
- Text (1):
- Text (2):
- Button:
- Text trong Button
- Button (1):
- Text trong Button (1):
- Image (1):
- Text trong Image (1):
- Button trong Image (1):
- Text trong Button trong Image (1):
Tới đây các bạn hãy switch platform sang android để có thể thấy màn hình thành quả từ đầu tới giờ nhé!
Cuối cùng chúng ta sẽ được kết quả như thế này:
Về mặt cơ bản các bạn đã thấy được UI của game rồi đúng? Game của chúng ta đã có da có thịt rồi, tiếp theo chúng ta sẽ tạo ra linh hồn cho nó! Thứ giúp nó sống được ^_^
Chúng ta tạo 1 script và đặt tên cho nó là "GameManager", sau đó đưa đoạn code sau vào nhé:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public enum GAME_STATUS
{
wait, //khi game bat dau thi can thoi gian de no xoa di lich su choi lan truoc
run, //khi game chay
result, //khi ket thuc game va dua ra ket qua
pause, //khi game dung lai
next //phep toan tiep theo
}
public class GameManager : MonoBehaviour {
public Image ImgThoiGian;
public Text TxtDiem;
public Text TxtDiemCuoi;
public Text TxtPhepTinh;
public Text TxtKetQua;
public Button BtnDung;
public Button BtnSai;
public Button BtnThuLai;
public GameObject ObjKetqua;
private float thoigianbatdau = 0;
private float thoigiancho = 3f;
private int sothu1;
private int sothu2;
private int soketqua;
private int sodiem;
private GAME_STATUS _status;
public GAME_STATUS Status
{
set
{
_status = value;
switch (_status)
{
case GAME_STATUS.wait:
sodiem = 0;
TxtDiem.text = sodiem.ToString();
TaoPhepTinh();
break;
case GAME_STATUS.run:
thoigianbatdau = Time.time;
ImgThoiGian.fillAmount = 1;
break;
case GAME_STATUS.next:
TaoPhepTinh();
break;
case GAME_STATUS.result:
HienKetQua();
break;
case GAME_STATUS.pause:
break;
default:
break;
}
}
}
// Bat dau game
void Start () {
Status = GAME_STATUS.wait;
//them cac hanh dong cho cac nut bam.
BtnDung.onClick.AddListener(Dung);
BtnSai.onClick.AddListener(Sai);
BtnThuLai.onClick.AddListener(Thulai);
}
// Update is called once per frame
void Update () {
//neu game dang chay thi se tinh thoi gian
if(_status == GAME_STATUS.run)
{
ChayThoiGian();
}
}
// ham tinh thoi gian cho game
private void ChayThoiGian()
{
// neu thoi gian con thi tiep tuc tru thoi gian.
if (ImgThoiGian.fillAmount > 0)
{
ImgThoiGian.fillAmount = (thoigiancho - (Time.time - thoigianbatdau)) / thoigiancho;
}
// neu thoi gian het ve 0 thi hien thi ket qua game.
if (ImgThoiGian.fillAmount <= 0)
{
Status = GAME_STATUS.result;
}
}
// ham tao ra cac phep toan
private void TaoPhepTinh()
{
// ta ra 2 so ngau nhien de tinh tong
sothu1 = Random.Range(1, 20);
sothu2 = Random.Range(1, 20);
// ket qua duoc tao ra ngau nhien co the dung hoac sai
soketqua = (sothu1 + sothu2 + Random.Range(-1, 1));
// hien thi phep tinh
TxtPhepTinh.text = sothu1 + "+" + sothu2;
// hien thi ket qua phep tinh
TxtKetQua.text = "= " + soketqua;
// cho game chay
Status = GAME_STATUS.run;
}
// ham kiem tra nguoi choi chon dap an do la dung hay sai so voi phep toan
private void kiemTra(bool isChoose)
{
// kiem tra xem nguoi choi chon ket qua vay la dung hay sai
if((sothu1 + sothu2 == soketqua && isChoose) ||
(sothu1 + sothu2 != soketqua && !isChoose)
)
{
// neu nguoi choi tra loi dung thi game se tiep tuc va duoc cong diem
Status = GAME_STATUS.next;
sodiem++;
TxtDiem.text = sodiem.ToString();
} else
{
// neu nguoi choi tra loi sai thi hien thi ket qua
Status = GAME_STATUS.result;
}
}
// hanh dong chon dap an dung cua nguoi choi
private void Dung()
{
// goi toi ham kiem tra
kiemTra(true);
}
// hanh dong chon dap an sai cua nguoi choi
private void Sai()
{
// goi toi ham kiem tra
kiemTra(false);
}
// ham thu lai cho phep sau khi hien thi ket qua thi nguoi choi co the choi lai
private void Thulai()
{
// an man hinh ket qua di
ObjKetqua.SetActive(false);
// dua game ve trang thai chuan bi chay
Status = GAME_STATUS.wait;
}
// ham hien man hinh ket qua khi game ket thuc
private void HienKetQua()
{
// hien thi diem cuoi cung cua nguoi choi
TxtDiemCuoi.text = "Your Score\n" + TxtDiem.text;
// hien thi man ket qua
ObjKetqua.SetActive(true);
}
}
}
Sau đó các bạn add script trên vào đối tượng GameManager trên scene, và kéo các đối tượng còn thiếu vào như trong hình.
Ok! Let's play! chúng ta đã xong game rồi đó các bạn! bây giờ các bạn đã có thể ấn play và tận hưởng thành quả của mình
Các bạn có thể chơi thử bản final của mình theo link sau
https://play.google.com/store/apps/details?id=com.dcprodev.crazemath
Có bất cứ câu hỏi nào các bạn có thể pm trực tiếp hoặc để lại comment phía dưới nhé
Nếu thích thì like, thú vị thì subscribe nhé
All rights reserved