Menu
CoddyTech

Jarak Antarobjek

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

Vector3.Distance(a, b) menunjukkan jarak antara dua titik dalam satuan, diukur dalam garis lurus pada ketiga sumbu. Nilai ini adalah panjang langkah di antara keduanya, (a - b).magnitude, jadi urutan a dan b tidak berpengaruh. Jarak dari (0, 0, 0) ke (3, 0, 4) adalah 5.

Bandingkan jarak dengan sebuah angka agar skrip tahu saat sesuatu berada dekat. Camper ini hanya bisa menghangatkan tangannya jika berada dalam jarak 4 satuan dari api unggun, yang posisinya diatur oleh Inspector:

public Vector3 campfire = new Vector3(3, 0, 4);

void Update()
{
    float d = Vector3.Distance(transform.position, campfire);
    if (d < 4f && Input.GetKeyDown(KeyCode.Space))
    {
        Debug.Log("You warm your hands");
    }
}

Jarak juga menghitung ketinggian: camper yang berada 5 satuan di atas api berjarak 5 satuan darinya, bukan 0. Jika ketinggian tidak perlu dihitung, bandingkan dua titik dengan nilai y yang sama.

challenge icon

Tantangan

Mudah

Perlambat karakter menjadi setengah kecepatan di rawa.

  1. Di bawah float s = speed;, tulis if (Vector3.Distance(transform.position, swamp) < 3f).
  2. Di dalamnya, atur s = speed / 2;. Biarkan field speed dan baris pergerakan seperti semula.

Tekan tombol “Main” dan berjalanlah ke kanan melewati rawa: karakter akan melambat di dalamnya. Lalu tekan tombol “Periksa”.

Coba sendiri

using UnityEngine;

public class Walker : MonoBehaviour
{
    public float speed = 4f;
    public Vector3 swamp = new Vector3(0, 0.5f, 0);

    void Update()
    {
        float s = speed;
        // Jika berada dalam jarak 3 unit dari swamp, bergeraklah dengan setengah kecepatan.

        Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
        transform.position += direction.normalized * s * Time.deltaTime;
    }
}

Semua pelajaran di Dasar-Dasar Scripting Unity

Latihan sendiri: Playground Unity