Unity 2D Kamera Takip Scripti

Herkese selamlar. Bu içerikte sizlere Unity 2D ile platform oyununda sıklıkla kullanılması gereken bir scriptten bahsetmek istiyorum. Kamera Takip Scripti. Bu script sayesinde kamera karakterinizi takip edecek ve daha efektif bir oyun elde etmiş olacaksınız. Bu script iki arkaplanı hareket ettirecek şekilde kodlandı. Eğer tek arkaplan kullanacaksanız ona göre düzenlemeniz gerekir. Bir tanesini mutlaka silin. Örneğin orta zemini silip alt zeminin ismini arkaplan olarak değiştirip düzenleyebilirsiniz. zeminleriHareketEttirFNC fonksiyonu içerisindeki ortazemin kodunu da silmeyi unutmayın.(Eğer tek zemin yapacaksanız yoksa olduğu gibi bırakın) Aşağıda verilen uyarıyı dikkate almayı unutmayın. İyi çalışmalar.

Script adı cameraController olmazsa çalışmaz. Eğer Farklı script adı kullanacaksanız cameraController sınıf adını değiştirmeniz gerekir.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class cameraController : MonoBehaviour //Script adı cameraController olmazsa çalışmaz. Buraya dikkat
{
	[Header("Takip Edilecek Nesne")]
    [SerializeField] Transform hedefTransform;

	[Header("Kamera Sınırları")]
	[SerializeField] float minY;
	[SerializeField] float maxY;

	//Arkaplan Hareket İşlemi
	Vector2 sonPoz;
	[Header("Hareket Edecek Arkaplanlar")]
	[SerializeField] Transform altZemin;
	[SerializeField] Transform ortaZemin;

	private void Start()
	{
		sonPoz = transform.position; //kameranın pozisyonunu değişkeene atar.
	}

	private void Update()
	{
		KamerayiSinirlaFNC();
		zeminleriHareketEttirFNC();
	}

	void KamerayiSinirlaFNC()
	{
		//Normalde sadece bu kod yeterli (Yatay Hareket İçin)
		transform.position = new Vector3(hedefTransform.position.x,
			Mathf.Clamp(hedefTransform.position.y, minY, maxY),
			transform.position.z);
	}

	void zeminleriHareketEttirFNC()
	{
		//Kamera hareket edince ilk konum ile son konum arasındaki mesafeyi ölçer.
		Vector2 aradakiMiktar = new Vector2(transform.position.x - sonPoz.x, transform.position.y- sonPoz.y);
		altZemin.position += new Vector3(aradakiMiktar.x, aradakiMiktar.y, 0f);
		ortaZemin.position += new Vector3(aradakiMiktar.x, aradakiMiktar.y, 0f) *0.5f; // biraz daha ağır hareket etsin.
		sonPoz = transform.position; // Son pozisyonu her seferinde güncelleyecek.
	}
}

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

error: Content is protected !!