‫Fruit ninja'nın kullanıcı arayüzüne bakarsak, bir kuyumuz, bir skorumuz, bir en iyi skorumuz ve ardından çalışan bir zamanlayıcımız
‫olduğunu görebiliriz.
‫Ve tabii ki bizim de oyunumuza eklememiz gereken şey bu.
‫Bu yüzden önce yeni bir nesne oluşturalım ve ona game manager adını verelim.
‫Ve buraya bir komut dosyası ekliyoruz.
‫Yeni bir komut dosyası oluşturalım ve bunu çağıralım ve bu oyun yöneticisine yeni bir komut dosyası atayalım.
‫Şimdi scripts klasörümüzde yeni bir betik oluşturalım ve bu betiği oyun yöneticisi olarak adlandıralım.
‫Şimdi oyun yöneticisini oyun yöneticisi betiğimize sürükleyelim.
‫Şimdi oyun yöneticisi betiğini oyun yöneticimize yönlendirelim ve onu düzenleyelim.
‫Oyun yöneticimizin şimdilik yapacağı şey skoru saymak olacak.
‫Bunun için bir yöntem ve birkaç değişken oluşturalım.
‫Öncelikle, kendisine puan değeri atanacak bir tamsayıya ve ardından bir metin nesnesine
‫ihtiyacımız olacak.
‫Ve metinle çalışmak için unity motor başlatma kullanıcı arayüzünü eklememiz gerekiyor.
‫Yani isim alanı, unity motoru, kullanıcı arayüzü.
‫Şimdi metne, class'a, public text'e erişebiliriz ve bu score text'i çağıracağız ve basitçe puanımızı artıracak
‫bir yöntem oluşturalım.
‫Yani public void, puanı artır ve şimdi birisi bu yöntemi ya da herhangi bir sınıf bu yöntemi her çağırdığında
‫puanı diyelim ki iki artıralım.
‫Yani iki artırın.
‫Ve sonra da skor metnini ayarlamak istiyoruz.
‫Dolayısıyla, puan her arttığında, elbette metin değişkenini de güncellemek istiyoruz.
‫Öyleyse sayı diziye.
‫Pekala, şimdi bu komut dosyasını kaydedelim ve Unity'ye geri dönelim.
‫Yeni bir nesne oluşturacağız ve buna UI adını vereceğim.
‫Öyleyse oyun nesnesinin adını değiştirelim.
‫Buna kullanıcı arayüzü diyelim.
‫Şimdi buraya tuvali oluşturacak bir UI metni ekleyelim ve tuvali UI oyun nesnesine sürükleyeceğim.
‫Burada kullanmak istediğim şey, tuval skalerimizin sabit bir piksel boyutuna sahip olmaması, ancak ekran
‫boyutuyla ölçeklenmesidir.
‫Ve çözünürlüğü, örneğin 800 çarpı 800 veya 19, 20 çarpı 1080, ne isterseniz ona ayarlayabiliriz.
‫Bu yüzden şimdilik sadece metni koyacağız.
‫Şimdi bunun şu anda nasıl göründüğüne bir bakalım ve metni bile görmüyoruz, bu yüzden bunu yönetelim.
‫Tuvalimize gidelim.
‫İşte buradasın.
‫Ve metnimizin şu anda oyunumuzun içinde bile olmadığını görüyorsunuz.
‫Bakalım, UI elemanımız sıfırlanmış olmalı ve şimdi metnimizin konumunu değiştirebiliriz.
‫Puan metnimin kullanıcı arayüzümün sol üst tarafında olmasını istiyorum.
‫Şimdi biraz yakınlaştıralım ve dikdörtgen dönüşümünü sol üst olarak değiştirelim.
‫Bu, çapa ön ayarı olacaktır.
‫Yani bu perspektiften bakıldığında X ve Y değerleri hesaplanır.
‫O zaman sıfır sıfır seçelim.
‫Metnimizin şu anda sol üst köşede olduğunu görebilirsiniz.
‫Şimdi, iyi değerler örneğin 100 ve -75 olabilir.
‫Ve belki metnimizin boyutunu da değiştirelim.
‫Bu da skor metni olacak.
‫Bu yüzden buraya sıfır gibi bir değer girelim ve adını değiştirelim.
‫Bu yüzden buna skor metni diyeceğim.
‫Şimdi, elbette, yazı tipi boyutu biraz küçük, bu yüzden bunu değiştirelim.
‫Diyelim ki 120 olsun.
‫Ve şimdi görebileceğiniz gibi, kayboluyor.
‫Yani artık numarayı göremiyoruz.
‫Bu da taşma ile ilgili.
‫Dolayısıyla, yatay ve dikey taşma eklerseniz, bu ne olursa olsun sayıyı gösterecektir.
‫Şimdi, buradaki boyut ne olursa olsun, örneğin, bu nesne için genişlik ve yükseklik.
‫Yani şu anda böyle görünecek.
‫Belki de bununla oynamak için mükemmel bir pozisyon değildir.
‫Belki o zaman oraya sürükleyelim.
‫Yani sıfırın geniş konumu, bence bu civarda olmalı.
‫Güzel.
‫Şimdi metnin rengini değiştirelim.
‫Turuncu ya da turuncuya yakın bir renk olsun.
‫İşte böyle.
‫Şimdi bir bakalım.
‫Sıfır var.
‫Tabii ki arka planımız artık eskisi kadar güzel görünmüyor.
‫Oyunumuzun arka planını değiştirmemiz gerekiyor.
‫Ama en azından skor metnimiz var.
‫Şimdi bu metni çoğaltalım ve buna yüksek skor metni adını verelim.
‫Şimdi de şu yüksek skor metnini değiştirelim.
‫En alta sürükleyelim ve en iyi iki nokta üst üste sıfır girelim.
‫Ve gördüğünüz gibi, bu tabii ki çok büyük.
‫O zaman bunu 36'ya indirelim.
‫Bu çok daha iyi görünüyor.
‫Yani oyunda en iyi sıfıra bak.
‫Tamam, şimdilik ana kameramızın arka planını değiştirelim.
‫Yani şimdi.
‫Bu renk, bu turuncu kahverengimsi renk ve belki bu şimdi daha iyi görünecek.
‫Sorun değil.
‫Sanırım şimdilik bu daha iyi.
‫Şimdi, numaramızın biraz daha havalı görünmesini sağlamak için yapabileceğimiz şey bir taslak eklemektir, böylece
‫buradan UI'ye gidebilirsiniz.
‫Bu yüzden bileşen ekleyin, ardından kullanıcı arayüzü efektleri ekleyin ve sonra burada anahat bulacaksınız, bu da oyununuza bir anahat
‫ekleyecektir, böylece metninize veya metninize ekleyebilirsiniz ve bunu böyle yapabilirsiniz.
‫Şimdi görebileceğiniz gibi, puan metninize, yüksek puan metninize bir kenar, bir anahat kenarı oluşturabilirsiniz.
‫Burada, örneğin ana kamera parlak bir renk olacaksa beyaz olan mantıklı olacaktır, o zaman siyah olan
‫daha iyi görünecektir.
‫Örneğin bu renk gibi bir şeyse, o zaman belki de skorun bir etkisi olmalıdır.
‫Siyah renk.
‫Bence bu, yüksek puan metninin de bir tane alması gerektiğinden çok daha iyi görünüyor.
‫UI efektlerinin ana hatlarını ekleyelim.
‫Ve şimdi görebileceğiniz gibi, çok daha iyi görünüyorlar.
‫Pekala, şimdi puan metnimizi kodumuza uygulayalım.
‫Oyun yöneticimiz zaten bir skor metni beklemektedir, bu yüzden onu oraya sürükleyebiliriz ve mevcut skorumuz sıfır
‫olacaktır.
‫Örneğin bunu beşe ayarlarsak ne olacağına bir bakalım.
‫Aslında, bunu beş oyun sonuna ayarlayalım.
‫Gördüğünüz gibi, henüz hiçbir şey olmuyor.
‫Bu yüzden skor eklememiz gerekecek.
‫Yani buradaki yöntemi, meyve kodumuzdaki bu artan puan yöntemini çağırmamız gerekecek.
‫Yani ne zaman dilimlenmiş bir meyve yaratırsak, bu ek bir puan aldığımız anlamına gelir.
‫Bunu yapmak için, oyun yöneticisi türünde find
‫nesnesi ekleyelim ve puanı artıralım.
‫Böylece her meyve dilimlediğimizde puanımız artacak.
‫Tamam.
‫Şimdi test edelim.
‫Oyuna başlayalım.
‫Ve meyvelerimizi dilimleyelim.
‫Ve gördüğünüz gibi, puanımız her seferinde iki artıyor.
‫Ve belki de dilimlediğimiz meyveye göre farklı değerlere sahip olmak istiyoruz, şu anda sadece portakal dilimliyoruz,
‫ama belki başka nesneleri de dilimlemek istiyoruz.
‫O zaman farklı değerlere de sahip olmak isteriz, örneğin.
‫Şu anda buraya sadece üç tane atayalım.
‫Şimdi elbette bir hata alacağız çünkü oyun yöneticisi bu üçünün ne yapması gerektiğini bilmiyor.
‫Buraya bir int puanı ekleyelim ve şimdi puan artı iki artı eşittir demek yerine, sadece teslim
‫edilen puan kadar artıralım.
‫Yani bizim durumumuzda şimdi üç olacak.
‫Yani her koştuğumuzda ya da bir meyve dilimlediğimizde artık üç puan alacağız.
‫Eğer bu doğruysa, bunu hemen kontrol edelim.
‫Evet.
‫Bir meyve dilimleyelim.
‫Ve işte buradayız.
‫Üç puan aldık.
‫Tamam.
‫Şimdi, oyunu durduran bir işlev eklememiz gerekiyor çünkü artık oyunu sonsuza kadar oynayabiliriz ve sürekli
‫puan alacağız ve herhangi bir davranış için ceza yok.
‫Ve tabii ki, Fruit Ninja'da bunu değiştirmek istiyoruz.
‫Bu genellikle bomba ya da zamanlayıcı tarafından yapılır.
‫Yani süre dolduğunda oyun durdurulacaktır.
‫Ya da bir bombayı vurursak, zamanlayıcı da durur.
‫Öyleyse bombayı oyunumuza ekleyelim.
‫Şimdi sahne görünümüne gidelim.
‫Modeller klasörümüzü açalım.
‫Ve işte bomba elimizdeydi.
‫Pekala, şimdi bir sahne görünümüne girelim ve bombayı oyunumuza sürükleyelim.
‫Aslında, çok büyük, bu yüzden tekrar kurtulalım.
‫O halde bombayı silelim ve bomba modelimize gidelim.
‫Şimdi ölçek faktörünü 0 olarak değiştirelim. 3 ve bunu uygulayın.
‫Ve şimdi bombayı içeri çekebiliriz.
‫Ve bu boyutun çok daha iyi olduğunu düşünüyorum.
‫Şimdi buna bazı bileşenler ekleyelim.
‫Örneğin, bir fizik 2D, katı gövde ve bir fizikten DX kutusuna veya aslında daire çarpıştırıcısı.
‫İşte, bu iyi olmalı.
‫Pekala, daire çarpıştırıcı iyi uyuyor, sanırım.
‫Pekala, bir tümseğe çarptığımızda ne olmasını istiyoruz?
‫Oyunu duraklatmak ve oyun bitti ekranını ya da buna benzer bir şeyi göstermek istiyoruz.
‫O halde bombamıza bir komut dosyası ekleyelim.
‫Bu yüzden yeni bir komut dosyası ekleyeceğim ve buna bomba komut dosyası ya da aslında sadece bomba diyeceğim.
‫Şimdi bomba senaryosunu burada açalım.
‫DX yöntemine bir tetikleme girişi ekleyeceğiz.
‫Bu yüzden bombaya her vurduğumuzda, bıçağın bize isabet edip etmediğini görmek istiyoruz.
‫Yani b bıçağı çarpışma noktasına
‫eşittir.
‫Aslında, bu çarpışma değil, buradaki çarpışma çarpışma noktası bileşen ve bıçak olsun.
‫Bunun anlamı, bu kodu zaten gördük, ancak bunun anlamı, tetiklenen veya vurulan nesne
‫bizi tetiklediyse, bıçak buysa, o zaman bir şey yapın.
‫Ve eğer bıçak değilse, o zaman geri dönün.
‫Yani B değilse geri dönün, ancak B ise, o zaman oyun yöneticisi türünde bir nesne bulmak istiyoruz.
‫O zaman oyun yöneticimize erişmek ve ondan bir yöntem çağırmak istiyoruz.
‫Diyelim ki bomba isabet etti.
‫Şimdi ne zaman tümseğe vursak, bomba vuruşunda çağrılan bir yöntem olmadığından şikayet ediyor ve bu yöntemi
‫oyun yöneticimizde bulacağız veya bu yöntemi ve oyun yöneticisini oluşturmamız gerekiyor.
‫O halde bu metodu bomba isabetinde void olarak oluşturalım ve dışarıdan erişebilmemiz için public olmalıdır.
‫Tabii ki, şimdilik sadece yumru vuruldu diyelim.
‫Yani hata ayıklama günlüğü bombası patladı.
‫O zaman bu betiği kaydedelim.
‫Bomba senaryosunu da kaydedelim.
‫Şimdi hatanın artık orada olmadığını görüyoruz.
‫Şimdi bunu test edelim.
‫O zaman geri dönelim.
‫Aslında, bomba komut dosyasını eklerken komut dosyası klasörümüze sürükleyelim.
‫Şimdi oyunu çalıştıralım ve bakalım bir bomba bulmuş muyum?
‫Aslında, bomba çok hızlı hareket ediyordu, bu yüzden onu en üste iteceğim, böylece şimdilik yapabileceğim
‫şey, bombayı devre dışı bırakmak.
‫Yerçekimi.
‫Diyelim ki yerçekimi ölçeği sıfır.
‫Bakalım neler olacak.
‫Ve bombayı sürükleyebilir ya da vurabilirim.
‫Aslında, daire çarpıştırıcısında tetikleyici olmadığı için bizim tetikleyicimiz olarak elbette hiçbir şey olmayacak.
‫Şimdi ne olacağını bir kez daha görelim.
‫Gördüğünüz gibi Bob'un hit şarkısının adı Every Time that I Go Through the bomb.
‫Tamam.
‫Şimdi yerçekimi ölçeğini tekrar bir olarak değiştirebiliriz.
‫Bu sadece test amaçlıydı.
‫Ve şimdi bombamız çalışmalı.
‫Şimdi, yapmak istediğimiz şey şu.
‫Bu olduğunda oyunu durdurun.
‫Bu yüzden zaman nokta zaman ölçeğinin sıfıra eşit olduğunu söyleyebiliriz.
‫Bu sadece oyunu durdurur.
‫Yani bu kez, zaman ölçeği genel olarak oyununuzun hızını azaltmanıza olanak tanıyan bir işlevselliktir.
‫Yani sıfır, hiç hız olmadığı anlamına gelir, bu da hareket olmadığı ve oyunu durdurduğunuz anlamına gelir.
‫Ve bir tanesi de normal hıza sahip olmanızdır.
‫Yani zaman ölçeği bir varsayılan değerdir ve zaman ölçeği sıfır, örneğin oyunu durdurmak içindir.
‫Şimdi bu betiği kaydedip tekrar kontrol edelim ve bakalım bombayı yeterince hızlı patlatabilecek miyim?
‫Oyunu durdurmak için.
‫Ve gördüğünüz gibi, içinden geçtim ve bombalarım aslında meyvelerim durdu ve bomba da
‫durdu.
‫Pekala, şimdi sadece bir tümseğimiz var.
‫Yani bu tümsek iyi ama bombaların da rastgele ortaya çıkmasını istiyoruz.
‫Bunu yapmak için de sponsor oyun nesnemize geri dönmemiz gerekiyor.
‫Senaryomuz daha iyi hazırlandı.
‫Şimdi sponsor senaryosuna geçelim.
‫Ve şu anda sadece bir meyvemiz var, bu yüzden sadece bir tür meyve üretebiliriz.
‫Bu durumda, bu bir portakaldır, ancak sahip olmak istediğimiz şey portakalları ortaya çıkarabilmek, muzları ortaya çıkarabilmek, aklımıza gelen
‫her şeyi ortaya çıkarabilmek ve ayrıca bombaları ortaya çıkarabilmektir.
‫Ve bunu yapmak için, bu meyveyi bir oyun nesnesi dizisi olan bir diziye yumurtlamak için değiştirmemiz gerekir.
‫Köşeli parantezleri ekleyelim ve bunu ortaya çıkacak nesneler olarak değiştirelim, çünkü bu sadece meyveler değil, genel
‫olarak nesnelerdir.
‫Şimdi, elbette, burada bir hata alıyoruz çünkü basit bir meyve üretmeye çalışıyoruz ve bu yöntem artık
‫mevcut değil.
‫Yapmamız gereken şey, rastgele bir oyun nesnesi yaratmaktır; bu nesne ya bir tümsektir ya da başka
‫bir meyvedir.
‫Sonra da basitçe, tamam, şunu yumurtla deriz.
‫O zaman devam edelim ve bunu yapalım.
‫Bir oyun nesnesi oluşturalım, G0 diyelim ve bunu NULL olarak ayarlayalım ve sonra rastgele bir değerimiz olsun.
‫Şimdi rastgele değer aralığını oluşturalım.
‫Rastgele farklı türde meyveler veya farklı türde oyun nesneleri oluşturmak istiyoruz.
‫Örneğin, bomba başka bir şeyden daha az sıklıkta ortaya çıkmalıdır.
‫Yani burada söyleyeceğim şey, eğer P ondan küçükse, çünkü değer sıfır ile 100 arasında olabilir.
‫Yani eğer 10'dan düşükse, o zaman bir tümsek oluşturmak istiyorum.
‫Yani çarpma şansı kabaca %10 veya bir bağ çarpmasının ortaya çıkma şansıdır.
‫Bu yüzden G oh'un sıfır konumunda ortaya çıkacak nesneler olduğunu söyleyeceğim.
‫Şimdi tabii ki bununla ilgilenmem gerekecek.
‫Bu yüzden tümseği sıfır konumuna atamam gerekiyor ve aksi takdirde bir ile nesnelerin ortaya
‫çıkma uzunluğu arasında rastgele bir aralıkla ortaya çıkacak nesnelerle gitmek istiyorum.
‫Bu da %10'luk bir şans demektir.
‫Bir yumru oluşturacağım.
‫Ve %90 ihtimalle, farklı bir meyve türü yaratacağım.
‫Ve burada, elbette, küme parantezleri kullanmam gerekiyor çünkü bu, bunu atamaya çalıştığımız
‫bir dizin.
‫Yani, bir kez daha, %10 şansla, bu bir tümsektir ve %90 şansla, atadığımız diğer tüm nesneler
‫arasından rastgele bir şey ortaya çıkar.
‫Ve şimdi, elbette, artık yumurtlamak için bir meyve oluşturmuyoruz.
‫Bu oyun nesnesini örneklendiriyoruz.
‫Şimdi, elbette, doğacak meyveler dediğiniz şeyi doğurmak için bir nesne oluşturabilirsiniz.
‫Ve sonra, elbette, public game object bump diyebilir ve sonra bump'ı buraya atayabilir
‫ve şimdi altını Bob olarak değiştirebilirsiniz.
‫Bu da bir seçenek olabilir.
‫Tabii ki, aralığınız sıfırdan bir yere kadar olacaktır.
‫Bu da başka bir seçenek olabilir.
‫Belki de bu biraz daha sezgisel bir seçenektir çünkü yumru çok özel bir meyve türüdür ve başka ne eklersek ekleyelim,
‫istediğimiz gibi ekleyebiliriz.
‫Çünkü az önce size gösterdiğim diğer yöntemde, tümseği ilk noktaya atarken her zaman dikkatli
‫olmamız gerekirdi.
‫Ve bunu biliyoruz çünkü kodu biz oluşturduk.
‫Ancak başka biri kodu çalıştırmaya veya kodu düzenlemeye başlarsa, bu konuda kafası karışabilir.
‫Tamam.
‫Şimdi emin olalım, tamam, burası Bob olacak.
‫Şimdi bunu kaydedelim
‫ve Unity'ye geri dönelim.
‫Orada neler olduğunu göreceksiniz.
‫Yani sponsorumuz yumurtlamak için meyve almalı.
‫Şu anda sadece turuncu.
‫Ve birkaç saniye sonra, meyvelerin ortaya çıkmasından nesnelerin ortaya çıkmasına ve çarpmasına geçmelidir.
‫Tamam.
‫Yani tümsek ve ortaya çıkacak nesneler var.
‫Ve şu anda, ortaya çıkarmak istediğim bir nesne olacağını söyleyeceğim.
‫Şimdi prefabriklerimize gidelim ve turuncuyu buraya sürükleyelim.
‫Turuncuyu buraya yönlendir.
‫Ve şimdi bomba hakkında.
‫Aslında, henüz bir bomba prefabrikimiz yok.
‫Öyleyse bir bomba prefabriği oluşturalım.
‫Bombayı prefabs klasörümüze sürükleyelim.
‫Ve şimdi bombayı gözcümüze sürükleyelim.
‫Bunu test etmek için, belki de değeri 50'ye ayarlamalıyız, böylece ortaya çıkan bir tümsek olması
‫için 5050 şansımız olur.
‫Yani sadece tümsekler olup olmadığını ya da tümseklerin genel olarak gelip gelmediğini görmek için.
‫Tamam.
‫Yani bir tümsek var, portakallar, bombalar, portakallar, bombalar.
‫Ve eğer bir tümseğe çarparsam, evet, dışarıdan çarptım, ama tümseğe çarptım ve şimdi, boom, oyun durur.
‫Şimdi bakalım, bunu tekrar 10'a ayarlayalım.
‫Bu daha iyi.
‫Ve şimdi bir bombanın ortaya çıkma ihtimali sadece %10 olacak.
‫Tabii ki.
‫Ve gördüğünüz gibi, portakal, portakal, portakal.
‫Ve her zaman puan alıyoruz.
‫Bir noktada, bir bomba ortaya çıkabilir.
‫Şimdiye kadar kimse yoktu.
‫Aslında.
‫Hadi ama.
‫Bomba nerede?
‫Gördüğünüz gibi, şansla ilgili bir şey bu, değil mi?
‫Şans sadece şanstır.
‫Yani bir yumru almadan önce burada milyonlarca portakal alabilirim.
‫Olasılık çok düşük ve bir bomba var.
‫Mükemmel.
‫Pekala, biraz zaman aldı.
‫Gördüğünüz gibi, bir bomba almadan önce zaten 40 portakal öldürdüm, bu da %10 olduğu anlamına geliyor.
‫Şey, %10.
‫Her an olabilir.
‫Ve bu sadece neredeyse 40 ya da belki 50, hatta sanırım 50 portakaldan sonra oldu, çünkü her birine
‫vurmadım.
‫Tamam.
‫Bu yüzden, oyunu nasıl bitireceğimizi ve oyunumuza nasıl yeniden başlayacağımızı göreceğimiz bir sonraki videoya geçelim
‫derim.
‫Orada görüşürüz.