Bir Noktaya Doğru Hareket Et
Coddy'nin Unity Journey'sinin Unity'de Script Yazmanın Temelleri bölümünün bir parçası. Ders 35 / 85.
Vector3.MoveTowards(current, target, maxStep), target'a en fazla maxStep kadar yaklaşan bir nokta döndürür. Hedef bundan daha yakınsa doğrudan hedefin kendisini döndürür; bu nedenle hedefi asla aşmaz. Adım olarak speed * Time.deltaTime kullanıldığında nesne sabit hızla hareket eder ve tam hedefin üzerinde durur. Bu teleferik, saniyede 2 birim hızla istasyonuna süzülür:
public Vector3 station = new Vector3(6, 3, 0);
public float speed = 2f;
void Update()
{
transform.position = Vector3.MoveTowards(transform.position, station, speed * Time.deltaTime);
}Nesne istasyona ulaştığında, sonraki her çağrı yeniden station döndürür; böylece teleferik yerinde kalır ve transform.position == station ifadesi doğrudur. Tek bir sayı için Mathf.MoveTowards aynı şekilde çalışır.
Vector3.Lerp(a, b, t), a'dan b'ye giden yolun t oranındaki noktadır: t = 0.5 olduğunda tam ortadadır. Update() içinde Lerp(transform.position, station, 2f * Time.deltaTime) şeklinde yazıldığında, her karede kalan mesafenin bir kısmını kat eder: başlangıçta hızlı, sona yaklaştıkça giderek yavaş hareket eder ve sabit bir hızla varmak yerine hedefe doğru ağır ağır yaklaşır. Bir nesnenin sabit hızla hareket etmesi ve tam hedefte durması gerekiyorsa MoveTowards kullan; yumuşak bir yavaşlama için bu Lerp kalıbını kullan.
Görev
OrtaBoşluk tuşuna basıldığında drone'u iniş pistine uçur.
bool flying;vebool landed;alanlarını ekle.Input.GetKeyDown(KeyCode.Space)olduğundaflying = true;değerini ata.flying && !landedkoşulu sağlandığı süreceVector3.MoveTowards(transform.position, pad, speed * Time.deltaTime)ile hareket et.transform.position == padolduğundalandeddeğerini ata veLandedmesajını günlüğe yazdır.
“Oyna” düğmesine bas, ardından Boşluk tuşuna bas: drone piste iner. Ardından “Kontrol et”.
Kendin dene
using UnityEngine;
public class Drone : MonoBehaviour
{
public Vector3 pad = new Vector3(0, 0.25f, 0);
public float speed = 2f;
void Update()
{
// Space'e basıldıktan sonra: speed hızıyla pad'e uç ve varışta Landed mesajını bir kez günlüğe kaydet
}
}
Unity'de Script Yazmanın Temelleri bölümündeki tüm dersler
1Unity'de C# Temelleri
Merhaba, UnityDeğişkenlerOndalık Sayılar için f GerekirKonsolda MetinHatırlayan DeğişkenlerEğer ve DeğilseSayıları KarşılaştırmaTekrar: Coin Collector4Girdi
Basılı, Basılı Tutulmuş, BırakılmışEksenlerAdlandırılmış DüğmelerFare DüğmeleriTekrar: Zıplama Yükleme7Döngüler ve Metotlar
for ile tekrarlamaİç içe döngülerBir metot yazmaYanıt veren metotlarDizilerTekrar: Merdiven10Nesneleri Bulma
Ada Göre BulEtiketlerTüre Göre BulReferanslar Bulmaktan İyidirUnity'de NullÖzet: En Yakın Madeni Para13Proje: Bloklardan Kaç
KoşucuGökyüzünden Bloklar5Vektörler
Vektörleri ToplamaYönlerYerel ve Dünya UzayıÇapraz HızNesneler Arasındaki MesafeVector3 Bir Struct'tırTekrar: Drone Pilotu8GameObject'ler ve Bileşenler
Inspector'daki ReferanslarBir Bileşen AlEksik BileşenlerBileşen EkleRequireComponentGöster ve GizleÖzet: Işık Anahtarı3Inspector
Inspector AlanlarıSerializeFieldOndalıklı Sayılar ve MathfInspector ÖzellikleriTekrar: Asansör6Dönüşümler ve Hiyerarşi
Ebeveynler ve ÇocuklarBayrağı Göndere ÇekÖlçekNesnelere BakBir Noktaya Doğru Hareket EtTekrar: Yörüngedeki Ay9Proje: Yıldızı Yakala
YakalayıcıDüşen Bir YıldızKendi başına pratik yap: Unity playground