Bergerak Menuju Titik
Termasuk bagian Dasar-Dasar Scripting Unity dalam perjalanan Unity di Coddy. Pelajaran 35 dari 85.
Vector3.MoveTowards(current, target, maxStep) mengembalikan titik yang jaraknya 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 langkah, sebuah objek 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 mengembalikan station lagi, sehingga kereta tetap diam, 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, titiknya 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, merayap mendekat alih-alih tiba dengan kecepatan tetap. Gunakan MoveTowards saat objek harus bergerak dengan kecepatan tetap dan berhenti tepat di tujuan; gunakan pola Lerp tersebut untuk perlambatan yang halus.
Tantangan
SedangTerbangkan drone ke landasan pendaratannya saat Space ditekan.
- Tambahkan field
bool flying;danbool landed;. SaatInput.GetKeyDown(KeyCode.Space), aturflying = true;. - Selama
flying && !landed, gerakkan drone denganVector3.MoveTowards(transform.position, pad, speed * Time.deltaTime). - Saat
transform.position == pad, aturlandeddan catatLanded.
Tekan Main, lalu Space: drone mendarat di landasan. Lalu tekan Periksa.
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 ke pad dengan kecepatan speed, lalu catat Landed sekali saat tiba
}
}
Semua pelajaran di Dasar-Dasar Scripting Unity
1Dasar-Dasar C# di Unity
Halo, UnityVariabelDesimal Memerlukan fTeks di ConsoleVariabel yang Menyimpan NilaiIf dan ElseBandingkan AngkaUlasan: Pengumpul Koin7Perulangan dan method
Ulangi dengan forPerulangan di dalam perulanganTulis methodMethod yang Mengembalikan NilaiarrayUlasan: Tangga10Menemukan Benda
Cari Berdasarkan NamaTagCari Berdasarkan TipeReferensi Lebih Baik daripada FindNull di UnityRangkuman: Koin Terdekat13Proyek: Hindari Balok
Karakter PelariBalok dari Langit2Buat Bergerak
Tempatkan KubusBergerak Setiap FrameBerputar Setiap DetikKemudikan dengan TombolRangkuman: Kemudikan Kubus5Vektor
Menjumlahkan VektorArahRuang Lokal dan DuniaKecepatan DiagonalJarak AntarobjekVector3 adalah StructRangkuman: Pilot Drone8GameObjects dan Komponen
Referensi di InspectorAmbil KomponenKomponen yang HilangTambahkan KomponenRequireComponentTampilkan dan SembunyikanRingkasan: Sakelar Lampu6Transformasi dan Hierarki
Objek Induk dan AnakKibarkan BenderaSkalaMelihat BendaBergerak Menuju TitikRekap: Bulan yang MengorbitLatihan sendiri: Playground Unity