Menu
CoddyTech

Bergerak Menuju Titik

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

Vector3.MoveTowards(current, target, maxStep) mengembalikan titik yang berjarak hingga maxStep lebih dekat ke target. Jika target lebih dekat dari jarak itu, fungsi ini mengembalikan target itu sendiri, sehingga tidak pernah melewatinya. Dengan speed * Time.deltaTime sebagai langkahnya, sebuah object bergerak dengan kecepatan tetap dan berhenti tepat di target. Kereta gantung ini meluncur ke stasiunnya dengan kecepatan 2 unit per detik:

public Vector3 station = new Vector3(6, 3, 0);
public float speed = 2f;

void Update()
{
    transform.position = Vector3.MoveTowards(transform.position, station, speed * Time.deltaTime);
}

Setelah tiba, setiap pemanggilan berikutnya kembali mengembalikan station, sehingga kereta tetap di tempat, dan transform.position == station bernilai true. Untuk satu angka, Mathf.MoveTowards bekerja dengan cara yang sama.

Vector3.Lerp(a, b, t) adalah titik yang berada sejauh pecahan t dari a menuju b: saat t = 0.5, titik itu berada di tengah. Jika ditulis sebagai Lerp(transform.position, station, 2f * Time.deltaTime) di dalam Update(), fungsi ini menempuh sebagian dari jarak yang tersisa pada setiap frame: awalnya cepat, lalu semakin lambat saat mendekati akhir, dan terus mendekat alih-alih tiba dengan kecepatan tetap. Gunakan MoveTowards ketika object harus bergerak dengan kecepatan tetap dan berhenti tepat di tujuan. Gunakan pola Lerp tersebut untuk memperlambat gerakan secara halus.

challenge icon

Tantangan

Sedang

Drone menunggu di udara sampai kamu menekan Space. Setelah itu drone terbang lurus menuju pad, posisi landasan pendaratan, dengan kecepatan speed unit per detik, lalu mendarat tepat di sana. Saat mendarat, drone mencatat Landed satu kali, bukan berulang kali pada setiap frame setelahnya.

Tekan Play, tekan Space, lalu Check.

Coba sendiri

using UnityEngine;

public class Drone : MonoBehaviour
{
    public Vector3 pad = new Vector3(0, 0.25f, 0);
    public float speed = 2f;

    void Update()
    {
        // Setelah Space ditekan: terbang menuju pad dengan kecepatan speed, lalu catat Landed sekali saat tiba
    }
}
quiz iconUji dirimu

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

Semua pelajaran di Dasar-Dasar Scripting Unity