Menu
CoddyTech

Yerel ve Dünya Uzayı

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

Bir nesnenin dünyanın yönlerinin yanı sıra kendine ait yönleri de vardır. transform.forward, nesnenin burnunun gösterdiği yöndür (Unity'nin Scene görünümündeki mavi ok); dünya koordinatlarında, uzunluğu bir birim olan bir vektör olarak ifade edilir. transform.right ve transform.up ise nesnenin kendi sağ ve yukarı yönleridir. Nesneyi döndürdüğünüzde bu yönler de onunla birlikte döner. Bu kâğıt uçak, sahnede y ekseni etrafında 90 derece döndürülmüştür; bu nedenle gösterdiği yönde, dünyanın x ekseni boyunca uçar:

public float speed = 4f;

void Update()
{
    transform.position += transform.forward * speed * Time.deltaTime;
}

transform.Translate(Vector3.forward * speed * Time.deltaTime) aynı şeyi yapar; çünkü Translate, vektörünü nesnenin kendi uzayında yorumlar: burada Vector3.forward, nesnenin ileri yönünü ifade eder. İkinci bağımsız değişken olarak Space.World verirseniz bunun yerine dünyanın eksenlerini kullanır; dolayısıyla transform.Translate(Vector3.forward * speed * Time.deltaTime, Space.World), uçak hangi yöne bakarsa baksın dünyanın z ekseni boyunca hareket eder.

transform.Rotate da nesnenin kendi eksenleri etrafında döndürür. Yukarıdan bakıldığında, y ekseni etrafındaki pozitif bir açı dik duran bir nesneyi sağına, negatif bir açı ise soluna döndürür; nesnenin transform.forward yönü de onunla birlikte döner.

challenge icon

Görev

Kolay

Tanka tank kontrolleri ver: olduğu yerde dönsün, baktığı yönde ilerlesin.

  1. Update() içinde sağ ok tuşu basılı tutulurken transform.Rotate(0, turn * Time.deltaTime, 0); kullan; sol ok tuşu için -turn kullan.
  2. Yukarı ok tuşu basılı tutulurken transform.Translate(Vector3.forward * speed * Time.deltaTime); kullan.

“Oyna” düğmesine bas, dön ve ilerle: tank burnunun gösterdiği yöne gider. Ardından “Kontrol et” düğmesine bas.

Kendin dene

using UnityEngine;

public class Tank : MonoBehaviour
{
    public float speed = 3f;
    public float turn = 90f;

    void Update()
    {
        // Sağ/sol ok tuşları: y ekseni etrafında dön. Yukarı ok tuşu: tankın baktığı yöne doğru ilerle.
    }
}

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

Kendi başına pratik yap: Unity playground