Số thực và Mathf
Thuộc phần Những kiến thức cơ bản về lập trình trong Unity trong hành trình Unity của Coddy. Bài học 16 trên 85.
Bạn đã gặp chữ f trong bài Số thập phân cần có chữ f: C# đọc 0.5 là double, còn Unity tính toán bằng float. Điều tương tự cũng xảy ra với phép toán. System.Math hoạt động với kiểu double, nên float s = Math.Sin(x); gây ra lỗi CS0266: Cannot implicitly convert type 'double' to 'float'.
Unity có phiên bản dùng float của thư viện này là Mathf: Mathf.Sin, Mathf.Abs, Mathf.Sqrt, Mathf.PI. Chiếc phao nhấp nhô này gặp cả hai lỗi, nhưng sau đây thì biên dịch được:
// trước đó: float y = 1 + Math.Sin(Time.time * 2) * 0.5;
float y = 1 + Mathf.Sin(Time.time * 2) * 0.5f;
transform.position = new Vector3(0, y, 0);Các số nguyên như 1 và 2 không cần hậu tố: kiểu int chuyển thành float mà không mất dữ liệu.
Thử thách
DễSửa script của trái tim để code biên dịch được và trái tim đập trở lại.
- Trên dòng
size, đổiMath.AbsvàMath.SinthànhMathf.AbsvàMathf.Sin. - Đổi
0.5thành0.5f, giữ nguyên phần còn lại của công thức.
Nhấn Chơi: trái tim lớn dần từ 1 đến 1.5 rồi nhỏ lại, khoảng một lần mỗi giây. Sau đó nhấn Kiểm tra.
Tự làm thử
using System;
using UnityEngine;
public class Pulse : MonoBehaviour
{
void Update()
{
float size = 1 + Math.Abs(Math.Sin(Time.time * 3)) * 0.5;
transform.localScale = new Vector3(size, size, size);
}
}
Tất cả bài học trong Những kiến thức cơ bản về lập trình trong Unity
1C# cơ bản trong Unity
Xin chào, UnityBiếnSố thập phân cần có fVăn bản trong ConsoleBiến có thể ghi nhớIf và elseSo sánh các sốÔn tập: Thu thập xu7Vòng lặp và phương thức
Lặp lại với forVòng lặp lồng nhauViết phương thứcPhương thức trả lờiMảngÔn tập: Cầu thang2Làm cho nó chuyển động
Đặt khối lập phươngDi chuyển theo từng khung hìnhXoay mỗi giâyĐiều khiển bằng các phímÔn tập: Lái khối lập phương5Vectơ
Cộng vectơPhương hướngKhông gian cục bộ và không gian thế giớiTốc độ theo đường chéoKhoảng cách giữa các vậtVector3 là một structÔn tập: Người điều khiển drone8GameObject và thành phần
Tham chiếu trong InspectorLấy một thành phầnThành phần bị thiếuThêm một thành phầnRequireComponentHiện và ẩnÔn tập: Công tắc đèn3Inspector
Các trường trong InspectorSerializeFieldSố thực và MathfThuộc tính trong InspectorÔn tập: thang máy6Biến đổi và hệ phân cấp
Đối tượng cha và conKéo cờ lênTỷ lệNhìn vào các vật thểDi chuyển đến một điểmÔn tập: Mặt trăng quay quanh9Dự án: Bắt lấy ngôi sao
Người bắt saoNgôi sao rơiTự luyện tập: Playground Unity