< Return to Video

Mobil Cihazlarda Yakınlaştırma ve Uzaklaştırma - Resmi Unity Dersleri

  • 0:00 - 0:06
    Bu bölümde; mobil cihazlarda iki parmakla yakınlaştırma/uzaklaştırma gibi standart dokunmatik kontrollerin üzerinden geçeceğiz.
  • 0:07 - 0:12
    Bu dokunmatik kontroller ana kameraya bir script(kod) eklenerek yapılacaktır.
  • 0:12 - 0:15
    Sahnedeki ana kamerayı seçiniz.
  • 0:16 - 0:22
    Ardından,
    "Add Component/New Script" butonlarına basarak kameraya yeni bir C# kodu ekliyoruz.
  • 0:23 - 0:25
    Script'in adını "PinchZoom" koyuyoruz.
  • 0:26 - 0:29
    Bu işlem bittikten sonra,
    "Create and Add" butonuna tıklayınız.
  • 0:29 - 0:34
    Şimdi,
    Script'e çift tıklayarak düzenlemek için açabiliriz.
  • 0:34 - 0:39
    Hadi sınıfın gövdesini temizleyerek kendimize temiz bir yer açalım :)
  • 0:39 - 0:42
    İki parmakla yakınlaştırmanın prensibi şöyledir..
    (Mobil cihazlarda)
  • 0:43 - 0:47
    Öncelikle: iki parmağın da KESİN OLARAK mobil cihazla
    temas halinde olduğundan emin olmalıyız.
  • 0:47 - 0:54
    Ardından, ekrana temas halindeki iki parmağın
    dokunma anındaki karede ve bir önceki karede aralarındaki mesafeyi bilmeliyiz.
  • 0:55 - 1:00
    Eğer ekrana dokunan parmaklar arasındaki mesafe küçüldüyse parmaklar birbirine yaklaşmıştır.
  • 1:00 - 1:03
    Bu durumda UZAKLAŞTIRMA yapmalıyız.
  • 1:03 - 1:08
    Benzer şekilde, parmaklar arasındaki mesafe arttıysa YAKINLAŞTIRMA yapmalıyız.
  • 1:09 - 1:11
    Burada yapmamız gereken ilk şey..
  • 1:11 - 1:14
    Birkaç public float değişken yazmaktır.
    (public = heryerden erişime açık)
    (float = küsüratlı sayı)
  • 1:14 - 1:18
    Bu değişkenler yakınlaştırma/uzaklaştırma esnasındaki hızı ayarlamamızı sağlayacak.
  • 1:18 - 1:20
    İki değişkene ihtiyacımız var..
  • 1:20 - 1:26
    ..bu şekilde hem Perspective hem Orthographic kameraların hızlarını birbirinden bağımsız olarak ayarlayabiliriz.
  • 1:26 - 1:33
    Bu değişkenleri sırasıyla;
    perspectiveZoomSpeed ve orthoZoomSpeed olarak adlandıralım.
  • 1:33 - 1:38
    Aynı zamanda varsayılan değerleri 0,5 olarak verelim.
  • 1:38 - 1:42
    Cihazdaki dokunma girdileri Update döngüsünde zamanla tespit edildiğinden
  • 1:42 - 1:46
    Genellikle en iyisi,
    bu girdilerle Update fonksiyonunda uğraşmaktır.
  • 1:47 - 1:52
    Ancak, cihaza kesin olarak iki parmak dokunuyorsa birşey yapmak istiyoruz.
  • 1:53 - 1:58
    Bunu "Input.touchCount" özelliğini kullanarak kontrol edebiliriz.
  • 1:58 - 2:01
    Artık cihaza, kesin olarak iki parmağın dokunduğundan emin olduğumuzdan..
  • 2:01 - 2:05
    ..bu dokunmaları kendi değişkenlerimizde depolayabiliriz.
  • 2:05 - 2:10
    Bu şekilde Input sınıfındaki özelliklere sürekli erişmek zorunda kalmayız.
  • 2:10 - 2:15
    Bu dokunma girdilerine Input sınıfındaki GetTouch() fonksiyonuyla ulaşacağız.
  • 2:16 - 2:18
    Sadece iki dokunma girdisi olduğundan,
  • 2:18 - 2:23
    Bu girdiler dokunma girdileri dizisindeki 0. ve 1. elemanlar olmalıdır.
  • 2:23 - 2:31
    Bu dokunmaların birer kopyalarını almak için GetTouch() fonksiyonuna 0 ve 1 değerlerini verebiliriz.
  • 2:31 - 2:32
    Şimdi dokunma bilgileri elimizde olduğuna göre..
  • 2:32 - 2:36
    ..bir önceki karede hangi pozisyonlarda olduklarını bilmeliyiz.
  • 2:36 - 2:42
    Bunu,
    şu anki pozisyonlarından delta pozisyonlarını çıkararak buluruz.
  • 2:43 - 2:46
    Her bir karede parmaklar arasındaki mesafeyi bulup..
  • 2:46 - 2:51
    ..bu bilgiyi kullanarak yakınlaştırma mı uzaklaştırma mı olacağını kestiririz.
  • 2:52 - 2:55
    Her iki karede de parmaklar arasındaki mesafeyi bulabilmek için..
  • 2:55 - 2:59
    Bir parmağın pozisyonunu diğerininin pozisyonundan çıkararak bir vektör elde ederiz.
  • 2:59 - 3:04
    Ardından,
    O vektörden, basitçe büyüklük değerini buluruz.
  • 3:04 - 3:10
    Bunu bir adımda, parantez içinde vektörleri birbirinden çıkarıp,
    nokta(.) operatörünü kullanarak yaparız.
  • 3:11 - 3:13
    "Delta" terimini kullanıyoruz çünkü..
  • 3:13 - 3:17
    ..bu terim iki veri parçacığı arasındaki değişimi ifade eder.
  • 3:18 - 3:21
    Her karede parmaklar arasındaki mesafeyi bulduğumuza göre..
  • 3:22 - 3:25
    Artık o mesafeler arasındaki farkları bulabiliriz.
  • 3:26 - 3:29
    Bu sefer çıkarma işlemindeki sıralama önemli.
  • 3:29 - 3:33

    Geçerli(şimdiki) karedeki parmaklar arasındaki mesafeden,
  • 3:33 - 3:35
    bir önceki karedeki mesafeleri çıkarırız.
  • 3:35 - 3:43
    Geçerli karedeki mesafe bir önceki karedeki mesafeden büyükse
    negatif bir sonuç verir.
  • 3:43 - 3:46
    Bu da, parmaklar birbirinden uzaklaşıyor demektir.
  • 3:46 - 3:49
    Eğer parmaklar birbirinden uzaklaşıyorsa, yakınlaşma yapmamız gerekir.
  • 3:50 - 3:54
    FieldOfView (Perspektif kamera için) ,
    OrtographicSize (Ortographic kamera için) azaltırız.
  • 3:55 - 4:01
    Bu koşullarda ya FieldOfView ya da OrtographicSize özelliklerini küçültmek istediğimiz için..
  • 4:01 - 4:05
    ..iki değeri birbirinden çıkarmanın doğru yolu budur.
  • 4:05 - 4:08
    Kameranın özelliklerini değiştirmeden önce,
  • 4:09 - 4:13
    Kamera Orthographic Mod'da mı yoksa Perspective Mod'da mı bilmemiz gerekiyor.
  • 4:13 - 4:17
    Eğer Orthographic Mod'da ise kameranın orthographicSize değerini..
  • 4:17 - 4:23
    ..mesafedeki değişim ile orthographic yakınlaşma hızını çarparak ayarlayabiliriz.
  • 4:25 - 4:30
    Aynı zamanda, kameramızın orthographicSize değerinin sıfırın altına düşmediğinden emin olmalıyız.
  • 4:30 - 4:33
    Eğer düşerse, görüntü ters döner.
    (isterseniz deneyin :))
  • 4:33 - 4:35
    Bunu önlemek için..
  • 4:35 - 4:39
    Mathf sınıfından Max isimli fonksiyon arkadaşımızı kullanacağız.
  • 4:39 - 4:43
    Bu fonksiyon kendisine verilen en büyük parametreyi döndürür.
  • 4:44 - 4:49
    Kameranın orthograpicSize değerini ve 0,1 değerini vereceğiz.
  • 4:49 - 4:52
    Bu şekilde eğer kamera büyüklüğü 0,1 değerinin altına düşerse..
  • 4:52 - 4:55
    ..tekrar 0,1 değerine çekebiliriz.
  • 4:56 - 5:00
    Şimdi, kamera ortografik modda değilse..
  • 5:00 - 5:02
    ..perspektif modda olduğunu biliriz :)
  • 5:02 - 5:05
    bu durumda FieldOfView değerini değiştirmeliyiz.
  • 5:05 - 5:12
    FieldOfView değerini aynı miktarda ama perspectiveZoomSpeed kullanarak ayarlarız.
  • 5:13 - 5:16
    Tabi yine kameranın görüş alanını sınırlamak istiyoruz.
  • 5:16 - 5:16
    Ancak,
  • 5:17 - 5:19
    Görüş alanını bir açı değeri olduğundan,
  • 5:19 - 5:22
    0 ile 180 değerleri arasına çekmeliyiz.
  • 5:23 - 5:27
    Bunu Mathf sınıfından Clamp fonksiyonunu kullanarak yaparız.
  • 5:28 - 5:30
    Bu fonksiyon 3 değer alır.
  • 5:30 - 5:32
    Bir = sınırlamak istediğiniz değer,
  • 5:32 - 5:35
    iki = alabileceği en küçük değer,
  • 5:35 - 5:38
    üç = alabileceği en büyük değer.
  • 5:39 - 5:42
    Bizim sınırlandırmak istediğimiz değer,
    kameranın görüş alanı
  • 5:42 - 5:47
    0,1 ile 179,9 değerleri arasında olmasını istiyoruz.
  • 5:48 - 5:51
    Kendi yakınlaştırma/uzaklaştırma sisteminizi yaparken,
  • 5:51 - 5:56
    kendinize uygun bir fieldOfView ve ortographicSize değeri seçebilirsiniz.
  • 5:56 - 6:00
    Bu kodda gösterilen limit değerlerini kullanıyoruz..
  • 6:00 - 6:03
    ..çünkü uç koşullarda kabul edilebilir sonuçlar veriyor.
  • 6:03 - 6:08
    Bu kodumuzun sonuydu. Şimdi sıra test etmeye geldi :)
  • 6:08 - 6:12
    Bu noktada,
    cihazınızın hazır olduğunu ve test için ayarlanmış olduğunu varsayıyoruz.
  • 6:12 - 6:16
    Cihazı nasıl ayarlayacağınızı bilmiyorsanız, cihazın dökümantasyonuna bakın.
  • 6:16 - 6:18
    (Google da "unity android/ios device configuration" diye aratın)
  • 6:18 - 6:22
    artık , File/Bulid Settings 'e tıklayarak projeyi build edebiliriz.
  • 6:22 - 6:25
    üzerinde çalıştığımız sahneyi build'e eklemeliyiz.
  • 6:25 - 6:29
    Eğer hala sahneyi kaydetmediyseniz şimdi kaydedin.
  • 6:30 - 6:32
    Ardından Build And Run butonuna tıklayın.
  • 6:33 - 6:37
    Gördüğünüz gibi parmaklarımızı birbirlerine doğru yaklaştırdığımızda..
  • 6:37 - 6:38
    ..kamera uzaklaşıyor.
  • 6:38 - 6:41
    Parmaklarımız birbirlerinden uzaklaştığında, kamera yaklaşıyor.
Title:
Mobil Cihazlarda Yakınlaştırma ve Uzaklaştırma - Resmi Unity Dersleri
Description:

Bu videoda, mobil cihazların multi-touch özelliğini kullanarak basit bir yakınlaştırma uzaklaştırma mekaniği yapmayı öğreneceksiniz.

more » « less
Video Language:
English
Duration:
06:41

Turkish subtitles

Revisions