Unity Eğitim
Dersler
Forum Sınav Merkezi Premium 💎
C# Dersleri

Unity'de Transform.Translate() Metodu: Nesne Hareket Ettirme Rehberi

Paylaşan: Unity Eğitim 23 September 2025 3 dakika okuma 179 görüntülenme

Unity oyun motorunda, oyun dünyasındaki nesnelerin konum, rotasyon ve ölçek gibi özelliklerini kontrol etmek için Transform bileşeni kullanılır. Bu bileşenin en temel fonksiyonlarından biri de Transform.Translate() metodudur. Bu metod, oyun nesnesini belirli bir vektör yönünde hareket ettirmenizi sağlar. Bu rehberde, Transform.Translate() metodunu detaylı bir şekilde inceleyeceğiz, farklı kullanım örneklerini göreceğiz ve olası sorunları ele alacağız.

Transform.Translate() Metodunun Temelleri


Transform.Translate() metodu, nesnenin yerel uzayında (local space) veya dünya uzayında (world space) hareket etmesini sağlar. Yerel uzay, nesnenin kendi koordinat sistemini ifade ederken, dünya uzayı ise oyun dünyasının genel koordinat sistemidir. Metodun temel sözdizimi şu şekildedir:
transform.Translate(Vector3 translation);

Burada translation, Vector3 tipinde bir değişkendir ve nesnenin hareket edeceği yönü ve mesafeyi belirtir. Vector3(x, y, z) değerleri sırasıyla X, Y ve Z eksenlerindeki hareket miktarını temsil eder. Örneğin, transform.Translate(new Vector3(1, 0, 0)); kodu nesneyi X ekseninde 1 birim sağa hareket ettirir.

Dünya Uzayında (World Space) Hareket Ettirme


Nesneyi dünya uzayında hareket ettirmek için Space.World parametresini kullanabilirsiniz:
transform.Translate(new Vector3(1, 0, 0), Space.World);

Bu kod, nesneyi dünya koordinat sisteminde X ekseninde 1 birim sağa hareket ettirir. Nesnenin rotasyonu ne olursa olsun, hareket her zaman dünya eksenlerine göre gerçekleşir.

Yerel Uzayda (Local Space) Hareket Ettirme


Nesneyi yerel uzayında hareket ettirmek için Space.Self parametresini kullanabilirsiniz (veya parametreyi tamamen atlayabilirsiniz, çünkü varsayılan değer Space.Self'dir):
transform.Translate(new Vector3(1, 0, 0), Space.Self); // veya transform.Translate(new Vector3(1, 0, 0));

Bu kod, nesneyi kendi eksenlerine göre X ekseninde 1 birim sağa hareket ettirir. Nesnenin rotasyonu, hareketin yönünü etkiler.

Örnekler


Örnek 1: Sürekli Hareket


Oyun nesnesini her karede belirli bir miktar hareket ettirmek için Update() fonksiyonunu kullanabilirsiniz:
public float speed = 5f;
void Update() {
transform.Translate(Vector3.forward * speed * Time.deltaTime);
}

Bu kod, nesneyi her karede speed değerine göre ileri doğru (Z ekseni) hareket ettirir. Time.deltaTime, geçen süreyi kullanarak kare hızından bağımsız bir hareket sağlar.

Örnek 2: Klavyeyle Kontrol


Oyun nesnesini klavyeyle kontrol etmek için Input.GetAxis() fonksiyonunu kullanabilirsiniz:
public float speed = 5f;
void Update() {
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(horizontal, 0, vertical);
transform.Translate(movement * speed * Time.deltaTime);
}

Bu kod, yatay ve dikey hareketleri alarak nesneyi klavyeden kontrol eder.

İpuçları ve Püf Noktaları



  • Time.deltaTime kullanın: Kare hızından bağımsız hareket sağlamak için her zaman Time.deltaTime kullanın.

  • Yerel ve dünya uzayını anlayın: Nesnenin hareketini doğru bir şekilde kontrol etmek için yerel ve dünya uzayı arasındaki farkı anlamak çok önemlidir.

  • Transform.position kullanımı: Bazı durumlarda, transform.position kullanarak nesnenin konumunu doğrudan ayarlamak daha etkili olabilir. Ancak, Translate() metodu, fizik motoruyla daha iyi entegre çalışabilir.


Sonuç


Transform.Translate() metodu, Unity'de nesneleri hareket ettirmenin basit ve etkili bir yoludur. Farklı parametreler ve kullanım örnekleri ile oyunlarınızda çeşitli hareket mekanikleri oluşturabilirsiniz. Bu rehberde öğrendiklerinizi kullanarak, oyunlarınızdaki nesneleri istediğiniz gibi kontrol edebilirsiniz.

🧠 Ders Sonu Değerlendirme Testi

Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.

🔥 +50 XP Ödül
🔒

Sınava Katılmak İçin Giriş Yapın

Bu ders sonu testini çözebilmek, bilginizi test edip **+50 XP** kazanmak ve **Sınav Şampiyonu** rozetinin kilidini açmak için üye girişi yapmalısınız.

Yorumlar (0)

Yorum yazabilmek ve derslere katkıda bulunabilmek için giriş yapmalısınız.

İlk yorumu siz yapın!