"Enter"a basıp içeriğe geçin

Unity Günlüklerim (Roll-a-Ball) #3

Bu derste 3. videoyu anlatacağım. Bu videoda kameranın playera göre hareketini yani kameranın takibini yapacağız.

Kamera bakış açımızı yukarıdaki gibi yapacağız.

Bunun için Main Camera’nın özelliklerini açın ve değerleri yukarıdaki gibi yapın. Yükseklik 10, açısı ise 45 derece.

Ardından kamerayı Player objesinin child’ı yapalım. Kamerayı Player üzerine sürükle bırak yapmanız yetiyor. Böylece player hareket ettikçe kamerada onu takip etmiş olacak. Bu nasıl oluyor? Playerın pozisyonunda sağa +3 hareket olduğu zaman bunu tüm child objelerede uygulamaktadır. Yani sadece kamera değil bir tane daha Sphere obje oluşturup playerın childı yapsak bu objede playerın hareketlerine uyacak. Fakat child yer değiştirdiğinde altta olduğu için playerın yerini değiştirmeyecek.

Bu halde çalıştırırsak kamerada karakter ile birlikte dönecektir. Biz bunu istemiyoruz. Kamera her zaman yukarıda kalmalı ama player dönmeye devam etmeli. Eğer küp kullanıyor olsaydık bu çalışabilirdi ama bizim kullandığımız obje bir küre bu yüzden kamera player ile birlikte dönüyor.

Bunu böyle halledemeyeceğimiz için kamerayı child olmaktan çıkartalım. Bu işlem için script kullanmak daha uygun olacaktır.

CameraController adında bir script oluşturalım ve Main Camera objesine ekleyelim. Ardından CameraController scriptini açalım.

İki tane değişkene ihtiyacımız var. Player değişkenimiz public. Buraya Player objemizi atacağız. 

Offset ise kamera ile player arasındaki sabit mesafeyi belirleyecek. Bunu private yaptık çünkü bu mesafeyi kod içerisinde belirleyeceğiz.

Bu scripti kameraya attığımız için transform.position fonksiyonu kameranın pozisyonunu verecektir. Playerda CameraController scriptini kullanmadığımız için player değişkeni tanımladık ve arayüzden verilen objenin pozisyonunu almak içinde player.transform.position yazmamız gerekiyor.

Kameranın pozisyonunu her framede güncelliyoruz. Oyun başlarken kamera ile player arasındaki mesafeyi offset ile hesaplamıştık. Bu offset değeri ile playerın konumunu topluyoruz ve kameranın uzaklığını belirlemiş oluyoruz. Her framede tekrar çalıştığı için player her hareket ettiğinde aradaki mesafe sabit kalıyor.

Update yerine LateUpdate kullanıyoruz. Update her framede çalışıyordu. LateUpdatede her framede çalışmakta fakat tüm öğelerin güncellendikten sonra çalıştırılır. Yani player hareket ettikten sonra çalışır.

Resimdeki gibi Player objesini Main Kameradaki Player karşısına ekleyelim ve deneyelim.

Kameramız artık takla atmak yerine Playerı takip etmekte.

Sonraki derste oynayacağımız alanı düzenleyeceğiz.

Yazıyı Medium’da okumak için:

https://medium.com/@osmananilozcan/unity-g%C3%BCnl%C3%BCklerim-roll-a-ball-3-83c66e0cc9f

Önceki yazı:

Sonraki yazı:

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.