WEBVTT 00:00:00.000 --> 00:00:06.256 Bu bölümde; mobil cihazlarda iki parmakla yakınlaştırma/uzaklaştırma gibi standart dokunmatik kontrollerin üzerinden geçeceğiz. 00:00:06.906 --> 00:00:12.056 Bu dokunmatik kontroller ana kameraya bir script(kod) eklenerek yapılacaktır. 00:00:12.292 --> 00:00:15.482 Sahnedeki ana kamerayı seçiniz. 00:00:15.529 --> 00:00:22.369 Ardından, "Add Component/New Script" butonlarına basarak kameraya yeni bir C# kodu ekliyoruz. 00:00:22.509 --> 00:00:25.429 Script'in adını "PinchZoom" koyuyoruz. 00:00:25.709 --> 00:00:29.259 Bu işlem bittikten sonra, "Create and Add" butonuna tıklayınız. 00:00:29.420 --> 00:00:33.790 Şimdi, Script'e çift tıklayarak düzenlemek için açabiliriz. 00:00:34.022 --> 00:00:39.052 Hadi sınıfın gövdesini temizleyerek kendimize temiz bir yer açalım :) 00:00:39.100 --> 00:00:42.410 İki parmakla yakınlaştırmanın prensibi şöyledir.. (Mobil cihazlarda) 00:00:42.646 --> 00:00:47.267 Öncelikle: iki parmağın da KESİN OLARAK mobil cihazla temas halinde olduğundan emin olmalıyız. 00:00:47.337 --> 00:00:54.487 Ardından, ekrana temas halindeki iki parmağın dokunma anındaki karede ve bir önceki karede aralarındaki mesafeyi bilmeliyiz. 00:00:54.585 --> 00:01:00.235 Eğer ekrana dokunan parmaklar arasındaki mesafe küçüldüyse parmaklar birbirine yaklaşmıştır. 00:01:00.260 --> 00:01:02.740 Bu durumda UZAKLAŞTIRMA yapmalıyız. 00:01:02.794 --> 00:01:08.474 Benzer şekilde, parmaklar arasındaki mesafe arttıysa YAKINLAŞTIRMA yapmalıyız. 00:01:08.743 --> 00:01:10.863 Burada yapmamız gereken ilk şey.. 00:01:10.901 --> 00:01:14.191 Birkaç public float değişken yazmaktır. (public = heryerden erişime açık) (float = küsüratlı sayı) 00:01:14.251 --> 00:01:18.341 Bu değişkenler yakınlaştırma/uzaklaştırma esnasındaki hızı ayarlamamızı sağlayacak. 00:01:18.409 --> 00:01:20.229 İki değişkene ihtiyacımız var.. 00:01:20.357 --> 00:01:26.227 ..bu şekilde hem Perspective hem Orthographic kameraların hızlarını birbirinden bağımsız olarak ayarlayabiliriz. 00:01:26.401 --> 00:01:33.211 Bu değişkenleri sırasıyla; perspectiveZoomSpeed ve orthoZoomSpeed olarak adlandıralım. 00:01:33.283 --> 00:01:37.533 Aynı zamanda varsayılan değerleri 0,5 olarak verelim. 00:01:37.771 --> 00:01:41.701 Cihazdaki dokunma girdileri Update döngüsünde zamanla tespit edildiğinden 00:01:41.914 --> 00:01:45.914 Genellikle en iyisi, bu girdilerle Update fonksiyonunda uğraşmaktır. 00:01:46.933 --> 00:01:52.453 Ancak, cihaza kesin olarak iki parmak dokunuyorsa birşey yapmak istiyoruz. 00:01:52.753 --> 00:01:57.603 Bunu "Input.touchCount" özelliğini kullanarak kontrol edebiliriz. 00:01:57.753 --> 00:02:01.143 Artık cihaza, kesin olarak iki parmağın dokunduğundan emin olduğumuzdan.. 00:02:01.186 --> 00:02:04.616 ..bu dokunmaları kendi değişkenlerimizde depolayabiliriz. 00:02:04.750 --> 00:02:09.680 Bu şekilde Input sınıfındaki özelliklere sürekli erişmek zorunda kalmayız. 00:02:09.874 --> 00:02:15.434 Bu dokunma girdilerine Input sınıfındaki GetTouch() fonksiyonuyla ulaşacağız. 00:02:15.750 --> 00:02:17.920 Sadece iki dokunma girdisi olduğundan, 00:02:18.123 --> 00:02:22.703 Bu girdiler dokunma girdileri dizisindeki 0. ve 1. elemanlar olmalıdır. 00:02:22.888 --> 00:02:30.528 Bu dokunmaların birer kopyalarını almak için GetTouch() fonksiyonuna 0 ve 1 değerlerini verebiliriz. 00:02:30.753 --> 00:02:32.253 Şimdi dokunma bilgileri elimizde olduğuna göre.. 00:02:32.280 --> 00:02:36.100 ..bir önceki karede hangi pozisyonlarda olduklarını bilmeliyiz. 00:02:36.305 --> 00:02:42.245 Bunu, şu anki pozisyonlarından delta pozisyonlarını çıkararak buluruz. 00:02:43.127 --> 00:02:46.297 Her bir karede parmaklar arasındaki mesafeyi bulup.. 00:02:46.375 --> 00:02:51.335 ..bu bilgiyi kullanarak yakınlaştırma mı uzaklaştırma mı olacağını kestiririz. 00:02:51.522 --> 00:02:54.592 Her iki karede de parmaklar arasındaki mesafeyi bulabilmek için.. 00:02:54.608 --> 00:02:59.328 Bir parmağın pozisyonunu diğerininin pozisyonundan çıkararak bir vektör elde ederiz. 00:02:59.429 --> 00:03:03.589 Ardından, O vektörden, basitçe büyüklük değerini buluruz. 00:03:03.666 --> 00:03:10.396 Bunu bir adımda, parantez içinde vektörleri birbirinden çıkarıp, nokta(.) operatörünü kullanarak yaparız. 00:03:10.976 --> 00:03:12.856 "Delta" terimini kullanıyoruz çünkü.. 00:03:12.882 --> 00:03:16.882 ..bu terim iki veri parçacığı arasındaki değişimi ifade eder. 00:03:17.831 --> 00:03:21.441 Her karede parmaklar arasındaki mesafeyi bulduğumuza göre.. 00:03:21.501 --> 00:03:24.891 Artık o mesafeler arasındaki farkları bulabiliriz. 00:03:25.751 --> 00:03:29.161 Bu sefer çıkarma işlemindeki sıralama önemli. 00:03:29.291 --> 00:03:32.731 Geçerli(şimdiki) karedeki parmaklar arasındaki mesafeden, 00:03:32.845 --> 00:03:35.305 bir önceki karedeki mesafeleri çıkarırız. 00:03:35.426 --> 00:03:42.526 Geçerli karedeki mesafe bir önceki karedeki mesafeden büyükse negatif bir sonuç verir. 00:03:42.554 --> 00:03:45.534 Bu da, parmaklar birbirinden uzaklaşıyor demektir. 00:03:45.623 --> 00:03:49.453 Eğer parmaklar birbirinden uzaklaşıyorsa, yakınlaşma yapmamız gerekir. 00:03:49.514 --> 00:03:54.214 FieldOfView (Perspektif kamera için) , OrtographicSize (Ortographic kamera için) azaltırız. 00:03:54.781 --> 00:04:00.731 Bu koşullarda ya FieldOfView ya da OrtographicSize özelliklerini küçültmek istediğimiz için.. 00:04:00.731 --> 00:04:04.731 ..iki değeri birbirinden çıkarmanın doğru yolu budur. 00:04:05.001 --> 00:04:08.461 Kameranın özelliklerini değiştirmeden önce, 00:04:08.580 --> 00:04:12.580 Kamera Orthographic Mod'da mı yoksa Perspective Mod'da mı bilmemiz gerekiyor. 00:04:13.492 --> 00:04:17.492 Eğer Orthographic Mod'da ise kameranın orthographicSize değerini.. 00:04:17.492 --> 00:04:23.202 ..mesafedeki değişim ile orthographic yakınlaşma hızını çarparak ayarlayabiliriz. 00:04:24.578 --> 00:04:29.818 Aynı zamanda, kameramızın orthographicSize değerinin sıfırın altına düşmediğinden emin olmalıyız. 00:04:30.129 --> 00:04:33.169 Eğer düşerse, görüntü ters döner. (isterseniz deneyin :)) 00:04:33.288 --> 00:04:34.798 Bunu önlemek için.. 00:04:34.950 --> 00:04:38.950 Mathf sınıfından Max isimli fonksiyon arkadaşımızı kullanacağız. 00:04:39.023 --> 00:04:43.023 Bu fonksiyon kendisine verilen en büyük parametreyi döndürür. 00:04:43.680 --> 00:04:48.540 Kameranın orthograpicSize değerini ve 0,1 değerini vereceğiz. 00:04:48.983 --> 00:04:52.443 Bu şekilde eğer kamera büyüklüğü 0,1 değerinin altına düşerse.. 00:04:52.455 --> 00:04:54.865 ..tekrar 0,1 değerine çekebiliriz. 00:04:56.467 --> 00:04:59.597 Şimdi, kamera ortografik modda değilse.. 00:04:59.651 --> 00:05:01.881 ..perspektif modda olduğunu biliriz :) 00:05:01.940 --> 00:05:05.350 bu durumda FieldOfView değerini değiştirmeliyiz. 00:05:05.361 --> 00:05:12.261 FieldOfView değerini aynı miktarda ama perspectiveZoomSpeed kullanarak ayarlarız. 00:05:12.916 --> 00:05:15.726 Tabi yine kameranın görüş alanını sınırlamak istiyoruz. 00:05:15.798 --> 00:05:16.398 Ancak, 00:05:16.508 --> 00:05:19.028 Görüş alanını bir açı değeri olduğundan, 00:05:19.056 --> 00:05:22.296 0 ile 180 değerleri arasına çekmeliyiz. 00:05:23.155 --> 00:05:27.265 Bunu Mathf sınıfından Clamp fonksiyonunu kullanarak yaparız. 00:05:28.066 --> 00:05:30.066 Bu fonksiyon 3 değer alır. 00:05:30.095 --> 00:05:32.255 Bir = sınırlamak istediğiniz değer, 00:05:32.283 --> 00:05:34.943 iki = alabileceği en küçük değer, 00:05:34.993 --> 00:05:37.763 üç = alabileceği en büyük değer. 00:05:38.768 --> 00:05:41.788 Bizim sınırlandırmak istediğimiz değer, kameranın görüş alanı 00:05:41.814 --> 00:05:46.894 0,1 ile 179,9 değerleri arasında olmasını istiyoruz. 00:05:48.053 --> 00:05:50.543 Kendi yakınlaştırma/uzaklaştırma sisteminizi yaparken, 00:05:50.551 --> 00:05:56.451 kendinize uygun bir fieldOfView ve ortographicSize değeri seçebilirsiniz. 00:05:56.451 --> 00:05:59.601 Bu kodda gösterilen limit değerlerini kullanıyoruz.. 00:05:59.676 --> 00:06:03.216 ..çünkü uç koşullarda kabul edilebilir sonuçlar veriyor. 00:06:03.365 --> 00:06:07.715 Bu kodumuzun sonuydu. Şimdi sıra test etmeye geldi :) 00:06:07.801 --> 00:06:12.401 Bu noktada, cihazınızın hazır olduğunu ve test için ayarlanmış olduğunu varsayıyoruz. 00:06:12.451 --> 00:06:16.451 Cihazı nasıl ayarlayacağınızı bilmiyorsanız, cihazın dökümantasyonuna bakın. 00:06:16.490 --> 00:06:18.030 (Google da "unity android/ios device configuration" diye aratın) 00:06:18.056 --> 00:06:22.056 artık , File/Bulid Settings 'e tıklayarak projeyi build edebiliriz. 00:06:22.082 --> 00:06:24.872 üzerinde çalıştığımız sahneyi build'e eklemeliyiz. 00:06:25.445 --> 00:06:29.445 Eğer hala sahneyi kaydetmediyseniz şimdi kaydedin. 00:06:29.603 --> 00:06:32.293 Ardından Build And Run butonuna tıklayın. 00:06:32.652 --> 00:06:36.662 Gördüğünüz gibi parmaklarımızı birbirlerine doğru yaklaştırdığımızda.. 00:06:36.692 --> 00:06:37.551 ..kamera uzaklaşıyor. 00:06:37.581 --> 00:06:40.721 Parmaklarımız birbirlerinden uzaklaştığında, kamera yaklaşıyor.