Kamera Takip Sistemi Flashcards
public Transform target;
Bu, kameranın takip edeceği hedefin konumunu temsil eden bir Transform değişkenidir. Bu değişkeni Unity editöründe sürükleyip bırakarak bir karaktere
veya başka bir objeye bağlayabilirsiniz.
public float smoothSpeed = 0.125f;
Kameranın hareketinin ne kadar yumuşak olacağını belirten bir hız değeri. Bu
örnekte kullanılan smoothSpeed değeri, kod içinde kullanılmamış olsa da,
genellikle kameranın yumuşak hareketi için kullanılır.
public Vector3 offset;
Kameranın hedefin konumuna göre belirli bir mesafede durmasını sağlayan bir
vektördür. Bu, kameranın hedefin üzerinde, altında veya yanında olmasını sağlar.
LateUpdate() Metodu:
void LateUpdate():
LateUpdate() metodu, Update() metodundan sonra çağrılır ve kameranın hedefi
takip etmesini sağlamak için kullanılır. Bu metodun Update() metodundan sonra
çalışması, sahnedeki diğer objelerin hareketlerinin tamamlanmasından sonra
kameranın konumunu ayarlaması açısından önemlidir
transform.position = target.position + offset;
Bu satır, kameranın konumunu hedefin konumuna offset vektörü eklenmiş haliyle
ayarlar. Yani kamera, hedefin offset kadar uzağında duracaktır.
Kameranın hangi objeti takip edeceğini anlayabilmesi için Unity arayüzünde
Kamera objesine eklediğiniz bu script dosyasında ilgili atamayı yapmanız
gerekmektedir.
private float speedModifier;
Hareket hızını değiştirmek için kullanılabilecek bir çarpan. Başlangıçta 1 olarak
ayarlanmıştır.
public float speed = 5;
Karakterin ileri hareket hızı.
public float Input_Speed = 10.0f;
Fare hareketinin karakterin yanlara hareketini ne kadar etkilediğini belirleyen bir
çarpan.
private Vector3 previousMousePosition;
Fare tıklamasının önceki pozisyonunu saklamak için kullanılan vektör.
Rigidbody rb;
Karakterin fiziksel bileşeni.
Start() Metodu:
void Start()
Oyun başladığında bir kez çağrılır. Rigidbody bileşenini alır ve speedModifier
değişkenini 1 olarak ayarlar.
Update() Metodu:
void Update():
Her karede bir kez çağrılır. Bu metod, karakterin sürekli ileri hareket etmesini ve
fare girişi ile yanlara hareket etmesini sağlar
transform.Translate(Vector3.forward * speed * Time.deltaTime):
Karakterin ileri hareket etmesini sağlar. speed ile belirlenen hızda, Time.deltaTime
ile çarpılarak kare başına sabit bir hızda ileri gider.
Time.detaTime:
Time.deltaTime Unity’de, bir önceki kareden bu yana geçen süreyi saniye cinsinden
temsil eden bir değişkendir. Bu, oyun döngüsünde her kare arasındaki süreyi verir ve
bu sayede animasyonlar, hareketler ve diğer zaman bazlı işlemler kare hızından
bağımsız olarak düzgün bir şekilde yapılabilir. Örneğin, eğer bir oyun 60 FPS (Frames Per Second - Saniyedeki Kare Sayısı) hızında
çalışıyorsa, Time.deltaTime yaklaşık olarak 1/60 yani 0.0167 saniye olacaktır. Eğer oyun
30 FPS hızında çalışıyorsa, Time.deltaTime yaklaşık olarak 1/30 yani 0.0333 saniye
olacaktır.
Time.deltaTime kullanmak, kodun farklı kare hızlarında tutarlı ve düzgün bir şekilde
çalışmasını sağlar. Bu, karakterin hızının bilgisayarın veya cihazın kare hızına bağlı
olmamasını, dolayısıyla farklı cihazlarda veya farklı performans seviyelerinde aynı
hızda hareket etmesini sağlar
Vector3.forward:
İleri doğru bir vektördür (z ekseninde pozitif yönde)
speed:
Karakterin hızı (saniyede alınacak mesafe).
KODDAKİ -> Time.deltaTime:
Bir önceki kareden bu yana geçen süre (saniye cinsinden). Bu ifade, karakterin ileri doğru speed değeri kadar, ama zamanla orantılı olarak (her
karede geçen süreyle çarpılarak) hareket etmesini sağlar. Bu sayede, kare hızı ne olursa olsun karakter her saniye belirlenen speed hızında hareket eder. Özetle, Time.deltaTime karakterin hareketinin kare hızına bağımlı olmadan düzgün ve tutarlı bir şekilde gerçekleştirilmesini sağlar.
if(Input.GetMouseButtonDown(0)):
Fare sol tuşuna basıldığında, previousMousePosition değişkenine fare pozisyonunu kaydeder
else if (Input.GetMouseButton(0)):
Fare sol tuşuna basılı tutulduğunda çalışır.
currentMousePosition
Anlık fare pozisyonunu alır ve deltaX ile x eksenindeki farkı hesaplar
Vector3 move = new Vector3(deltaX * Input_Speed * Time.deltaTime, 0, 0):
Vector3 move = new Vector3(deltaX * Input_Speed * Time.deltaTime, 0, 0):
transform.Translate(move)
Karakterin x ekseninde hareketi sağlanır
Vector3 clampedPosition = transform.position:
Karakterin x eksenindeki pozisyonu -4.5 ile 4.5 arasında sınırlandırılır (Mathf.Clamp
kullanılarak).
transform.position = clampedPosition
Karakterin pozisyonunu günceller