Menu
CoddyTech

Bir Noktaya Doğru Hareket

Coddy'nin Unity Journey'sinin Unity'de Script Yazmanın Temelleri bölümünün bir parçası. Ders 27 / 67.

Vector3.MoveTowards(current, target, maxStep), target'a maxStep kadar yaklaşan bir nokta döndürür. Hedef bundan daha yakınsa 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 hedefte 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);
}

İstasyona vardığında sonraki her çağrı yine station döndürür; böylece teleferik yerinde kalır ve transform.position == station doğru olur. 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 yolun tam ortasındadır. Update() içinde Lerp(transform.position, station, 2f * Time.deltaTime) olarak yazıldığında her karede kalan mesafenin bir bölümünü kat eder: başlangıçta hızlı, sona yaklaştıkça giderek yavaşlar; belirli bir hızla varmak yerine hedefe doğru yavaşça yaklaşır. Bir nesnenin belirli bir hızla hareket edip tam hedefte durması gerekiyorsa MoveTowards'u kullan; yumuşak bir yavaşlama için bu Lerp kalıbını kullan.

challenge icon

Görev

Orta

Drone, Space tuşuna basana kadar havada bekler. O andan itibaren pad konumuna, yani iniş pistinin konumuna, saniyede speed birim hızla düz bir çizgide uçar ve tam üzerine iner. İndiğinde Landed mesajını bir kez kaydeder; sonrasında her karede tekrar kaydetmez.

Play'e bas, Space tuşuna bas, ardından Check'e bas.

Kendin dene

using UnityEngine;

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

    void Update()
    {
        // Space tuşuna basıldıktan sonra: speed hızıyla pad konumuna uç ve varınca Landed mesajını bir kez günlüğe kaydet
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Unity'de Script Yazmanın Temelleri bölümündeki tüm dersler