UNITY’de Tower Defense (Kule Savunması) Oyunu Tasarlamak (Çeviri Ders)

Yayınlandı: 27 Temmuz 2013 yasirkula tarafından Oyun Tasarımı, UNITY 3D içinde
Etiketler:, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Hepinize merhaba,

Bu çeviri derste Unity‘de Tower Defense tarzı oyun yapmayı göreceğiz. Bu esnada Unity’nin Pathfinding teknolojisinden faydalanacağız. Dersin orijinal kaynağına gitmek için tıklayın (yalnız dersi yazdıktan bu yana orijinal metin fazlasıyla değişmiş): http://noobtuts.com/unity-tower-defense-game-step-1-introduction

Dersten tam anlamıyla verim alabilmek için Unity’de script yazma konusunda hatırı sayılır bir tecrübenizin olması lazım. Ayrıca Unity’nin ücretsiz sürümünü kullanıyorsanız elinizdeki Unity versiyonu en azından 4.2 olmalı.

DÜZENLEME (06.05.2014): Dersin yazarı yaşadığı teknik bir aksaklığın ardından sorunu çözmek için çeviriyi siteden kaldırmamı rica etti. Bu yüzden şu an için dersi PDF olarak paylaşıyorum: https://app.box.com/s/w3ca7phraz28uuunfggp (Alternatif link)

Dersteki TeddyPrefab için indirme linki: https://drive.google.com/uc?id=0BwLax4zOZiIQeERvS29GWWNNXzg&export=download

İleride yazar isterse dersi tamamen silmek durumunda da kalabilirim. Anlayışınız için teşekkürler.

yorum
  1. volkansahin dedi ki:

    Merhabalar, yazılarınız için teşekkürler. Tower Defense’ı gerçekleştirdim ama oyunun görüntü modu nasıl böyle oldu onu tam bulamadım.(kalemle çizilmiş gibi) Ayrıca son zamanlardaki mobil oyun yazılarınızın devamını bekliyorum.

    • yasirkula dedi ki:

      Merhaba,

      Çizgi film tarzı görüntü için yazıda bahsedilen shaderı kullanmanız gerekiyor (Unity Pro gerekli) ama aslına bakarsanız Unity Basic sahibi olduğumdan ve daha önce hiç shader kullanmadığımdan shaderı nasıl kullanabileceğinizi (aktifleştireceğinizi) bilmiyorum. Google’a “Unity how to use shader” yazarsanız uygun bir sonuç bulursunuz gibime geliyor.

      Düzenleme: Şimdi baktım. Shaderı kullanmak için kırmızı ve beyaz renk materyallerinin “Shader” property’sine değer olarak atamanız yeterli.

  2. aziz balı dedi ki:

    Geliştirmek isteyenler buradan yararlanabilirler http://cgcookie.com/unity/cgc-courses/unity-tower-defense-course/ kule yapımını annlatmış değişik kuleler

  3. emre dedi ki:

    Öncelikle ders için teşekkürler. Fakat takıldığım yer en sondaki şu kule dikme yeri scripti yazdım ve kule dikme bölgelerine attım fakat towerslottan seçmeye çalışınca hiç seçenek çıkmıyo none çıkıyo sadece bu sorunu nasıl çözebilirim söylerseniz çok sevinirim

    • yasirkula dedi ki:

      Merhaba,

      Alıntı: “Şimdi TowerSlots.cs scriptini sahnedeki tüm kule dikme noktalarına atayın ve towerPrefab değişkenine değer olarak TowerPrefab’ı atayın.”

      Belki Inspector’dan towerPrefab’a değer atamayı unutmuşsunuzdur. Onun dışında herşeyi düzgün yaptıysanız sorununuzun kaynağını bilemiyorum. Bende güzel çalışmıştı.

  4. emre dedi ki:

    TowerSlot scriptini önceden elle yazmıştım ancak şimdi kopyala yapıştır yaptım hata olmaması için sonra kodun bulunduğu scripti Kule yerleştirme noktalarının hepsine attım. Tower Prefab değerini seçmeye kalktığımda önceden prefab olarak oluşturduğumuz kulem görünmüyor. Hatta hiçbirşey görünmüyor Sadece None yazıyor. Acaba yanlış birşeymi yapmışım ?

    • yasirkula dedi ki:

      Tower prefab’ınıza Tower scriptinin atandığından emin olun. Ardından towerPrefab değişkenine kule prefab’ını Project panelinden elle sürükleyerek değer olarak atayın.

  5. emre dedi ki:

    yasirkula bey acaba teamviever versem bi baksaniz olurmu ?

  6. emre dedi ki:

    dediğiniz gibi yaptım fakat Console bölümünde NullReferenceException:Object Reference not set to an instance of an object diyor ve şu satırı gösteriyor : GUI.contentColor = (altinKontrol.gold >= towerPrefab.buildPrice ? Color.green : Color.red);

  7. emre dedi ki:

    Tamam sorunu çözdüm 😀

  8. Mehmet Kaya dedi ki:

    Merhabalar,
    Bu projenin source hali varmı acaba ? Çünkü çok sorunla karşılaştık işin içinden çıkalamıcak gibi. Nerde hatalar yaptığıma bakmalıyım.

    • yasirkula dedi ki:

      Tutoriali çevirirken projeyi ben de adım adım yapmıştım. O projeyi aradım bilgisayarımda ama bulamadım. Sildiğimi düşünüyorum o yüzden malesef yardımcı olabileceğimi sanmıyorum.

  9. negar dedi ki:

    merhaba ,ilk olarak cok tesekur ederim,ama ben ikinci bir dosman ekliyorum ,hareket ediy ama kule tarafinan vurulmuyor buna nasil yapicam?

    • TT dedi ki:

      Kule tarafından vurulmuyor’dan kastın kule hiç ateş etmiyor düşmana değil mi? Yoksa kule ateş ediyor da kurşun düşmanın içinden mi geçiyor?

      • negar dedi ki:

        ates ediyor ama olmuyor ,yeni o text hic gekmiyor

      • TT dedi ki:

        Taretin oyuna eklediğin düşmana saldırması için düşmanda Teddy.cs scriptinin olması gerekli ama taret düşmana ateş ettiğine göre Teddy scripti zaten eklediğin düşmanda var. Düşmanın üzerinde sağlığının gözükmesi için düşmanda Text Mesh componenti olması lazım. Düşmanın ölmesi Teddy.cs scriptindeki OnDeath fonksiyonunda gerçekleşiyor ve bunu da Bullet.cs tetikliyor. İşin ilginç tarafı bu durum senin eklediğiniz düşman için gerçekleşmiyor ve sebebini ben de bulamadım. Eğer sorunu çözersen burada da paylaş lütfen 🙂

  10. negar dedi ki:

    yinede bukadar ilgilendiniz icin tesekur ederim,hepaini yapmisim olmuyor,ama simdi oyun basladinda bu ikinci dusman olmuyor ama biraz gecdikten sonar kuleler cogaldiktan sonar oluyorlar,niye anayamadim

  11. negar dedi ki:

    bide bi sorun daha var , play tusuna bastimda niye oyun reset olmuyor ve ayni kaldi yerden devam ediyor?:)

    • yasirkula dedi ki:

      Belki oyunu yanlışlıkla Pause ediyorsunuzdur. Yoksa dediğiniz şeyin olmaması lazım.

      Düşmanın geç ölmesinin sebebi belki canının çok olmasıdır (yanlışlıkla Inspector’dan Teddy component’inin altındaki Health değişkenini aşırı miktarda artırmış olabilirsiniz).

  12. max78 dedi ki:

    ben oyunu başlat tuşuna basınca karakterlerine “bilinmeyen karakter” diyor .hata veriyor nasıl düzelte bilirim?

      • max78 dedi ki:

        ya karakterleri yazıyorum gözükmüyor yorumda büyüktür ve küçüktür işaretleri

      • yasirkula dedi ki:

        Malesef öyle bir sorun var. HTML işaretlerini yanlış gösterebiliyor. Ama bu yorumda nedense düzgün gözüküyor. Scriptinizde aldığınız hatanın satırını kopyala-yapıştır yaparsanız güzel olur.

  13. kulaoglu dedi ki:

    Ben fps oyun yaptım ve bu scriptleri düşman için uygulamak istiyorum castle olarak kendimi göster dim.Beni takip edip bana ulaşınca canımı azaltacak(castle health).Ama ben hareket edince ayılar benim illk oyuna başladığım yere gidiyor beni takip etmiyor bunu nasıl düzeltebilirim

  14. GUI dedi ki:

    yasir bey benim bir sorum olacak ben bir gui button yaptım ve ona basınca karakter sola hareket ediyor ama uzun süre basılı tutunca gitmiyor.basılı tutuncada gitmesini istiyorum .yardım ederseniz sevinirim hiç bir sitede bulamadım.

    • yasirkula dedi ki:

      Kod olarak yaptıysanız OnGUI fonksiyonunun içinde GUI.Button yerine GUI.RepeatButton komutunu kullanın. Eğer sahneye GUI Texture koyarak yaptıysanız OnMouseDown fonksiyonunu kullanmak yerine OnMouseDrag fonksiyonunu kullanın.

      • GUI dedi ki:

        çok teşekkürler yaptım

      • GUI dedi ki:

        yasir bey oyunumda guı button kullanıyorum ama çok sorun çıkarıyor guı texture kullanmak istiyorum ama ben şöyle bir kod kullandığımdan dolayı:

        if (GUI.RepeatButton(new Rect(155,300,87,36),”<==="))
        {
        transform.Translate(-0.1, 0, 0);
        }

        guı texture attığımda guı texture hareket ediyor ama ben karakterin hareket istiyorum bunu nasıl düzeltirim?(yani bu kodun yanına karakterin tagını veya ismini nasıl eklerim)

      • yasirkula dedi ki:

        GUITexture’la yaşadığınız sorunu tam anlayamadım; bir daha açıklayabilir misiniz?

      • GUI dedi ki:

        benim yazdığım kod guı button a basınca karakterin hareket etmesini sağlıyor ama guı texture kullandığımda bu kodu ona yazınca karakter yerine.guı texture hareket ediyor(guı button direk karakterin scriptinde olduğu için sorun olmuyor) .Yani kullandığım kodun başına karakterin ismini veya tagını eklersem kodu guı texture kullansam bile texture bassınca karkter hareket edicek.[
        Açıkcası :transform.Translate(-0.1, 0, 0); buna nasıl karakterin ismini veya tagını bağlarım].mesela [oyuncu.transform.Translate(-0.1, 0, 0);]

        umarım açıklayabilmişimdir. 😉

      • yasirkula dedi ki:

        Diyelim ki karakterin tag’ı “Player”. O zaman GameObject.FindWithTag( “Player” ).transform.Translate( -0.1, 0, 0 ); yapmanız lazım.

      • GUI dedi ki:

        çok teşekür ederim yaptım 🙂

  15. serhat dedi ki:

    Hocam şimdi pdf içinde anlatılanlara göre menü için kod yazıyoruz menu.cs … sonra play ve exit butonu için ayrı bir c# mı açıyoruz hepsine ayrı bir c# açıp mı yazıyoruz ve bu yazdığımız kodları nereye atıyoruz .

  16. Serhat dedi ki:

    Hocam play ve quit basınca herhangi bir şey olmuyor neden acaba

    • yasirkula dedi ki:

      Quit editörde çalışmaz. Aşama 3’ün başında scene_main adında yeni bir sahne oluşturup onu Build Settings’e ekliyoruz. O kısmı yapmadan Play butonu da çalışmaz.

  17. Serhat dedi ki:

    Hocam bende play ve quit butonları çıkmıyor neden olabilir build settings falan herşeyi yaptım

    • yasirkula dedi ki:

      Geç cevap için üzgünüm. Kodu birebir aynı yazdınız mı? Scriptin ismi “Menu” ve türü C# mı? Konsolda hata mesajı alıyor musunuz?

  18. Gökhan KARAGÖZ dedi ki:

    Merhabalar, çevirinizde ufak bir hataya rastladım hemen paylaşayım. Gördüğünüz yazıda “yane” kelimesi kullanmışsınız harf hatası. İyi çalışmalar dilerim.

    “Projeyi Oluşturmak ve Menü Sahnesi (Scene)
    Eğer hâlâ bir proje oluşturmadıysanız hemen bir yane oluşturun”

  19. serhat dedi ki:

    Hocam bu oyunu yaptığımızda Android uyumlu olur mu?
    + Birde şu link çalışmıyor, ayıcık model animasyonu:
    http://noobtuts.com/content/unity/tower-defense-game-step-1-introduction/teddy.unitypackage

  20. Burak dedi ki:

    teşekkürler. Hocam birde oyunu başlattığımda ekran mavi kalıyor oyun gelmiyor nerede hata yapıyorum yardım edebilir misiniz

  21. Yasir dedi ki:

    TeddyPrefab indiremiyorum alternatif bir linkte takrar yüklermisiniz ?

  22. osman dedi ki:

    hocam kule savunma oyun tasarımının Türkçe videolarını nereden bulabiliriz

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s