Pong Oyunu Nasıl Yapılır - hyperPong

Not: Bu eğitim için tamamlanmış bir proje dosyası bu makalenin sonunda bulunabilir.
Giriş
Bu eğitimde, sıfırdan Pong benzeri bir oyun oluşturacağız. Bu eğitimde hyperPad'deki daha ileri düzey özellikler ve davranışlar üzerinde duracağız, bu nedenle bu eğitim hyperPad editörü ile ilgili temel bir bilgiye sahip olduğunuzu varsayıyor. Sıfırdan bir oyun yapma sürecini daha iyi anlamak istiyorsanız, önce Tam Kılavuz - Bir Platform Oyunu Oluşturma eğitimine göz atabilirsiniz.
Pong, yalnızca iki raket ve bir toplardan oluşan basit bir iki oyunculu oyundur ve basit bir dijital masa tenisi versiyonu olarak düşünülebilir. Her oyuncu, masanın zıt taraflarında yer alan bir raketi kontrol eder. Raketler yalnızca ileri ve geri hareket edebilir, topu karşı taraftaki oyuncuya doğru vururlar. Bir oyuncu topu kaçırırsa, diğer oyuncu bir puan kazanır. 11 puana ulaşan ilk oyuncu kazanır!
Pong oyunumuzda, 1 Oyuncu modunda (Oyuncu vs. AI), 2 Oyuncu modunda (Oyuncu vs. Oyuncu) veya 0 Oyuncu “İzleme” modunda (AI vs. AI) oynama seçeneği sunacağız.
Bölüm 1: Proje Kurulumu ve Ana Menü
Yeni bir proje oluşturarak başlayalım.
hyperPad'deki Projeler menüsünü açın ve Yeni Proje'ye dokunun. Projenize bir ad verin ve İleri'ye dokunun. Yönlendirme varsayılan olarak yatay modda bırakılabilir. Bu eğitim için, Cihaz Desteği iPad 4:3 olarak ayarlanmıştır. Bir sonraki ekranda, "Kuş Bakışı" seçeneğini seçin ve diğer ayarları varsayılan olarak bırakın.
Artık yeni bir projemiz olduğuna göre, hemen oyuna geçmeden ana menüyü kurmaya başlayalım. İlk olarak, sahnemizi "Ana Menü" olarak yeniden adlandıralım.
Proje/Sahne Menü butonuna dokunun ve "Sahne 1"'in yanındaki dişli butonuna dokunun.
Ayarlar seçeneğine dokunun ve sahnemizi "Ana Menü" olarak yeniden adlandırın. Değişiklikleri kaydetmek ve ayarlar penceresini kapatmak için Kaydet'e dokunun.
Sonraki adımda, ilk retro oyunlara sadık kalarak arka plan rengimizi siyah yapacağız.
Sahne Ayarları butonuna dokunun ve Arka Plan'ı seçin. "Renk Değiştir" butonuna dokunun ve rengi siyah (#000000FF) olarak ayarlayın.
Artık ana menümüze bir başlık etiketi ekleyelim. Özel Nesneler butonuna dokunun ve Etiket seçeneğini seçin.
Metin alanına oyununuzun adını girin (bu eğitimde "hyperPong" yazılmıştır), yazı boyutunu büyük ama çok da büyük olmayan bir değere ayarlayın. "hyperPong" başlığı için 72 pt iyi bir boyut olacaktır. Rengi beyaz (#FFFFFFFF) yapın ve menünün üst kısmında ortalayın.
Şimdi, tüm oyun modlarımız için butonlarla doldurulması gereken bir ana menü sahnesine sahibiz. Şimdilik menüyü olduğu gibi bırakacağız ve oynanabilir bir oyun elde ettikten sonra kapatacağız.
Bölüm 2: Oyun Sahnesini ve Raketleri Kurma
Proje Menüsü butonuna dokunun ve "Sahne Ekle" seçeneğine dokunun. "Oyun" adını verin ve Oluştur'a dokunun. Artık Oyun sahnesinde boş bir tuval görmelisiniz. Ana Menü sahnesinde yaptığımız gibi, tekrar Sahne Ayarları butonuna dokunun ve arka plan rengini siyah (#000000FF) olarak değiştirin.
Şimdi, oyuncu raketlerimizi oluşturma konusunda çalışmaya başlayalım. Özel Nesneler butonuna gidin ve "Boş Nesne" seçeneğini seçerek boş bir nesne oluşturun. Renklerini beyaz (#FFFFFFFF) olarak değiştirin ve opaklık kaydırıcısının tam açık olduğundan emin olun.
Bu nesneyi "Oyuncu-1" olarak yeniden adlandırın ve fizik modunu Fizik olarak ayarlayın, Geçilebilir durumunu etkin bırakın.
Geçilebilir durumunu etkin bırakmamızın nedeni, topun raketle çarpıştığında nasıl etkileşeceğini daha iyi kontrol edebilmektir. Topun hızını ve yönünü manuel olarak kontrol etme imkanına sahip olacağız.
Oyuncu-1 nesne özelliklerinde, Dönüşüm sekmesine gidin ve X ölçeğini %25 olarak ayarlayın ve oyun alanının sol tarafına yerleştirin.
Şimdi, raketin hareket etmesi için bazı kontroller ekleyelim. Raket seçiliyken, davranış editörüne gidin ve Fizik sekmesine geri dönün.
Etkileşim bölümünden bir Joystick Analog davranışını yerleştirin, üzerinde bulamazsanız Gelişmiş sekmesine dokunmanız gerekebilir. Bu, sahne editöründe otomatik olarak bir joystick oluşturacaktır.
Fakat, sadece raketin joystick hareketi ile hareket etmesine izin vermek istemiyoruz. Aynı zamanda bir AI'nin de hareket etmesini istiyoruz.
Özel bölüm altında, bir Kutu Konteyner koyun. Bu, raketin hangi yönde hareket edeceğini saklayacaktır. Bu şekilde, hem joystick ile kontrol eden bir oyuncu hem de hesaplamalar yapan bir AI bu bir değer değişimini sağlayarak hareket edebilecektir. Varsayılan değeri 0 olarak ayarlamakta iyi bir fikir. Ayrıca çalışması daha kolay olması için iyi bir ad vermek de iyi bir fikirdir, "Hareket Yönü" uygun görünüyor.
Kutu Konteyner seçiliyken, "Giriş Alanını Değiştir" butonuna basın ve Evet'e dokunun. Bu, kutu konteyner için bir Ayar Giriş Alanı davranışı oluşturacaktır, böylece gereksinim duyulduğunda değerini değiştirebiliriz. Ayar Giriş Alanını Joystick Analog ile bağlayın.
Ayar Giriş Alanı davranışı seçiliyken, Joystick Analog'dan çıkış değerini Yeni Değer alanına sürükleyin. "y" özelliğini seçin. Artık, Hareket Yönü kutu konteyneri, oyuncunun joysticki yukarı veya aşağı (y-ekseni) ne kadar hareket ettiğini takip edecektir.
Artık joystickin yukarı ya da aşağı hareketinin ne kadar gittiğini takip ediyorsak, oyuncunun joysticki bıraktığı durumda bunu sıfırlamamız gerekiyor. Aksi takdirde, raket son hatırladığı yönde hareket etmeye devam edecektir.
Etkileşim bölümünde, dokunma bırakıldığında bir Davranış durdurma davranışı ekleyin ve özelliklerini açmak için üzerine dokunun. Varsayılan olarak, oyuncunun rakete dokunmayı bıraktığında takip ediyormuş gibi görünür, ancak joystick'i takip etmemiz gerekiyor.
Nesne özelliğine dokunun ve joystick'i seçin. Seçebilmek için Küresel UI katmanını seçmeniz gerekebilir. Seçtikten sonra, onay butonuna dokunun. Davranış artık izlenen nesne olarak joystick'i göstermelidir.
Ayar Giriş Alanı'nı daha önce oluşturduğumuz şekilde çoğaltın ve Stopped Touching davranışına bağlayın ve Yeni Değer özelliğini 0 olarak ayarlayın.
Artık Hareket Yönü kutu konteyneri, joystick'in yukarı ve aşağı hareketlerini takip edecek ve joystick bırakıldığında 0'a sıfırlacaktır. Bu, raketimize nasıl hareket edeceğini söylemek için mükemmel bir yol sağlıyor, böylece devam edebiliriz ve raketimize hareket verelim.
Özel bölümün altında bir Zamanlayıcı davranışı ekleyin. Özelliklerinde, aralık değerini 0 olarak ayarlayın. Bu zamanlayıcı mümkün olduğunca sık çalışacak (her karede bir kere), bu da raketin hareketini çok sık güncelleme fırsatı sunar.
Raketin hızını ayarlamadan önce hareket yönü kutu konteynerinin değerinin makul bir aralıkta tutulduğundan emin olmalıyız, yoksa bu durumda raket çok hızlı hareket edecektir.
Yine mantık bölümünden Minimum ve Maksimum davranışlarını ekleyin. Minimum davranışını zamanlayıcıya, Maksimum davranışını Minimum'a bağlayın. Aşağıdaki gibi bir şey olmalı:
Minimum davranışının özelliklerinde, ilk değeri Hareket Yönü davranışının çıktısına ayarlayın ve ikinci değeri 1 olarak ayarlayın.
Minimum davranışı, kendisine verilen en küçük sayıyı çıkış yapacaktır. Yani, harekete geçme değeri 1'den büyükse, 1'i çıkış yapacaktır. Aksi takdirde, hareket yönü değerini doğrudan çıkışa verecektir.
Maksimum davranışının özelliklerinde, ilk değeri Minimum'ın çıktısına ayarlayın ve ikinci değeri -1 olarak ayarlayın.
Maksimum davranış, kendisine verilen en büyük sayıyı çıkış yapacaktır. Yani, hareket yönü değeri -1'den düşükse, -1'yi çıkış yapacaktır. Aksi takdirde, Minimum'ın değerini verecektir (yani, ya 1 ya da hareket yönü, en düşük olan hangisiyse).
Bütün bunlar, Maksimum'ın sonraki değeri, hareket yönü değerinin -1 ile +1 arasında sıkıştırıldığı anlamına gelir. Bu, raketin ne kadar hızlı hareket edebileceğini tamamen kontrol etmemizi sağlar!
-1 ile +1 arasında bir aralık çalışmak kolaydır, ama bu değeri doğrudan raketin hızı olarak kullanmak çok yavaş olacaktır.
Yine mantık bölümüne geri dönün, bir Değerleri Çarpma davranışı ekleyin ve Maksimum davranışına bağlayın. İlk değere, Maksimum davranışının çıkan değerini ayarlayın. İkinci değer de iyi bir "maksimum hız" değeri olarak ayarlanabilir.
Şimdilik, 20 olarak ayarlayın. Eğer daha sonra raketin çok yavaş ya da çok hızlı hareket ettiğini düşünüyorsanız, bu sayıyı artırabilir ya da azaltabilirsiniz.
Değerleri Çarpma davranışı şimdi, -20 ile +20 arasındaki iyi bir hız aralığı sağlıyor.
Artık raketin hızını ayarlamak için uygundur. Fizik bölümünün altında, bir Hızı Ayarla davranışı ekleyin ve çarpım değerine bağlayın. "x" alanını 0 ve "y" alanını Çarpma değerinin çıkış değeri olarak ayarlayın.
Deneyin! Oyunu oynadığınızda, raket joystick'i yukarı ve aşağı hareket ettirdiğinizde hareket edecektir.
Muhtemelen test ederken, raketinizin ekrandan çıkmadığını fark etmişsinizdir. Bir sonraki bölümde, her şeyin görüntüde kalmasını sağlamak için bazı sınırlar ekleyeceğiz.
Bölüm 3: Oyun Sınırları
Devam etmeden önce, iyi oyun tasarımı hakkında bazı öngörülerde bulunalım. Oyuncu raketi, ekranın ortasında olmayacak, ancak oyununu daha da parçalara ayırdıkça yerleşimi daha zorlaştığından kenarlara daha yakın olacak. Bu durumda, UI öğelerimizin (ör. joystick) bizim oyun öğelerimizle (ör. raketler) örtüşmesi bir sorun olacaktır.
Ekranın tamamını oyun alanı olarak kullanmak yerine, sınırları içeri alalım. Bu sayede raketimizi parmağımızla kolayca göremeyeceğimiz şekilde joystick altına gitmesini engelleyebiliriz. Bu şekilde, oynanabilir alanın dibinde raketimizin izini kaybetmeyeceğiz. Ayrıca bu içe alma işlemini, nesnelerin oynanabilir alanı terketmesini engellemek için bir sert sınır olarak da kullanabiliriz.
Özel Nesneler butonuna dokunun ve yeni bir Boş Nesne oluşturun. Yeni boş nesneye dokunarak özelliklerini açın.
Fizik modunu Duvar olarak ayarlayın ve Geçilebilir durumu devre dışı bırakın. Görsel olarak görebilmemiz için, renklerini opak koyu gri (#1F1F1FFF) olarak tercih edin. Sürtünmeyi %0 ve sıçramayı %100 yapın.
Şimdi, duvarın Dönüşüm sekmesinde Y ölçeğini %200'e ayarlayın ve ekran alanının üst kısmına taşıyın. Sonra, ekran alanının tamamına uyacak şekilde uzatın. Ayrıca, doğru yerleştirmenize yardımcı olmak için ızgara yapışkan modunu açabilirsiniz.
Şimdi duvarı kopyalayın ve kopyayı پایین yere taşıyın.
Bir kez daha çoğaltın ve X ölçeğini %200 olarak ayarlayın. Sonra, yüksekliğini uzatın ve ekranın sol tarafına taşıyın.
Ve tekrar, dikey duvarı kopyalayın ve kopyayı ekranın sağ tarafına taşıyın. Artık tamamen kapalı bir oyun alanına sahipsiniz:
Artık oyununuzu oynarsanız, hemen duvarlardan geçebileceğinizi fark edeceksiniz. Bunun iki nedeni var; raketin Geçilebilir olarak ayarlandığı ve her karede raketin hızını zorluyoruz. Bu sorun değil, sadece raketin duvara girmesini engellemek için bir yol eklememiz gerekiyor.
Bu davranışı uygulamak için, oyuncunun konumunu duvarın konumuna karşı kontrol etmemiz gerekecek. Bu doğruysa, o zaman oyuncuyu tekrar oynanabilir alanına yerleştirin.
Bunu uygulamak biraz daha kolay olacak; üst duvara dokunun ve Y sabitleme noktasını %0'a değiştirin. Bu, duvarın pozisyonunu tam alt kısmında sabitleyecektir. Sabitleme alanlarını açmak için Kilit simgesine dokunmanız gerekebilir.
Aşağı duvara benzer şekilde, alt duvarın Y sabitleme noktasını bu sefer %100 olarak değiştirin. Bu, alt duvarın pozisyonunu tam üst kısmında sabitleyecektir.
Artık sınır kontrolü davranışlarımızı uygulamaya hazırız. Raket'e dokunun ve davranış editörünü açın.
Başlangıç olarak, mantık bölümünden bir Çerçeve Alma davranışını yerleştirin. Varsayılan olarak raketi kullanacak. Bu davranış, raketin alt/sol koordinatlarını ve boyutunu verecektir.
Şimdi, mantık bölümünden bir Değerleri Toplama davranışını yerleştirin ve Çerçeve Alma davranışına bağlayın. Toplama Değerlerini özelliklerinde, ilk değeri Çerçeve Alma sonucu "y" olarak ayarlayın ve ikinci değeri "yükseklik" olarak ayarlayın.
Bu toplamanın sonucu, raketin en üst noktasının konumu olacaktır. Okunabilirlik için, bu davranışı "Toplama Değerleri - Raket Üstü" gibi anlamlı bir şekilde yeniden adlandırmak iyi olacaktır.
Şimdi, raketin hem üst hem de alt duvar kontrolünü kontrol edelim. Dönüşüm bölümünde, iki Konum Al davranışını yerleştirin ve bunları Toplama Değerleri davranışına paralel bağlayın.
İlk Konum Al davranışını alt duvarı izlemek için ayarlayın ve ikinci Konum Al davranışını üst duvarı izletin. Daha iyi okunabilirlik için bu davranışları anlamlı adlarla yeniden adlandırın. Artık aşağı yukarı şu görünüme sahip olmalısınız:
Her Konum Al davranışı için, mantık bölümünden bir Değer Çıkarma davranışı yerleştirin ve bunları Konum Al'dan çıktıları bağlayın.
Alt duvarın Konum Al'ına bağlı Değer Çıkarma davranışının özelliklerinde, birinci değeri Çerçeve Alma "y" değerinin sonucu ve ikinci değeri Çerçeve Alma "katman" değerinin sonucu olarak ayarlanmalıdır.
Diğer pozisyondaki Değer Çıkarma davranışı için, birinci değeri Üst Duvarın Konum Al sonucu "y" ve ikinci değeri "Toplama Değerleri - Raket Üstü" sonuçları ayarlanmalıdır.
Bu çıkarımlar, raketi hangi duvara itmemiz gerektiğini belirtir. Şimdi, bunu kontrol edip kontrol etmeyeceğimizi anlamalıyız.
Yine mantık bölümünden iki İf davranışını bağlayın.
Alt duvar dalı için İf davranışı, ilk değeri bağlı Değer Çıkarma davranışından alınmalıdır. Koşulu ">" ("den Büyük") ayarlanmalı ve ikinci değer 0 olmalıdır.
Üst duvar dalı için, bağlı Değer Çıkarma davranışından yeni bir İf davranışı ayarlayın değerini. Koşulu ise "<" ("den Küçük") olarak ayarlayın ve ikinci değeri 0 olarak ayarlayın.
Bu İf ifadeleri, raketin üzerine geçebilecek olduğu her durumda yürütülmeye devam edecektir.
Eğer raket bir duvarı geçerse, raketin daha fazla hareket etmesini engellemek için hızını sıfırlamak; ardından raketi tekrar oyun alanına geri itmek istiyoruz.
Fizik bölümünden, her dal için bir Hızı Ayarla davranışı yerleştirin ve bağlayın. Hız değerlerini X/Y olarak hepsini 0 olarak ayarlayın.
Şimdi, raketi oynanabilir alana itmek için yerli Dönüşüm bölümünden bir “Yerine Taşı" davranışı yolunun güncelleyici talimatı için iki daldan her birine ekleyin.
Bütün değer yeterince alanda uyutulmalı, hareket alanındaki kaç kadar yerini buradan kontrol edebilmeli ve tikten çıkmasını engellemeli. Tekrar da, aynı doğrultuda Yerine Taşı davranışlarından her birine bağlayarak, oyle bir yere başka zamanda durmak gerekebilir, bunun için gerektiği yerde süreyi yere getirin.
Bu tüm bölüm çalıştırıldığında, raketin duvar içindeyken ne kadar içte olduğunu ve geri itebileceğini kontrol edecek. Şimdi, raketin hareket ettiği her seferinde bu davranış zincirini çalıştırmalıyız.
Basitlik adına, bu zincirin en üstüne bir Davranış Paketi ekleyin ve Çerçeve Alma davranışının üzerine bağlayarak gelin. Buna anlamlı bir isim vermek, örneğin "Sınırları Kontrol Et" iyi olur.
Not: “Davranış Paketi” davranışı kendisi hiçbir şey yapmaz; sadece burada, raketin sınırları aştığını kontrol etmek için bir “başlangıç noktası” işlevi görmektedir.
Ardından, Özel bölümde bir Davranış Çalıştırmayı ekleyin. Özelliklerinde 'Davranışı Seç' alanına dokunun ve az önce oluşturduğumuz "Sınırları Kontrol Et" davranışını seçin. Davranış Çalıştırmayı, yayalarının raket hızını ayarladığımız yere taşıyın. Davranış Çalıştırmayı, her daim raketin hareket ettiği yerin "Sınırları Kontrol Et" işlevini çalıştırarak yerinde tutun.
Artık raket her güncellemelerde, Davranış Çalıştırma ile yeni Sınırları Kontrol Et davranış zincirine geçip çıkmış olacaktır, orada raketin sınır dışına çıkıp çıkmadığını kontrol eder!
Deneyin ve aksiyonu görün!
Şimdi yapmamız gereken bir son adım olarak, raketi oyun alanının sol tarafına taşıyalım.
Artık biraz alanımız olduğuna göre, bir top yapalım!
Bölüm 4: Topu Yapma
Sahne düzenleyicisinde, boş bir nesne oluşturun. Fizik modunu Fizik olarak ayarlayın ve geçilebilir durumu devre dışı bırakın, böylece top hareket edebilir ve sınır duvarlarıyla fiziksel çarpışabilir. Sürtünmeyi %0 ve sıçramayı %100 yapın. Rengini beyaz (#FFFFFFFF) yapın. Basitlik açısından, bu nesneye "Top" adını da verebilirsiniz.
Dönüşüm sekmesinde, X=25% ve Y=25% ölçeği ayarlayın ve konumunu X=50% ve Y=50% olarak ayarlayın.
Şimdi, topun davranış editörünü açın ve ona bazı hareketler verelim. Özel bölümde, 3 saniyelik bir Bekleme davranışı yerleştirin.
Sonra, mantık bölümünden Rastgele Sayı birimi yerleştirip Bekleme davranışına bağlayın. İlk değere -1.0 ve ikinci değere 1.0 yazın. Kesinlikle ".0" eklemeyi unutmayın; bu şekilde rastgele sayı, -1.0 ile 1.0 arasında ondalık yer değiştiren bir değer seçecektir, aksi takdirde yalnızca tam tam sayıları seçecektir. Bu, topun ilk fırlatılışında rastgele "atış yönü" olarak kullanılacaktır.
Şimdi, Fizik sayfasından Uygula güç davranışını ekleyin. Kuvvet X=-1, Kuvvet Y, Rastgele Sayı sonuçlandırmasındaki değeri ayarlayın. Bu, topun hareket edeceği yön olacaktır ama 1 Newton kuvvet az olacaktır, bu yüzden çarpanını da değiştirelim. Çarpanı 150 olarak ayarlayın ve oyuna test edin; fazla hızlı mı yoksa yavaş mı olduğunu kontrol edin. Oyun oynarken, 3 saniye sonra top hareket etmeye başlamalıdır, sanki servis edilmiş gibi.
Test ederken, top duvarlarla çarpışmalıdır, ama raket üzerinden geçip gitmelidir. Bu normaldir, zira top için henüz raket çarpışma davranışlarını uygulamamış durumdayız. Topun bazen dönebildiğini de fark etmiş olabilirsiniz, bunu istemiyoruz, bu durumu düzelteceğiz.
Topun davranış editöründe, Dönüşümü Kilitle davranışını Ekleyin ve bir yere yerleştirin, bu, topun kontrolden çıkmasını engelleyecektir.
Artık raketle çarpışma davranışları eklemeye başlayabiliriz, sahne düzenleyicisinde rakete dokunun ve raket özelliklerini açın. Etiketler sekmesine gidin ve metin alanında "Raket" yazın ve + butonuna basıp etiketi rakete ekleyin.
Şimdi, topun davranış editörüne dönebiliriz. Nesne bölümünde, bir Çarpışma davranışı ekleyin. O davranıştaki özelliklerde, Etiketler sekmesine gidin ve yarattığımız Raket etiketini seçin. Artık top, "Raket" etiketine sahip herhangi bir nesne ile çarpıştığında, bu olay yürütülecektir.
Yapmak istediğimiz şey, topun mevcut hızını almak ve X hızını tersine çevirmektir. Böylece eğer top sola hareket ediyorsa, sağa dönmeye başlayacaktır; eğer tam tersi, toptaki hız artışına neden olacağız.
Çarpılan davranışa bağlı olarak, Fizik bölümünden bir Hızı Al davranışını çıkarın. Sonra, mantık kısmında Birimleri Çarpma davranışını ekleyin. İlk değere Alınan hızdan "hız_x" sonuçlanmasını ayarlayın. İkinci değer: -1.03 ayarlayın. Bu çarpma sonucu, topun negatif x hızını ve 3% hız artışını olacak. Sonraki aşamada, bu değişimi uygulayacağız.
Çarpılan davranışına bağlanacak bir Hızı Ayarla davranışı ekleyin. İlk X hızını Çarpma sonucuna ayarlayın, Y hızını ise mevcut hızda bırakın.
Artık oyunun sonucu; top artık zıplamasını, rakete çarpıcı çizim yapmasına ve yavaşça daha çok hızlanacağı hale gelir.
Artık her şeyin bir araya geldiğini düşünün, top ve raket iyi hareket ediyor ama topun vuruşu değişmiyor. Top, raketin üst kısmına daha yakın çarparsa yukarı doğru atış yapmalıdır ve raketin alt kısmına yakın tahkik ederse aşağı doğru atış yapmalıdır. Bu, biraz karmaşaya ve yetenek katacak çünkü oyuncular topun yönünü kontrol etme şansı olacaktır.
Top ve raket arasındaki mesafeyi bulmak için, Dönüşüm bölümünde iki Konum Alma davranışı yerleştirin ve bunları Hız Ayarla davranışından sonra çıkarın. İlk Konum Alma raketi izlemeye devam etsin. İkinci Konum Alma davranışını ise Çarpılan olay (Çarpılan Objelerden ikinci nesne) olarak değiştirin.
Not:"ObjektB" bu durumda çarpışan raketken, "ObjektA" top olur.
Sonra, mantık bölümünden bir Değer Çıkarma davranışı ekleyin. İlk değeri ilk Konum Alma'nın "position_y" sonuçlarıyla, ikinci değeri ise İkinci Konum Alma "position_y" sonucu ile çıkaracak şekilde ayarlayın.
Ardından, Fizik bölümünden bir Uygula Güç davranışı ekleyin. Güç değerleri X'i 0 ve Y'i Çıkarma değerlerinin sonucuna bağlayın. Pozisyon farkı tek başına çok güçlü olmayacağından, çarpanı da değiştirmek zorundayız. Denemek için bir 50 çarpanı ayarlayabilirsiniz.
Oyunu test ederken, topun artık raketle olan ilişkisi neyse ona göre vuruş vektörlerini değiştirirken, top rakete çıkmalı ve yukarı raketin üst kısmına çarparasam yukarı, yavaş/yukarı raketin dibine girmelidir. Eğer istenmeyen durum yaratıyorsa; Çıkar değerini tersten değiştirmede sorun yaşayabilirsiniz.
Neredeyse tüm top hareketlerini uygulanmak için hazırladık, bir sorun daha var. Topun ne kadar hızlı gidebileceğine dair bir sınırlama yok. Uzun süre oynarken, top o kadar hızlı olabilir ki, raketlerden geçebilir. Topa hız sınırlamasını uygulayalım ki bu yükseklikte çıkmayı istemiyoruz. Çıkarılan davranıştan sonra Fizik bölümünden bir Hızı Al türü gerekir.
Bir Max ve bir Min davranışını ekleyin ve bunları mantık bölümünden içine dökün. İlk değeri Hızı Al'dan "velocity_x" değerinin sonucu alın, ikinci değer: -25 ayarını uygulayın. Bu, en yüksek değerine sahip olacak.
Min özelliklerini ayarlayın; birinci değeri Minimum olarak başka değer ayarlayın, ikinci değeri: 25 olarak ayarlayın. Bu sonuç değeri -25 ile 25 aralığındaki en yüksek ve en düşük olarak belirlenmiştir.
Bu kadar geçmiş kontrolü yaparak, şimdi yapmanın zamanı! Aşağı yukarı olan Hızı da bağlayın. Fizik bölümünden bir Hızı Ayarla davranışı ekleyin. Özelliklerinde X hızını birinci sigortadan Min'inden ayarlayın ve Y hızını ikinci Min olan tanımlamayla ilişkilendirin.
Sonuç olarak, Topu şimdi kontrol etmekte. Diğer tanımlamaları da sürekli göz önünde bulundurursanız, topa daha fazla hız kazandıran balon olacaktır.
Artık topu ve topu sağlayan hızı belirledik. Bir son ayar olarak, bir yüzyıla bağlı olarak şundan neden olduğunu anlamalıyız ki; topun ancak yetenek sırası mevcut olup olmadığından azami sıralanmadan çıkmasını dayandırmakla dursun, bu duruma durumdan kesilmektedir. Şimdi tersi sıralamasını düzeltebiliriz; topun olması durumu; yükseklik ancak yüke ekleyerek.
Tüm bunlar iyice birbirine girdiğinde yapılan yapı olarak öğrendik gibi, bu yüzyıl topun yükseklikten Çevirerek bulunmasını sağlamaktadır; iki duvar çorabına bu yaklaşmak mümkündür.
Bölüm 5 kısmını görebilirsiniz! Bu işlerimize, kontrolüne geçiş olarak birbirine geçmesini sağlamak için yapılmasının çeşitli yönlerini bulabilirsiniz
Artık son kısmı nasıl gerçekleştireceğimiz kaldı. Buraya getirilen niyet; burada topa karşı raketi alabilirsiniz. Yani, her yerde, belirlenmiş yeterlilikte 3 sükse kazanmak için. Bir başka yüzyılda yukarıdaki aygıtları ve isimleri geri almak bu kadar durumu olabilir. Bu yıl ise, diğerleri ile sorusunu taşıdırmak fazla, tamamen eğlenceli sıralama için Puzle ve raket eyleyi sorar.
Her kısımda merkezde yer almakta ve görünmeli! Yapı çerçeveleriniz yalnızca fazlasıyla görev sahibi olduğundan kaynağa ihtiyaç oluşmaktadır. Son olarak ve en temelde, toplam her kez eğitimden doğanlar ile eşitlenmekte ve muhalefet doğurulmaktadır. Bütün bunların bir araya gelmesiyle ilgili tamamen iyi bir görev tarzı temin etmek yaygındır; dilin ortamı tartışmalarında, yapılan rüzgar gerektiği gibi alana donanım anda bu son iki kurulumları hayata geçirerek anlatmaktayız.”
Bu eğitimin tamamlanmış proje dosyası burada bulunabilir: Eğitim Projesini İndir

