Search…

Xử Lý Toán Học trong Unity

24/09/20203 min read
Giới thiệu các hàm toán học cơ bản trong Unity với Mathf.

Toán học rất quan trọng trong việc phát triển game dù là ở nền tảng nào. Unity cung cấp lớp Mathf hỗ trợ lập trình viên thao tác với các hàm toán học thuận tiện hơn.

Mathf là 1 trong số các bộ chứa các biến và hàm toán học tiện ích do Unity cung cấp. 

Abs

Là hàm trả về giá trị tuyệt đối của tham số.

2 prototype của hàm cho kiểu dữ liệu floatint như sau:

public static float Abs(float value);
public static int Abs(int value);

Asin - Acos - Atan - Sin- Cos - Tan

Asin, Acos, Atan, Sin, CosTan là các hàm hỗ trợ tính toán giá trị của các hàm lượng giác và lượng giác ngược.

Cú pháp cho hàm Sin như sau:

public static float Sin(float f);

Các hàm lượng giác khác cũng được sử dụng tương tự.

Giá trị f truyền vào là góc lượng giác tính bẳng radian. Sử dụng hằng số Mathf.PI để tính toán trên radian hoặc chuyển đổi sang radian bằng cách nhân góc với hằng số Mathf.Deg2Rag.

Min - Max

  • Hàm Min sẽ trả về giá trị nhỏ nhất trong danh sách tham số.
  • Hàm Max sẽ trả về giá trị lớn nhất trong danh sách tham số.

Danh sách tham số có thể bao gồm hai hoặc nhiều các giá trị. Kiểu dữ liệu của các giá trị có thể là số thực hoặc số nguyên.

Đối với việc so sánh 2 giá trị:

public static float Min( float a, float b);
public static float Max( float a, float b);

Nếu có nhiều hơn 2 giá trị cần so sánh, sử dụng mảng để chứa các giá trị đó và sử dụng hàm được override như sau:

public static float Min(params float[] values);
public static float Max(params float[] values);

Clamp

Hàm Clamp có tác dụng giới hạn giá trị của 1 đối tượng trong phạm vi cho phép. Tuỳ vào nhu cầu, có thể sử dụng hàm Clamp để giới hạn bất cứ khả năng nào của đối tượng.

Một số ví dụ về ứng dụng của hàm Clamp:

  • Giới hạn toạ độ của đối tượng trong phạm vi màn hình.
  • Giới hạn góc quay của 1 khẩu súng.
  • Giới hạn tốc độ, damage, các chỉ số sức mạnh, ... của 1 nhân vật trong game.

Prototype của hàm như sau:

public static float Clamp(float value, float min, float max);

Trong đó, minmax là 2 giá trị mút. Giá trị trả về của hàm sẽ luôn nằm giữa minmax, bất kể giá trị của biến value.

PingPong

PingPong là hiệu ứng mà 1 đối tượng luôn di chuyển ở giữa 2 đầu mút của nó. Nó làm liên tưởng đến trò chơi bóng bàn, khi quả bóng được đánh qua lại giữa 2 người chơi.

Hàm PingPong trong Mathf có nguyên mẫu của hàm như sau:

public static float PingPong(float t, float length);

Trong đó, length chính là giá trị lớn nhất mà hàm có thể trả về. Giá trị trả về này sẽ nằm trong khoảng [0, length].

Một số hàm khác và chức năng

Ngoài các hàm trên, lớp Mathf còn một số hàm khác:

PI Hằng số PI (3.1415926535...), không được phép chỉnh sửa.
Deg2Rag Hằng số chuyển đổi từ độ thông thường sang radians.
Rag2Deg Hằng số chuyển đổi từ radians sang độ thông thường.
Approximately So sánh giá trị của 2 số thực nếu chúng tương đương nhau.
IsPowerOfTwo Trả về true nếu giá trị là luỹ thừa của 2.
ClosetPowerOfTwo Trả về giá trị luỹ thừa của 2 gần nhất.
NextPowerOfTwo Trả về giá trị luỹ thừa của 2 lớn hơn gần nhất.
Log Tính giá trị logarit của 1 số với cơ số tuỳ ý.
Log10 Tính giá trị logarit của 1 số với cơ số 10.
Round Trả về số nguyên gần nhất với giá trị truyền vào.
Sqrt Tính căn bậc hai của 1 số.
Pow Tính luỹ thừa của 1 số với số mũ bất kỳ.
IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024