1 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. 2 00:00:06,906 --> 00:00:12,056 Bu dokunmatik kontroller ana kameraya bir script(kod) eklenerek yapılacaktır. 3 00:00:12,292 --> 00:00:15,482 Sahnedeki ana kamerayı seçiniz. 4 00:00:15,529 --> 00:00:22,369 Ardından, "Add Component/New Script" butonlarına basarak kameraya yeni bir C# kodu ekliyoruz. 5 00:00:22,509 --> 00:00:25,429 Script'in adını "PinchZoom" koyuyoruz. 6 00:00:25,709 --> 00:00:29,259 Bu işlem bittikten sonra, "Create and Add" butonuna tıklayınız. 7 00:00:29,420 --> 00:00:33,790 Şimdi, Script'e çift tıklayarak düzenlemek için açabiliriz. 8 00:00:34,022 --> 00:00:39,052 Hadi sınıfın gövdesini temizleyerek kendimize temiz bir yer açalım :) 9 00:00:39,100 --> 00:00:42,410 İki parmakla yakınlaştırmanın prensibi şöyledir.. (Mobil cihazlarda) 10 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. 11 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. 12 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. 13 00:01:00,260 --> 00:01:02,740 Bu durumda UZAKLAŞTIRMA yapmalıyız. 14 00:01:02,794 --> 00:01:08,474 Benzer şekilde, parmaklar arasındaki mesafe arttıysa YAKINLAŞTIRMA yapmalıyız. 15 00:01:08,743 --> 00:01:10,863 Burada yapmamız gereken ilk şey.. 16 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ı) 17 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. 18 00:01:18,409 --> 00:01:20,229 İki değişkene ihtiyacımız var.. 19 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. 20 00:01:26,401 --> 00:01:33,211 Bu değişkenleri sırasıyla; perspectiveZoomSpeed ve orthoZoomSpeed olarak adlandıralım. 21 00:01:33,283 --> 00:01:37,533 Aynı zamanda varsayılan değerleri 0,5 olarak verelim. 22 00:01:37,771 --> 00:01:41,701 Cihazdaki dokunma girdileri Update döngüsünde zamanla tespit edildiğinden 23 00:01:41,914 --> 00:01:45,914 Genellikle en iyisi, bu girdilerle Update fonksiyonunda uğraşmaktır. 24 00:01:46,933 --> 00:01:52,453 Ancak, cihaza kesin olarak iki parmak dokunuyorsa birşey yapmak istiyoruz. 25 00:01:52,753 --> 00:01:57,603 Bunu "Input.touchCount" özelliğini kullanarak kontrol edebiliriz. 26 00:01:57,753 --> 00:02:01,143 Artık cihaza, kesin olarak iki parmağın dokunduğundan emin olduğumuzdan.. 27 00:02:01,186 --> 00:02:04,616 ..bu dokunmaları kendi değişkenlerimizde depolayabiliriz. 28 00:02:04,750 --> 00:02:09,680 Bu şekilde Input sınıfındaki özelliklere sürekli erişmek zorunda kalmayız. 29 00:02:09,874 --> 00:02:15,434 Bu dokunma girdilerine Input sınıfındaki GetTouch() fonksiyonuyla ulaşacağız. 30 00:02:15,750 --> 00:02:17,920 Sadece iki dokunma girdisi olduğundan, 31 00:02:18,123 --> 00:02:22,703 Bu girdiler dokunma girdileri dizisindeki 0. ve 1. elemanlar olmalıdır. 32 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. 33 00:02:30,753 --> 00:02:32,253 Şimdi dokunma bilgileri elimizde olduğuna göre.. 34 00:02:32,280 --> 00:02:36,100 ..bir önceki karede hangi pozisyonlarda olduklarını bilmeliyiz. 35 00:02:36,305 --> 00:02:42,245 Bunu, şu anki pozisyonlarından delta pozisyonlarını çıkararak buluruz. 36 00:02:43,127 --> 00:02:46,297 Her bir karede parmaklar arasındaki mesafeyi bulup.. 37 00:02:46,375 --> 00:02:51,335 ..bu bilgiyi kullanarak yakınlaştırma mı uzaklaştırma mı olacağını kestiririz. 38 00:02:51,522 --> 00:02:54,592 Her iki karede de parmaklar arasındaki mesafeyi bulabilmek için.. 39 00:02:54,608 --> 00:02:59,328 Bir parmağın pozisyonunu diğerininin pozisyonundan çıkararak bir vektör elde ederiz. 40 00:02:59,429 --> 00:03:03,589 Ardından, O vektörden, basitçe büyüklük değerini buluruz. 41 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. 42 00:03:10,976 --> 00:03:12,856 "Delta" terimini kullanıyoruz çünkü.. 43 00:03:12,882 --> 00:03:16,882 ..bu terim iki veri parçacığı arasındaki değişimi ifade eder. 44 00:03:17,831 --> 00:03:21,441 Her karede parmaklar arasındaki mesafeyi bulduğumuza göre.. 45 00:03:21,501 --> 00:03:24,891 Artık o mesafeler arasındaki farkları bulabiliriz. 46 00:03:25,751 --> 00:03:29,161 Bu sefer çıkarma işlemindeki sıralama önemli. 47 00:03:29,291 --> 00:03:32,731 Geçerli(şimdiki) karedeki parmaklar arasındaki mesafeden, 48 00:03:32,845 --> 00:03:35,305 bir önceki karedeki mesafeleri çıkarırız. 49 00:03:35,426 --> 00:03:42,526 Geçerli karedeki mesafe bir önceki karedeki mesafeden büyükse negatif bir sonuç verir. 50 00:03:42,554 --> 00:03:45,534 Bu da, parmaklar birbirinden uzaklaşıyor demektir. 51 00:03:45,623 --> 00:03:49,453 Eğer parmaklar birbirinden uzaklaşıyorsa, yakınlaşma yapmamız gerekir. 52 00:03:49,514 --> 00:03:54,214 FieldOfView (Perspektif kamera için) , OrtographicSize (Ortographic kamera için) azaltırız. 53 00:03:54,781 --> 00:04:00,731 Bu koşullarda ya FieldOfView ya da OrtographicSize özelliklerini küçültmek istediğimiz için.. 54 00:04:00,731 --> 00:04:04,731 ..iki değeri birbirinden çıkarmanın doğru yolu budur. 55 00:04:05,001 --> 00:04:08,461 Kameranın özelliklerini değiştirmeden önce, 56 00:04:08,580 --> 00:04:12,580 Kamera Orthographic Mod'da mı yoksa Perspective Mod'da mı bilmemiz gerekiyor. 57 00:04:13,492 --> 00:04:17,492 Eğer Orthographic Mod'da ise kameranın orthographicSize değerini.. 58 00:04:17,492 --> 00:04:23,202 ..mesafedeki değişim ile orthographic yakınlaşma hızını çarparak ayarlayabiliriz. 59 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. 60 00:04:30,129 --> 00:04:33,169 Eğer düşerse, görüntü ters döner. (isterseniz deneyin :)) 61 00:04:33,288 --> 00:04:34,798 Bunu önlemek için.. 62 00:04:34,950 --> 00:04:38,950 Mathf sınıfından Max isimli fonksiyon arkadaşımızı kullanacağız. 63 00:04:39,023 --> 00:04:43,023 Bu fonksiyon kendisine verilen en büyük parametreyi döndürür. 64 00:04:43,680 --> 00:04:48,540 Kameranın orthograpicSize değerini ve 0,1 değerini vereceğiz. 65 00:04:48,983 --> 00:04:52,443 Bu şekilde eğer kamera büyüklüğü 0,1 değerinin altına düşerse.. 66 00:04:52,455 --> 00:04:54,865 ..tekrar 0,1 değerine çekebiliriz. 67 00:04:56,467 --> 00:04:59,597 Şimdi, kamera ortografik modda değilse.. 68 00:04:59,651 --> 00:05:01,881 ..perspektif modda olduğunu biliriz :) 69 00:05:01,940 --> 00:05:05,350 bu durumda FieldOfView değerini değiştirmeliyiz. 70 00:05:05,361 --> 00:05:12,261 FieldOfView değerini aynı miktarda ama perspectiveZoomSpeed kullanarak ayarlarız. 71 00:05:12,916 --> 00:05:15,726 Tabi yine kameranın görüş alanını sınırlamak istiyoruz. 72 00:05:15,798 --> 00:05:16,398 Ancak, 73 00:05:16,508 --> 00:05:19,028 Görüş alanını bir açı değeri olduğundan, 74 00:05:19,056 --> 00:05:22,296 0 ile 180 değerleri arasına çekmeliyiz. 75 00:05:23,155 --> 00:05:27,265 Bunu Mathf sınıfından Clamp fonksiyonunu kullanarak yaparız. 76 00:05:28,066 --> 00:05:30,066 Bu fonksiyon 3 değer alır. 77 00:05:30,095 --> 00:05:32,255 Bir = sınırlamak istediğiniz değer, 78 00:05:32,283 --> 00:05:34,943 iki = alabileceği en küçük değer, 79 00:05:34,993 --> 00:05:37,763 üç = alabileceği en büyük değer. 80 00:05:38,768 --> 00:05:41,788 Bizim sınırlandırmak istediğimiz değer, kameranın görüş alanı 81 00:05:41,814 --> 00:05:46,894 0,1 ile 179,9 değerleri arasında olmasını istiyoruz. 82 00:05:48,053 --> 00:05:50,543 Kendi yakınlaştırma/uzaklaştırma sisteminizi yaparken, 83 00:05:50,551 --> 00:05:56,451 kendinize uygun bir fieldOfView ve ortographicSize değeri seçebilirsiniz. 84 00:05:56,451 --> 00:05:59,601 Bu kodda gösterilen limit değerlerini kullanıyoruz.. 85 00:05:59,676 --> 00:06:03,216 ..çünkü uç koşullarda kabul edilebilir sonuçlar veriyor. 86 00:06:03,365 --> 00:06:07,715 Bu kodumuzun sonuydu. Şimdi sıra test etmeye geldi :) 87 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. 88 00:06:12,451 --> 00:06:16,451 Cihazı nasıl ayarlayacağınızı bilmiyorsanız, cihazın dökümantasyonuna bakın. 89 00:06:16,490 --> 00:06:18,030 (Google da "unity android/ios device configuration" diye aratın) 90 00:06:18,056 --> 00:06:22,056 artık , File/Bulid Settings 'e tıklayarak projeyi build edebiliriz. 91 00:06:22,082 --> 00:06:24,872 üzerinde çalıştığımız sahneyi build'e eklemeliyiz. 92 00:06:25,445 --> 00:06:29,445 Eğer hala sahneyi kaydetmediyseniz şimdi kaydedin. 93 00:06:29,603 --> 00:06:32,293 Ardından Build And Run butonuna tıklayın. 94 00:06:32,652 --> 00:06:36,662 Gördüğünüz gibi parmaklarımızı birbirlerine doğru yaklaştırdığımızda.. 95 00:06:36,692 --> 00:06:37,551 ..kamera uzaklaşıyor. 96 00:06:37,581 --> 00:06:40,721 Parmaklarımız birbirlerinden uzaklaştığında, kamera yaklaşıyor.