Menu
CoddyTech

Float dan Mathf

Termasuk bagian Dasar-Dasar Scripting Unity dalam perjalanan Unity di Coddy. Pelajaran 9 dari 67.

Unity menghitung menggunakan float: posisi, kecepatan, sudut, dan Time.deltaTime semuanya bertipe float. C# membaca 0.5 sebagai double dan tidak akan mengubah double menjadi float tanpa instruksi, karena presisinya bisa berkurang. Dua error kompilasi akibat hal ini muncul di hampir semua skrip pertama pemula:

  • float half = 0.5; menghasilkan CS0664: Literal of type double cannot be implicitly converted to type 'float'; use an 'F' suffix.
  • float s = Math.Sin(x); menghasilkan CS0266: Cannot implicitly convert type 'double' to 'float', karena System.Math bekerja dengan double.

Solusinya: tulis literal float dengan f, dan gunakan Mathf, versi float dari Math milik Unity (Mathf.Sin, Mathf.Abs, Mathf.Sqrt, Mathf.PI). Pelampung yang bergerak naik turun ini mengalami kedua error tersebut, lalu berhasil dikompilasi setelah diperbaiki:

// sebelumnya: 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);

Bilangan bulat seperti 1 dan 2 tidak memerlukan akhiran: int berubah menjadi float tanpa kehilangan nilai.

challenge icon

Tantangan

Mudah

Jantungnya harus berdenyut: ukurannya berubah dari 1 hingga 1.5 lalu kembali, tiga kali per detik, sama pada setiap sumbu. Skrip tidak dapat dikompilasi. Perbaiki error dengan operasi matematika float Unity, dan pertahankan rumusnya.

Tekan Mainkan untuk melihat error di Console, perbaiki, lalu tekan Periksa.

Coba sendiri

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);
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar Scripting Unity