Menu
CoddyTech

Skala

Termasuk bagian Dasar-Dasar Scripting Unity dalam perjalanan Unity di Coddy. Pelajaran 33 dari 85.

transform.localScale mengalikan ukuran objek pada setiap sumbunya. Kubus default memiliki panjang 1 unit pada setiap sisinya, jadi kubus dengan localScale (4, 1, 0.5) memiliki lebar 4 unit, tinggi 1 unit, dan kedalaman setengah unit. Untuk ukuran yang seragam, kalikan Vector3.one, yang bernilai (1, 1, 1). Gelembung sabun ini membesar 0.3 unit per detik hingga lebarnya mencapai 3 unit:

public float size = 1f;

void Update()
{
    size = Mathf.Min(size + 0.3f * Time.deltaTime, 3f);
    transform.localScale = Vector3.one * size;
}

Mathf.Min(a, b) mengembalikan angka yang lebih kecil dari kedua angka tersebut, jadi size membesar hingga mencapai 3, lalu tetap 3.

Skala diterapkan dari titik pivot objek, yang untuk bentuk bawaan Unity berada di tengah. Kubus berukuran 1 unit yang berada di atas tanah memiliki titik tengah pada y = 0.5. Jika skalanya diubah menjadi setinggi 3 unit, kubus itu menjulur 1.5 unit ke atas dan 1.5 unit ke bawah dari titik tersebut, sehingga separuh kubus terbenam di tanah. Agar berdiri di atas tanah, titik tengahnya harus berada pada setengah tingginya: y = 1.5.

Ukuran objek anak dikalikan dengan ukuran objek induknya: objek anak dengan localScale (1, 1, 1) di bawah objek induk yang skalanya dikalikan 2 akan digambar dua kali lebih besar. transform.lossyScale membaca ukuran akhir tersebut di dunia, dan nilainya hanya bisa dibaca; localScale adalah nilai yang kamu tetapkan.

challenge icon

Tantangan

Sedang

Kecilkan es batu hingga 0.4, sambil menjaganya tetap di tanah.

  1. Tambahkan field float size = 1f;. Di Update(), atur size = Mathf.Max(size - melt * Time.deltaTime, 0.4f);.
  2. Atur transform.localScale = Vector3.one * size;.
  3. Jaga bagian bawahnya tetap di y = 0: atur y pada posisinya menjadi size / 2, dan pertahankan x dan z.

Tekan tombol “Main”: kubus akan menyusut dan tetap berada di tanah. Lalu tekan tombol “Periksa”.

Coba sendiri

using UnityEngine;

public class Melt : MonoBehaviour
{
    public float melt = 0.2f;

    void Update()
    {
        // Perkecil sebesar melt setiap detik hingga 0.4, dengan bagian bawah tetap menyentuh tanah
    }
}

Semua pelajaran di Dasar-Dasar Scripting Unity

Latihan sendiri: Playground Unity