Unity

Unity Programında Vektörler

Yönü, doğrultusu ve uzunluğu olan yönlü doğru parçasına vektör denir. Vektörün bir başlangıç ve bitiş noktası vardır. Unity size oyunlarınızı tasarlarken vektörel yapı sunar. Analitik geometride hipotenüs bir vektördür. Unity programında vektörlere geçmeden matematikteki vektörler konusunu çok iyi bilmemiz gerekir.

Aşağıda iki boyutlu uzayda A(4, 3) noktasına ait vektörel çizimi yapalım. Unity programında cisimlerin birbirlerine olan uzalıkları burada hipotenüs aracılığıla bulabiliriz.

A noktasından x ve y düzlemlerine dikmeler indirilir, elde edilen üçgende hipotenüs A noktasının orijine olan uzaklığını bulur. Vektörel uzunluklar her zaman orijine göre hesaplanmazlar. Örneğin A(4, 1) ve B(7, 5) noktaları arasındaki vektörel uzunluğu bulmak isteyelim. Aslında A noktasına X vektör uzunluğu ilave edilerek B noktası bulunmaktadır. Buna göre X vektörü B-A vektörünün kareköküne eşittir.

Şimdi de 3 boyutlu uzayda vektörel uzunlukları bulmaya çalışalım. Üç boyutlu uzay sol el kuralına göre gösterilir. Baş parmak x, işaret parmağı y, orta parmak z eksenini gösterilir. Tüm 3 boyutlu programlarda x kırmızı, y yeşil, z ise mavi renkle temsil edilirler. Bir A vektörünü (12, 0, 5) olarak belirleyelim. Bu noktayı aşağıdaki düzlemde gösterelim.

Burada A noktasını belirledikten sonra, noktanın orijine olan uzaklığını bulabiliriz. Bir başka nokta belirleyelim. B(5, 2, 4) noktasını belirleyelim. Vektörel uzunluğu bulmak için uzunlukların kareleri toplamının karekökü alınır. Şimdi unity programında nesnelerin vektörel uzunlukları nasıl bulunuyor, bunları inceleyelim.

Unity Hub programını açalım.

Yeni bir boş 3D proje oluşturalım. Projenin adını VektorelUzunluk olarak belirleyelim.

Sahneye ismi VektorelHesap olan boş bir nesne ekleyelim.

Assets klasörüne Scripts isimli bir klasör ekleyelim.

Bu klasörün içine Hesaplama isminde bir script dosyası ekleyelim.

Bu dosyayı boş nesneyle ilişkilendirelim.

Script dosyasını açalım. Start ve Update fonksiyonlarını silelim. Öncelikle vektörün başlangıç noktasına olan uzaklığını bulan uygulamayı yapalım. Yukarıda verilen örnekte A(5, 0, 12) vektörünün uzunluğunu 13 olarak bulmuştuk.

Kodlama işlemine geçelim. Öncelikle bu işlemi gerçekleştirecek komutu açıklayalım.

Magnitude

Vektörün başlangış noktasına olan uzazklığını bulur.

Öncelikle değişkenin ismini belirleyelim. Ben burada değişken ismi olarak A diyeceğim. Değişkenimizin türü vektör olacaktır. Bir noktanın vektör olabilmesi için x, y ve z değerlerinin bilinmesi gerekir. Bu değerleri sabit olarak tanımlayabileceğimiz gibi sürekli değiştirebiliriz. Ben her iki yöntemi de göstereceğim.

Sabit tanımlayarak işlemi yapma

Bu tip kodlamada hangi değeri verirsek program hep o değerleri dikkate alarak sonuç üretir. Sadece bir değer üretimi söz konusudur. Şimdi değişkenimizi tanımlayalım.

    private Vector3 A;

Vektörel uzunluğa ait sonucu saklamak için float tipinde bir sonuc değişkeni tanımlayalım.

    private Vector3 A;
    float sonuc = 0.0f;

Kodu yazdıktan sonra mutlaka kaydedelim. Değer girişi ve sonucu görüntülemek için Start metodunu yazalım.

    private Vector3 A;
    float sonuc;
    private void Start()
    {
    }

A noktasının değerlerini belirleyelim. 

    private Vector3 A;
    float sonuc;
    private void Start()
    {
        A.x = 5;
        A.y = 0;
        A.z = 12;
    }

Noktanın kameraya olan uzaklığını bulup sonuc değişkenine aktaralım.

    private Vector3 A;
    float sonuc;
    private void Start()
    {
        A.x = 5;
        A.y = 0;
        A.z = 12;
        sonuc = Vector3.Magnitude(A);
    }

Sonucu print deyimiyle görüntüleyelim.

    private Vector3 A;
    float sonuc;
    private void Start()
    {
        A.x = 5;
        A.y = 0;
        A.z = 12;
        sonuc = Vector3.Magnitude(A);
        print(sonuc);
    }

Script  dosyasını kaydedelim. Unity tarafına geçelim. Burada Console panelini açalım. Daha sonra uygulamayı çalıştıralım. Vektörün uzunluğu 13 olarak bulunur. A noktasının değerlerini script dosyasına gidip değiştirmedikçe hep aynı sonucu alırsınız.

Şimdi işlemi dinamik olarak tasarlayalım. Böylece değer girişini her yaptığınızda sonucun değiştiğini görürsünüz. Bu işlemi iki türlü yapabilirsiniz. Birincisinde yukarıda verilen kodu değiştirmeden şu ilaveleri yaparak statik ortamı dinamik hale getirebilirsiniz.

    [Header("A Vektörüne Ait Noktalar")]
    [SerializeField]
    private Vector3 A;
    float sonuc;
    private void Start()
    {
        sonuc = Vector3.Magnitude(A);
        print(sonuc);
    }

Burada eklediğimiz iki deyimi açıklayalım. Header deyimiyle Inspector paneline eklenen özelliklere başlık eklemiş oluyoruz. SerializeField deyimi ise, statik olarak tanımlı bir değişkenin dinamik olarak kullanılmasına izin verir. 

Şimdi diğer yöntemi anlatalım. Bu yöntemde SerializeField deyimine gerek kalmadan değişken bildirisini private yerine public olarak tanımlayabiliriz. Hadi şimdi onu yapalım.

    [Header("A Vektörüne Ait Noktalar")]
    public Vector3 A;
    float sonuc;
    private void Start()
    {
        sonuc = Vector3.Magnitude(A);
        print(sonuc);
    }

Projeyi kaydedip çalıştıralım. A vektörüne ait noktaları her değiştirdiğimizde sonucu farklı olarak görmekteyiz. Peki, iki vektörün kendi aralarındaki uzaklığı nasıl bulabiliriz. Şimdi bu işlemi gerçekleştirelim. Öncelikle bu işlemi gerçekleştiren deyimi tanımlayalım.

Distance

İki vektör arasındaki uzaklığı bulur. 

Script dosyasına geri dönelim. Aşağıdaki değişiklikleri yapalım.

    [Header("Vektörlere Ait Noktalar")]
    public Vector3 A;
    public Vector3 B;
    float sonuc;
    private void Start()
    {
        sonuc = Vector3.Distance(A, B);
        print(sonuc);
    }

Etiketler
unity oyun c# animasyon 
İlgili Makaleler
Bilgisayarlı Tasarım Uygulamaları Dersi İkinci Dönem Birinci Yazılı Çalışma Soruları
Unity Programında Button Yardımıyla Sahneler Arasında Geçiş Yapma İşlemleri
Unity Programında Mouse Hareketlerine Göre Kamera Açısını Ayarlama
Unity Programında Sprite İle 2D Animasyon Yapmak
Unity Programında Bir Nesneyi Kodlarla Döndürme İşlemi
Unity Programında Material Kullanımı
Unity Programında Puzzle Oyunu Nasıl Yapılır
Unity Programında Input Get Axis Komutu
Bilgisayarlı Tasarım Uygulamaları Dersi İkinci Dönem İkinci Yazılı Çalışma Soruları
Unity Programında Prefabs Nesnelerini Kodla Çoğaltma
Unity Programında Basit Login Yapımı
Unity Programında Kodlarla Sahneye Nesne Ekleme
Unity Projesinde Sql Server Veri Tabanına Bağlanma
Unity Programında Input GetKey Komutu
Unity Programında Topu Hareket Ettirme Oyunu Kamera Takibini Gerçekleştiriyoruz
İki Sayıyı Toplayan İşlemi Unity Programında Kodlayarak Yapınız
Unity Programında Script Editörünü Ayarlama
Terrain Nedir? Ne İşe Yarar?
Unity Programında Topu Hareket Ettirme Oyunu Oyuna Yeniden Başlama Butonunu Kodlayıp Bitiriyoruz
Unity Programında Inspector Ve Console Paneli

Yorum Ekle
   
Kötü İyi