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

Unity 2D Karakter Hareketleri (Top Down View)

Bu derste İngilizcesi Top Down View olan her yöne hareket edebilmeyi sağlayan sistemi anlatacağım. Videolarıyla bana çok yardımı dokunan Blackthornprod’a Twitter üzerinden derslerini Türkçeye çevirip çeviremeyeceğimi sordum ve o da kabul etti. Konumuza geçersek bu dersi aşağıdaki videoyu referans alarak hazırlıyorum.

Yukarıdaki görsel karakterimiz olacak ister indirin ister kendi çizimlerinizi kullanın farketmez. Görseli oyuna ekleyip PlayerController adında bir script oluşturun ve bu scripti Player’a ekleyin.

public float speed;

Player’ın hareket hızını belirlemek için speed değişkeni oluşturuyoruz.

private Rigidbody2D rb;

Player’da Rigidbody kullanacağımız için tanımlıyoruz.

Rigidbody2D Componentinin özelliklerini çağırıyoruz. 

Şimdi Unity’e dönelim ve Rigidbody2D ekleyelim. Rigidbody2D varsayılan olarak Dynamic ile gelmekte. Bunu kinematic yapmamız gerekiyor çünkü yer çekiminden ve diğer fiziksel güçlerden etkilenmesini istemiyoruz. Bu karakteri oynatmak için ok tuşlarını kullanacağız.

movement değişkeni ile gideceğimiz yönün yani ok tuşlarından hangisine tıkladığımızı tespit edeceğiz. Vector2 (x, y) değerini almaktadır. Mesela sol oka bastığımızda Horizontal -1 değerini alacak. Sağ oka bastığımızda ise Horizontal 1 değerini alacak. Aynı şekilde yukarı ok 1, aşağı ok -1 değerini verecek.

Bu değerlerin nereden geldiğini öğrenmek istiyorsanız Edit > Project Settings > Input yolunu izleyerek bakabilirsiniz.

Nereye hareket ettiğimiz tutması için moveVelocity adında bir değişken oluşturuyoruz. movement.normalized ile movement değerini 1’e yuvarlıyoruz. Böylece ne çok hızlı ne çok yavaş gidecek.

Fizikle ilgili olaylar uygulayacağımız için FixedUpdate’e yazdık. moveVelocity ile gideceğimiz yönü ve hızı kaydetmiştik. Bu veriyi rb.MovePosition içinde kullanıyoruz. rb.position + diyerek bu yönü ve hızı pozisyonumuza ekliyoruz.

Sağ oka bastığımızda ve hızımızıda 10 olarak kabul edersek, moveVelocity.x değeri 10, moveVelocity.y değeri 0 olacak. Player’ın da bulunduğu konumu 0,0 olarak kabul edersek görseldeki gibi bir matematik çıkmaktadır.

Hareket işlemleri burada bitmekte. Oyunu çalıştırdığınızda Player’ın hareket ettiğini göreceksiniz. Hareket etmeyi bıraktığımızda biraz daha ileri gitmektedir. Bunun nedeni GetAxis kullanmamız. GetAxis yumuşak bir geçiş yapmamızı sağlıyor. Bunu istemiyorsanız robotik şekilde çalışmasını istiyorsanız GetAxisRaw olarak değiştirmeniz yeterli olacaktır.

Vector2 movement = new Vector2(Input.GetAxisRaw(“Horizontal”), Input.GetAxisRaw(“Vertical”));

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

Önceki yazı:

Bir cevap yazın

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

%d blogcu bunu beğendi: