Kecepatan Diagonal
Termasuk bagian Dasar-Dasar Scripting Unity dalam perjalanan Unity di Coddy. Pelajaran 27 dari 85.
Tahan tombol panah kanan dan atas secara bersamaan, lalu sumbu mentah menghasilkan arah (1, 0, 1). Panjangnya, .magnitude, adalah akar kuadrat dari 1 + 1, sekitar 1.41. Pejalan yang bergerak mengikutinya menempuh 1.41 unit secara diagonal dalam waktu yang sama dengan waktu untuk menempuh 1 unit lurus ke depan: 41% lebih cepat.
.normalized menghasilkan salinan vektor yang menunjuk ke arah yang sama dan panjangnya tepat 1 unit: (1, 0, 1) menjadi sekitar (0.71, 0, 0.71), dan (0, 0, 5) menjadi (0, 0, 1). Jika dikalikan dengan kecepatan, vektor ini membuatnya bergerak dengan kecepatan tersebut ke arah mana pun. Lebah ini terbang menuju bunga dengan kecepatan 2 unit per detik, baik bunganya jauh maupun dekat. Tanpa .normalized, lebah akan terbang lebih cepat jika bunganya lebih jauh:
public Vector3 flower = new Vector3(4, 1, 3);
public float speed = 2f;
void Update()
{
Vector3 toFlower = flower - transform.position;
transform.position += toFlower.normalized * speed * Time.deltaTime;
}Vector3.zero.normalized tetap (0, 0, 0), karena nol tidak memiliki arah. v.normalized membiarkan v tetap seperti semula; v.Normalize() mengubah v itu sendiri.
Tantangan
MudahBuat walker bergerak dengan kecepatan yang sama saat bergerak diagonal.
- Di dalam
Update(), buatVector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));. - Tambahkan
direction.normalized * speed * Time.deltaTimeketransform.position.
Tekan tombol “Main” dan tahan dua tombol panah: walker bergerak diagonal dengan kecepatan yang tidak melebihi kecepatan saat bergerak lurus. Lalu tekan tombol “Periksa”.
Coba sendiri
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// Tombol panah atau WASD: bergerak sepanjang sumbu x dan z dengan kecepatan yang sama, termasuk saat bergerak diagonal.
}
}
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