Düşman Slime İçin Yapay Zeka Nasıl Oluşturulur | hyperPad Documentation

Loading...

Logo
DocumentationEğitimlerDüşman Slime İçin Yapay Zeka Nasıl Oluşturulur

IMG_0139.TRIM.GIF

Not: Bu öğretici için tamamlanmış bir proje dosyasına bu belgenin sonunda ulaşabilirsiniz.

Giriş

Bu öğreticide, bir platform tarzı oyun için ikna edici bir düşman slime'ın yapay zekasını (YZ) oluşturacağız. hyperPad'deki daha ileri düzey özellikler ve davranışlar ile çalışacağız, bu nedenle bu öğretici, hyperPad editörü ile ilgili temel bir bilgiye sahip olduğunuzu varsayıyor. Sıfırdan bir oyun yapma konusunda daha fazla bilgi edinmeniz gerektiğini düşünüyorsanız, önce Tam Kılavuz - Platform Oyunu Oluşturma öğreticisini inceleyebilirsiniz.

Slime'ın "zeka" olarak görünmesi için, sadece ileri geri hareket etmenin ötesinde bir şey yapması ve çevresinde bir şekilde farkındalık göstermesi gerekir.

Heyecan verici görünüyor! Ama başlamadan önce, düşman slime'ın nasıl davranması gerektiğini detaylandıralım:

  • Yürümek yerine, slime sola veya sağa zıplayacak.
  • Slime, oyuncunun yönüne zıplayacak.
  • Eğer oyuncu çok uzaktaysa, slime hareket etmeyecek (boşta).
  • Slime, temas halinde oyuncunun sağlığını alacak.
  • Oyuncu slime'ın üstüne zıplarsa, slime yenilmiş olacaktır.

Şimdi ne yapmak istediğimizi biliyoruz, başlayalım!

Bölüm 1: Proje Kurulumu

Bu öğreticide her şeyi basit tutmak için sıfırdan yeni bir proje başlatacağız. Yeni bir proje oluşturup "Yan Görünüm" olarak ayarlayın, diğer ayarları varsayılan değerleriyle bırakabilirsiniz.

Yeni projeniz oluşturduktan sonra, Varlık Kütüphanesi'ne gidin ve varlık dükkanında hyperPad tarafından sağlanan "Platformer Başlangıç Paketi"ni alabilirsiniz. (Ücretsiz!)

a7JUWwiO.jpg

Photo_2019-06-26__1_15_13_PM.png

Artık çalışacak bazı varlıklarımız olduğuna göre, birkaç zemin bloğu yerleştirin ve dünyanızı oluşturun. Henüz gitmediyseniz, Varlık Kütüphanesi'ne gidin ve "İndirmeler" üzerinde tıklayın, ardından "Platformer Başlangıç Paketi"ni seçin.

Aşağıdaki resimde bazı zemin blokları ("Çim Dünya" klasörü) yerleştirildi ve bir arka plan ("Arka planlar" klasörü) ayarlandı.

Photo_2019-06-26__1_16_22_PM.png

Artık çalışacak güzel bir sahnemiz var, şimdi Oyuncu ve Slime nesnelerini ekleyelim. Varlık Kütüphanesi'ne gidin ve "İndirmeler" klasörünüzü açın, ardından "Platformer Başlangıç Kiti" klasörünü açın.

"Yeşil Uzaylı"yı oyuncu olarak kullanacağız, bu yüzden yeşil uzaylı nesnesine dokunun ve animasyon döngülerinin tümünü görmek için tıklayın. Varsayılan olarak, oyuncunun yalnızca durmasını istiyoruz, bu nedenle "Dur" animasyonuna dokunun ve sahneye yerleştirin.

Aynı klasörde ayrıca "Pembe Slime" animasyonlu karakteri de var. Bunu slime düşmanı olarak kullanmak için mükemmel! Slime varlığına dokunun ve "Hareket" animasyonunu seçin ve oyuncu karakterinizle bir slime'ı sahneye yerleştirin.

Photo_2019-06-26__1_17_03_PM.png

Şu ana kadar her şey yolunda! Artık oyuncu nesnemiz ve slime nesnemiz var, kullanıma hazır. Ama projemizi şimdi alırsak, oyunda hiçbir etkileşim gerçekleştiremeziz. Bu nedenle, oyunumuzu canlandırmak için bazı mantıklar oluşturmamız gerekecek.

Bölüm 2: Oyuncu Kontrolleri

Slime düşmanımıza hayat vermeye başlamadan önce, yeşil uzaylı için bazı oyuncu kontrollerine sahip olmalıyız.

Yeşil uzaylıya dokunun ve fizik modunu Duvar'dan Fizik'e ayarlayın, bu oyuncunun serbestçe hareket etmesini sağlayacaktır. Ardından, "Davranışlar" düğmesine dokunarak oyuncu karakterimiz için Davranış editörünü açalım ve bazı kontroller ekleyelim.

IMG_0054.JPG

Oyuncu karakterimizin davranış editöründe yalnızca yalnız bir Animasyonu Oynat davranışını görmelisiniz. Bu davranışı olduğu gibi bırakabiliriz, ancak ona bazı arkadaşlar edinebiliriz.

Etkileşim bölümünde, istediğiniz bir yere bir Joystick ile Kontrol davranışı ve bir Buton ile Zıpla davranışı yerleştirin. Bu davranışlarla, oyuncumuz artık kontrol edilmeye hazır. Ama, biraz animasyona ihtiyacı var.

Joystick ile Kontrol davranışına dokunun ve "Joystick Solda Animasyonu"nu Yeşil Uzaylı varlığındaki "Yürü" animasyon döngüsüne ayarlayın. Aynı şeyi "Joystick Sağda Animasyonu" için de yapın.

Photo_2019-06-26__1_18_28_PM.png

Artık oyuncu karakterimiz yürüyebiliyor ancak zıplayınca hala animasyon yapmıyor.

Buton ile Zıpla davranışına dokunun ve "Düşme Animasyonu" ile "Zıplama Animasyonu"nu "Zıpla" animasyon döngüsüne değiştirin.

Photo_2019-06-26__1_18_56_PM.png

Şu anda oyunumuzu oynatırsak, hareket edebiliriz ve etrafta zıplayabiliriz! Sıradaki, slime düşmanımıza hangi mantığı ekleyeceğimizdir.

Photo_2019-06-26__1_19_50_PM.png

Bölüm 3: Slime Hareketi

Bu öğreticinin giriş bölümünde detaylandırdığımız gibi, slime'ımızın oyuncunun yanına zıplamasını istiyoruz. Bunu yapmak için, slime'ın dünyada oyuncunun nerede olduğunu bilmesi gerekiyor. Bu nedenle, oyuncu karakterimize bir Etiket eklemeliyiz, böylece davranışlarımız herhangi bir sahnede oyuncu karakterimizi alabilir.

Oyuncu karakterimize dokunun ve özellikler görünümünün altındaki Etiketler sekmesini seçin. Etiketler menüsünün üst kısmındaki metin alanına "Oyuncu" yazın ve yanındaki ekle (+) butonuna basın. Artık oyuncu karakterimiz "Oyuncu" etiketiyle etiketlenmiştir.

Photo_2019-06-26__1_23_06_PM.png

Oyuncu karakterimizle yaptığımız gibi, slime'a da dokunun ve fizik modunu Duvar'dan Fizik'e ayarlayın. Ardından, Davranışlar düğmesine tıklayarak slime'ın davranış editörünü açın.

IMG_0058.JPG

Davranış editöründe, Özel davranışlar bölümüne gidin ve editöre bir Zamanlayıcı davranışı bırakın.

Zamanlayıcı davranışına dokunun ve aralığını 2 saniye olarak ayarlayın.

Photo_2019-06-26__4_21_59_PM.png

Bu, slime'ın yapay zekası için mantığımızın başlangıcı olacak.

Buradaki fikir, her 2 saniyede bir slime'ın ne yapacağını "düşünmesi": Slime zıplamalı mı? Zıplamak isterse, hangi yöne zıplamalı?

Sonra Dönüşüm davranışları bölümüne gidin ve Konumu Al davranışını ekleyin. Buna dokunun ve hedefini daha önce oluşturduğumuz "Oyuncu" etiketine ayarlayın; özellikler görünümünün altında Etiketler sekmesine dokunun ve "Oyuncu" seçin. Artık Zamanlayıcıyı Konumu Al davranışına bağlayabilirsiniz.

Photo_2019-06-26__4_22_22_PM.png

Artık oyuncumuzun dünyadaki yerini biliyoruz! Slime'ın solunda mı yoksa sağında mı olduğunu belirlemek için slime'ın da dünyadaki yerini bilmemiz gerekiyor.

Editorınıza bir tane daha Konumu Al davranışı sürükleyin. Varsayılan olarak, davranış zaten slime'ı hedefliyor, bu yüzden başka bir şey yapmamıza gerek yok; mantık dalımızda bunu bağlayarak devam edebilirsiniz. Oyuncunun Konumu Al davranışını slime'ın Konumu Al davranışına bağlayın.

Photo_2019-06-26__4_22_40_PM.png

İsteğe Bağlı: Daha iyi anlamak için, Konumu Al davranışlarını daha iyi göstermek için yeniden adlandırdım: "Konumu Al Oyuncu" ve "Konumu Al Slime". Bu isteğe bağlıdır, ancak eğer siz de davranış isimlerini değiştirmek isterseniz, davranışa dokunarak ve özellikler görünümünün en üstündeki ismine tıklayarak bunu yapabilirsiniz.

Şu ana kadar, her 2 saniyede bir slime, oyuncu karakterinin ve kendisinin konumunu alır. Artık bu bilgimizle, slime'ın hangi yöne zıplaması gerektiğine karar verebiliriz.

Mantık sekmesinde bir Eğer davranışı bırakın ve bağlayın. Özellikler alanında, ilk değeri birinci Konumu Al davranışının ("Oyuncu" etiketi) x konumu olarak ayarlayın ve ikinci değeri ikinci Konumu Al davranışının (slime) x konumu olarak ayarlayın. Son olarak, Eğer davranışının koşulunu "Daha Küçük" (<) olarak ayarlayın.

Not: Bir nesnenin x konumu, nesnenin dünyada x eksenindeki (sol ve sağ) yerini temsil eden değerdir.

IMG_0061.JPG

Bu tümü ne anlama geliyor? Eğer davranışı, oyuncunun x konumunun slime'ın x konumundan daha küçük olup olmadığını kontrol eder. Bu doğruysa, sonraki bağlı davranış gerçekleştirilecektir. Bu, oyuncu slime'dan daha sola ise, davranış yürütmesi devam edecektir anlamına geliyor.

Pekala, şimdi slime'ın sola zıplaması için mantığı kurduk, şimdi slime'ı tam da bunu yapması için ayarlayalım!

Fizik davranışları bölümünde, Eğer davranışına bağlı bir Uygula Güç davranışını bırakın. Özelliklerinde, Gücü şöyle ayarlayın: x = -0.5, y = 1. Ardından, çarpanını oldukça büyük bir sayıya ayarlayın; 200 iyi bir rakam olacaktır.

Photo_2019-06-26__1_28_06_PM.png

Artık, slime oyuncuyu sol tarafta bulursa, yukarı doğru (y = 1 × 200) ve sol bir miktar (x = -0.5 × 200) zıplayacaktır.

Bunu deneyin! Oyunu oynayın ve her şeyin düzgün çalıştığından emin olun. Gördüğünüz şey, slime'ın 2 saniyede bir sola zıplıyor; eğer oyuncu daha sola gitmezse, bu devam edecektir. Eğer oyuncuyu slime'ın sağ tarafına götürürseniz, sekmeyi durdurur.

Photo_2019-06-26__1_28_50_PM.png

Not: Eğer slime'ınız hareket etmiyorsa, önceki adımları kontrol edin ve bir şey atladığınızdan emin olun. Davranışların düzgün bağlı olduğundan ve slime fizik modunun Fizik (hareketli) yerine Duvar (hareketsiz) olarak ayarlandığından emin olun. Ayrıca, çok yakında slime'ın bazen yanına veya tersine döneceği sorununu daha sonra düzelteceğiz.

Şimdiye kadar harika bir ilerleme kaydettiniz! Eğer slime'ınız beklediğiniz gibi zıplıyorsa, devam edecek haldeyiz. Slime'ın hareket davranışlarını tamamlayalım, ve slime'ın sağa da zıplamasını sağlayacağız.

Slime'ın davranış editöründe, Eğer davranışını kopyalayın. Yeni Eğer davranışını oluşturulan orijinal Eğer davranışın sağ tarafına sürükleyin. Bu, onu bir "Aksi Takdirde Eğer" davranışına dönüştürür.

Aynı şekilde Uygula Güç davranışını da kopyalayın ve bunu yeni Aksi Takdirde Eğer davranışına bağlayın.

Aksi Takdirde Eğer'in özelliklerinde, koşulunu "Daha Büyük" (>) olarak değiştirin. Bu, ilk Eğer'in ters etkisini sağlayacaktır. Eğer ilk Eğer davranışı doğru değilse, o zaman Aksi Takdirde Eğer'in doğru olup olmadığını kontrol eder, ve slime'ın sağda olup olmadığını kontrol eder ve Aksi Takdirde Eğer ile bağlı davranışları yürütmeye devam eder.

Artık iyi bir davranış dalganız olmalı:

Photo_2019-06-26__1_30_01_PM.png

İkinci Uygula Güç (Aksi Takdirde Eğer altında), özelliklerini değiştirin, böylece gücü x = 0.5 olacak şekilde ayarlayın; böylece slime sol tarafa zıplamak yerine sağa zıplayacaktır.

Photo_2019-06-26__1_30_05_PM.png

Projeyi oynatın ve bir kez daha deneyin! Artık slime, oyuncunun bulunduğu yönlerde zıplıyor olmalıdır. Harika!

Oyun test ederken bir şey fark etmeniz muhtemeldir; eğer slime ile çarpışırsanız, bazen yan yatırılabilir veya ters dönebilir. Slime'ın dik durmasını istiyoruz, bu yüzden bunu hemen düzeltelim.

Slime'ın davranış editöründe, Dönüşüm davranışları bölümüne gidin ve editor'a bir Dönmeyi Kilitle davranışı ekleyin. Bunu başka bir davranışa bağlamanıza gerek yok; slime yaratıldığında dönüşümünü kilitlemek, bu yüzden olduğu gibi bırakabilirsiniz. Bunu yaptıktan sonra, oyunu tekrar deneyin. Artık slime'ı yan yatırmaya çalışmakta zorlanmalısınız.

Photo_2019-06-26__1_32_26_PM.png

Belki de slime'ın animasyonunun çok hızlı oynamakta olduğunu fark ettiniz. Eğer böyle oluyorsa, slime'ın davranış editor'ünde Animasyonu Oynat davranışına dokunun ve Dakikada Kare Sayısını çok daha küçük bir sayıya değiştirin. 6 kare saniye oldukça iyi bir görünüm sağlar.

Photo_2019-06-26__1_38_22_PM.png

Güzel! Artık slime sadece güzelce hareket etmekle kalmıyor, aynı zamanda oldukça da iyi görünüyordu. Çoğunlukla, slime'ın hareket mantığı tamamlandı.

Ancak, slime'ın sadece oyuncu yakınındayken zıplamasını istediğimizde, kayıtlı bir dünya inşa ettiğimizde uzaktaki slime'ların anında oyuncunun üzerine zıplamasını isteyeceğiz. Bir sonraki bölümde, slime'ın zıplama mantığına uzak olduklarında engellemek amacıyla yeni bir koşul eklemeye bakacağız.

Bölüm 4: Slime'ın Boşta Kalması

Bu bölümde, oyuncu çok uzaktayken durma (boşta) hareketi yapmasını sağlayacak bazı slime davranışlarını uygulayacağız.

Bunu başarmak için slime ile oyuncu arasındaki mesafeyi ölçmek için bir yol bulmalıyız. Uygun bir şekilde, buna uygun davranışlar var! Hadi çalışmaya başlayalım.

Slime'ın davranış editörünü açın ve mantık bölümünden Mesafeyi Hesapla davranışını bırakın. Davranış özelliklerinde, ilk nesne zaten slime olarak belirlenmiştir. İkinci nesne için, sekmeler menüsüne gidin ve "Oyuncu" etiketini seçin.

Photo_2019-06-26__1_48_54_PM.png

Bu davranış, çalıştırıldığında slime ile oyuncu arasındaki mesafeyi metre olarak hesaplayacaktır. Bu bilgiyi kullanarak, eğer mesafe belirli bir mesafeyi aşarsa oyuncunun çok uzak olup olmadığını kontrol edebiliriz.

Yeni bir Eğer davranışı bırakın ve Mesafeyi Hesapla davranışının altına bağlayın. Eğer davranışının özelliklerinde, ilk değeri Mesafeyi Hesapla'nın çıktı değeri olarak ayarlayın. Koşulunu "Daha Küçük" olarak ayarlayın ve ikinci değeri 15 olarak ayarlayın.

Artık, slime ile oyuncu arasındaki mesafenin 15 metreden daha az olup olmadığını kontrol etme yöntemimiz var. Eğer o koşul yanlışsa, oyuncu çok uzakta ve Eğer davranışı sonraki davranışı gerçekleştirmeyecektir.

IMG_0085.JPG

Artık yeni koşulumuz hazır olduğuna göre, önceki bölümdeki Konumu Al (slime) ve eski Eğer davranışını ayırın ve yeni koşulumuz için biraz alan yaratın. Davranışları çıkarmak için davranışlar arasındaki bağlantılara basılı tutarak sökebilirsiniz.

Yeni mesafe koşulu yerine, Konumu Al (slime) davranışını Mesafeyi Hesapla'nın altına bağlayabilirsiniz, ardından yeni Eğer davranışını eski Eğer davranışının altına bağlayın. Artık bir şeyler şuna benzeyebilir:

Photo_2019-06-26__1_50_57_PM.png

Artık oldukça karmaşık görünmeye başladı, ancak fikir oldukça basit. Artık, slime'ın zıplaması gereken yönü kontrol etmeden önce, slime ile oyuncu arasındaki mesafenin 15 metre kadar az olup olmadığını ilk önce kontrol ediyoruz.

Eğer oyuncu 15 metre içerisindeyse, ileri doğru zıplamak için hangi dalı kontrol edileceğini kontrol ederiz, her zamanki gibi. Eğer oyuncu 15 metreden daha uzaktaysa, ilerlemediği ve mantığın sona erdiği durumlar olacaktır.

Oyun deneyimini deneyin! Eğer slime'a çok fazla yaklaşırsanız, slime size zıplamalıdır, ancak çok uzakta hareket etmeyi durdurmalıdır ve tekrar yakınınıza gelene kadar beklemelidir.

Slime'ımız artık oldukça tehlikeli görünmeye başlıyor, ancak hala bir oyuncuyu vurma yolu eksik. Bir sonraki bölümde, oyuncumuza bir sağlık çubuğu verecek ve oyuncuya hasar vermek için mantık ekleyeceğiz.

Bölüm 5: Oyuncuya Saldırma

Giriş bölümünde detaylandırıldığı gibi, slime'ın oyuncuyu vurmasını gerçekleştirmek için slime'ın oyuncuya çarptığında hasar vermesini sağlayacağız. Oyuncuya hasar verme yöntemini uygulamak için, önce oyuncuya biraz sağlık vermemiz gerekecek.

Ana editörde, Sahne UI katmanını seçin ve Özel Nesneler butonu ile yeni bir nesne oluşturun. "Sağlık Çubuğu"na dokunun, böylece oyuncumuz için bir sağlık çubuğu oluşturabilirsiniz.

IMG_0120.JPG

Oyun UI katmanında konumlandırırsanız, eğer dünyamızı genişletip ekranı oyuncunun etrafında döndürmeyi seçersek, ekran üzerinde sabit kalacaktır.

Sağlık çubuğu için ekranda uygun bir yer bulduktan sonra, sağlık çubuğundan sağlık kaybı gerçekleştiren bir yol eklemeye başlayabiliriz. Slime'ın davranış editörüne geri dönün ve slime'ınızın davranış editörünü tekrar açın.

Slime'ın davranışlarının boş bir yerine, Çarpma davranışını bırakın ve özelliklerinde ikinci nesneyi "Oyuncu" etiketine ayarlayın.

Photo_2019-06-26__1_38_54_PM.png

Özel davranışlar bölümünde, Mesaj Yayınla davranışını ekleyin ve bu davranışı Çarpma davranışının altına bağlayın. Mesaj Yayınla davranışının özelliklerinde, Olay Anahtarını "oyuncu vuruldu" olarak ayarlayın ve değeri -10 olarak ayarlayın.

Unutmayın: Olay anahtarları büyük/küçük harf duyarlıdır! Bu öğreticide basitlik olması açısından olayı anahtarları için küçük harfler kullanacağız. Tercihinize bağlı olarak büyük harfler kullanabilirsiniz, ancak daha sonra hangi harflerin büyük olduğunu hatırladığınızdan emin olun.

Photo_2019-06-26__1_41_06_PM.png

Artık, oyuncunun nasıl sağlık alması gerektiği konusunda bir yolumuz var. Oyuncu slime ile çarpıştığında, "oyuncu vuruldu" olayı için bir mesaj yayınlanacaktır ve -10 değeri iletilecektir. -10 değerini sağlık çubuğuna "ekleyerek" kullanacağız ve bu değer negatif olduğu için 10 sağlık kaybedecektir.

Bu mantığı sağlık çubuğuna eklemek için, şimdi bunu yapalım. Slime'ın davranış editöründen çıkın ve ana editörde Sahne UI katmanına dokunarak sağlık çubuğunu seçin. Sağlık çubuğunun davranış editörünü açın.

Sağlık çubuğunun davranış editöründe, Özel bölümünden bir Mesaj Al davranışı bırakın. Özelliklerinde Olay Anahtarını "oyuncu vuruldu" olarak ayarlayın. (Unutmayın, büyük/küçük harf duyarlıdır!)

Photo_2019-06-26__1_40_12_PM.png

Bu davranış, oyuncu slime ile her çarpıştığında "oyuncu vuruldu" mesajını yollayan dinleyicimiz olacak. Bu davranış, oyun içerisindeki "oyuncu vuruldu" mesajını algıladığında işlemi gerçekleştirecektir.

Artık sağlık çubuğuna bir Sağlık Çubuğuna Ekle davranışı ekleyin ve bunu Kullanıcı Arayüzü davranışları bölümünde Mesaj Al davranışının altına bağlayın.

Sağlık Çubuğuna Ekle özelliklerinde, Mesaj Al'dan çıkan değeri "Ekleyeceğimiz Değer" alanına sürükleyin. Bu değer, slime üzerindeki Yayılmış Mesaj davranışında ayarladığımız -10 değeridir. Bu şekilde, eğer başka düşmanlar ile farklı hasarlar eklemek istiyorsanız, yalnızca yayınladığınız değeri ne yaparsanız yapın değiştirmek zorundasınız ve sağlık çubuğu o değeri kullanacaktır!

“Dolu Olayında”nın kapalı olduğundan, “Boş Olayında”nın açık olduğundan emin olun. Bu, eğer sağlık çubuğu sıfır sağlık seviyesine ulaştığında, bir sonraki davranışı çalıştıracaktır.

IMG_0080.JPG

Oyun Sahnesi bölümünde, Yükle Kapat davranışını bırakın ve bunu Sağlık Çubuğuna Ekle davranışının altına bağlayın.

Yükle Kapat ayarlarında, seçilen katmanı oluşturmak için "Oyun Bitti" katmanını değiştirin; yeni bir proje oluşturduğunuzda otomatik olarak oluşturulur.

Photo_2019-06-26__1_42_30_PM.png

Oyununu oynatın ve deneyin! Artık slime ile temas ettiğinizde, sağlık çubuğunuzdan sağlık kaybeder. Sağlık çubuğu sıfıra ulaşırsa, oyun biter.

Photo_2019-06-26__1_42_58_PM.png

Harika! Artık oyuncuya hasar verebiliyoruz ve oyunu kaybediyoruz.

Bir şey biraz garip hissettiriyor; sağlık çubuğundan başka, oyuncunun vurulduğuna dair pek de bir geri bildirim vermiyoruz.

Bunu çözmek için, oyuncuyu ve slime'ı birbirlerinden uzağa iterek çarpışma anında birbirlerine karşı itmek, temasa geçtiklerini açık bir şekilde belirleyecektir. Ayrıca, oyuncunun slime ile çarıştığında hasar almasını hızlıca etkilemeden de önleyecektir.

Slime için davranış editörüne gidin (önce Ana katmanı seçmeniz gerekebilir) ve Fizik bölümünden bir Nesneyi İt davranışını bırakın. Daha önceki Mesaj Yayınla davranışının altına bağlayın ve özelliklerini açın; ikinci nesneyi "Oyuncu" etiketine değiştirin, Etiketler sekmesini açarak "Oyuncu"yu seçin. Güç değerini 200'e, Nesne A Çarpanını 0.25'e ve Nesne B Çarpanını 1'e değiştirin.

Photo_2019-06-26__1_45_59_PM.png

Artık oyuncu slime ile çarpıştığında, oyuncuyu uzak bir şekilde itecektir: 200'lik bir güçle (1 × 200 güç) ve slime'ı oyuncudan 50'lik bir güce (0.25 × 200 güç) itecektir.

Oyunumuza artık oldukça hoş bir hava katıyoruz! Şu anki sorunumuz, elimizde savunmasız bir slime var ve oyuncunun onu yenme yolu yok. Bir sonraki bölümde, oyuncumuza bir şekilde karşılığı olması için savaşmak üzere mantık ekleyeceğiz.

Bölüm 6: Slime'ı Yenmek

Oyuncunun slime'a zıplayarak saldırmasını sağlamak için, hasarı hesaplarken slime'ın oyuncunun (ayaklarının) altını yok saymasını sağlayarak çarpışmayı değiştirip aşalamamız gerekiyor.

Slime'ın davranış editörünü açın ve önceki bölümde oluşturduğumuz Çarpma davranışına dokunun. "Altında" seçeneğini devre dışı bırakın ve slime, oyuncunun çarpışma kutusunun altına çarptığında çarpmayı yoksayacaktır.

Photo_2019-06-26__1_54_25_PM.png

Artık, oyuncu slime'ın üstüne zıpladığında zarar almayacaktır. Bunun yerine, o durumda farklı bir mantık gerçekleştirmek istiyoruz.

Çarpma olayını seçin ve kopyalayın, yeni Çarpma davranışındaki tüm seçenekleri ters çevirin; yeni davranışta yalnızca "Altında" durumunu etkin bırakın.

Photo_2019-06-26__1_54_42_PM.png

Bu, oyuncu slime'ın üstüne zıpladığında giriş noktamız olacaktır.

Ardından, nesne davranışları bölümünden bir Nesneyi Yok Et davranışını bırakın. Varsayılan olarak slime nesnesini yok etme ayarı olmalıdır.

Photo_2019-06-26__1_54_53_PM.png

Artık oyunumuza oynadığımızda, slime üzerine zıplarsak yok edilecektir. Ama, daha önce slime ile çarpışırken olduğundan daha tatmin edici bir etki değil.

Bir önceki bölümde eğitiminde yaptığı gibi, yeni bir Nesneyi İt ekleyelim. Oyuncu zarar mantığı için eski Nesneyi İt davranışını kopyalayın ve Yok Et davranışından sonra bağlayın. Eski Nesneyi İt davranışının özellikleri aynı kalabilir.

IMG_0121.JPG

Artık oyunu oynatın ve slime'ın üstüne zıpladığınızda gece takibiyle hoş bir zıplama yapılacaktır.

IMG_0130.TRIM.GIF

Sonuç & Alıştırmalar

Ve bu kadar! Giriş bölümünde belirtilen tüm kutuları işaretlemiş olduk:

  • Yürümektense, slime sola veya sağa zıplayacak. Onay!
  • Slime oyuncunun yönünde zıplayacak. Onay!
  • Eğer oyuncu çok uzaktaysa, slime hareket etmeyecek (boşta). Onay!
  • Slime, temasında oyuncunun sağlığını alacak. Onay!
  • Oyuncu slime'ın üstüne zıplarsa, slime yok olacaktır. Onay!

Eğer bu noktaya kadar başarıyla geldiyseniz, düşmanlarınıza bazı zeka vermenin ve onların kendi başlarına düşünmesini ve karar vermesini sağlamanın sağlam bir anlayışını kazanacak olmalısınız. Harika iş çıkardın!

Ancak her zaman daha çok şey yapılabilir. Bir alıştırma yaparak, şunları denemeyi deneyebilirsiniz:

  1. Oyuncu slime'ın üstüne zıpladığında "vurulma/ölüm" slime animasyonu çalın.
  2. Slime oyuncuya saldırdığında "vurulma" oyuncu animasyonu çalın.
  3. Her seferinde slime'ın atlayacağı uzaklıkta rastgelelik ekleyin.

Bu öğretici için tamamlanmış bir proje dosyasını burada bulabilirsiniz: Öğretici Projesini İndir