Unity C# TPS Oyunu Yapımı (319 Sayfalık Çeviri Ders)

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

SON GÜNCELLEME: 6 Ağustos 2014 (Çeviri tamamlandı!)

Hepinize merhaba,

Uzun süredir güncellenmeyen sitemi bu proje ile güncellemiş olacağım. Proje, Unity3D ile C# dilini kullanarak basit bir TPS zombi shooter oyunu yapmak.

Ders toplamda 17 dersten oluşmaktadır ve 319 sayfa uzunluğundadır. Dersi anlamak için daha önceden Unity’de programlama deneyiminizin olması gerekiyor! Eğer programlama deneyiminiz yoksa çok ama çok iyi bir araştırmacı olmanız ve derste üzerinde durulmayan komutları kendi başınıza öğrenmeniz gerekiyor. Ben bazı yerlerde çevirmen eklemeleri yaptım ama bunun yetersiz olduğu durumlar olacaktır.

Çeviri her ne kadar tamamlanmış olsa da farketmediğim hatalar olabilir. Bunları lütfen bildirin.

Yazar: Ferdinand Joseph Fernandez

Çeviri: Süleyman Yasir Kula

Orijinal Kaynak: http://forum.unity3d.com/threads/unity-lesson-1-draft.103421/

Derste Adı Geçen Winrar Arşivi: https://www.dropbox.com/sh/26ogv2dfvwy4o10/AAAniN_NxQNpkyleAdXP0ucja?dl=0&preview=LessonAssets.zip (Alternatif link)

Bölüm 1 (Unity’e Giriş): https://www.dropbox.com/s/x8w5r9juitfdjlw/B%C3%B6l%C3%BCm1.pdf

Bölüm 2 (Basit Bir Level Tasarımı): https://www.dropbox.com/s/i99g3yp7fsmgpdy/B%C3%B6l%C3%BCm2.pdf

Bölüm 3 (Script Yazmaya Giriş): https://www.dropbox.com/s/wokrrjnih0ddea0/B%C3%B6l%C3%BCm3.pdf

Bölüm 4 (Player Scriptine Giriş): https://www.dropbox.com/s/pb09f1fnpz5zeh8/B%C3%B6l%C3%BCm4.pdf

Bölüm 5 (Kamera Scripti): https://www.dropbox.com/s/fzc7isdd7xlto66/B%C3%B6l%C3%BCm5.pdf

Bölüm 6 (Düşman Yapay Zekasına Giriş): https://www.dropbox.com/s/rym0706c08lac2q/B%C3%B6l%C3%BCm6.pdf

Bölüm 7 (Prefab Sistemi): https://www.dropbox.com/s/52q257peaweekhl/B%C3%B6l%C3%BCm7.pdf

Bölüm 8 (Düşmana Hasar Vermek): https://www.dropbox.com/s/lpdchq4312ti9fh/B%C3%B6l%C3%BCm8.pdf

Bölüm 9 (3D Modeller ve Animasyonlar): https://www.dropbox.com/s/1833xiwhtf57ghf/B%C3%B6l%C3%BCm9.pdf

Bölüm 10 (Ragdoll Sistemi): https://www.dropbox.com/s/c0ldjuqa9v9kna2/B%C3%B6l%C3%BCm10.pdf

Bölüm 11 (Düşmanın Hasar Vermesi): https://www.dropbox.com/s/exe9z5kzte78jt1/B%C3%B6l%C3%BCm11.pdf

Bölüm 12 (Düşmanların Spawn Olması): https://www.dropbox.com/s/r5u5o7nzn4h3im9/B%C3%B6l%C3%BCm12.pdf

Bölüm 13 (Oyunu Kazanmak): https://www.dropbox.com/s/j0bhqmsod7j3dyy/B%C3%B6l%C3%BCm13.pdf

Bölüm 14 (Ana Menü Oluşturmak): https://www.dropbox.com/s/wairefu2vyzzinv/B%C3%B6l%C3%BCm14.pdf

Bölüm 15 (Görsel ve Ses Efektleri Eklemek): https://www.dropbox.com/s/nfqdg1ctqpokiqt/B%C3%B6l%C3%BCm15.pdf

Bölüm 16 (Düşmanın Sağlık Paketi Düşürmesi): https://www.dropbox.com/s/2agaksvntmdrh67/B%C3%B6l%C3%BCm16.pdf

Bölüm 17 (Oyuna Roketatar Eklemek): https://www.dropbox.com/s/5txcxowr8crufry/B%C3%B6l%C3%BCm17.pdf


Bu döküman tamamen ücretsiz olarak sunulmaktadır ve kesinlikle hiçbir şekilde parayla satılamaz!
Dökümanın paylaşılması durumunda lütfen alıntı yaptığınızı belirtin!
İyi okumalar!

yorum
  1. SilentViper94 dedi ki:

    Tam istediğim bir şeydi kardeşim. Ellerine sağlık. 🙂 Ayrıca yeni JavaScript derslerin beklerim. 🙂

  2. Turgut dedi ki:

    Saol abi site güncellendi keyfimiz yerine geldi 🙂

  3. ModellemeUzman dedi ki:

    Abi üzerinde çalıştığın projeler varmı?

  4. Umut dedi ki:

    Androide yaptığım oyunun apksini yapıp telefona atıığmda yükleniyor ama açıldığında siyah ekranda kalıp kendi kendini kaptıyor. Yardımcı olurmusun.

    • yasirkula dedi ki:

      Sorunun kaynağını bilmiyorum pekçok şey olabilir. İnternetten araştırmanız lazım.

      • Umut dedi ki:

        Unity nin içinde bulunan mobile packages dede aynı sorun oluyo 😦

        Birde uygulamayı yaparken main camera yı androide göre boyutlandıırmamız gerekirmi ?

      • yasirkula dedi ki:

        Kameranın yüksekliği aynı kalır ama genişliği değişir. Bence boyutlandırmaya gerek yok.

  5. Tarık BAYÇELEBİ dedi ki:

    Saol abi. Bayağı bir işime yaradı. Diğerlerinide çevirmeni bekliyorum. Teşekkürler, selamlar

  6. ceyhun dedi ki:

    Yasirkula abi valla ilaç gibi geldi;-)

  7. ceyhun dedi ki:

    Devamini bekliyoruz 😉

  8. ceyhun dedi ki:

    Bolum 4 :Player scriptine giris
    Kamera aýarladim ama kameraýi dondüriýorum w basiýorum kameraýi döndürdiğim tarafa gitmiýor
    ———————————
    Bölüm 6:düşman yapay zekasina giriş
    Dersteki gibi aýnini ýaptim ama düsman yerden 1 metre gibi uçuyor ve beni öýle kovaliýor
    :-(:'(

    Ýardim ederseniz sevinirim 😉
    Ha bu arada ders 13 ne zaman geliýor:-D

    • yasirkula dedi ki:

      İlginiz için çok teşekkür ederim. Bölüm 13’ü yarın çıkarmaya çalışacağım.

      Cevap-1:
      Obje hiyerarşisinin şöyle olduğundan emin olun:

      -Player
      —LookY
      —–Main Camera

      LookY objesinde LookY scripti yer alırken Player objesinde PlayerMovement ve LookX scriptleri yer alacak. Main Camera’da herhangi bir script yer almayacak.

      Cevap-2:
      Çok garip, aklıma bir çözüm gelmedi. Herşeyi birebir aynı yaptığınızdan emin olun.

      • ceyhun dedi ki:

        Yasirkula ýardimin için sağol herşeýi halletdim
        Ama player animasiyon benimki gibi değilmiş
        Ben unity 34 4.0. kullaniýorum bazi ýazilanlar bende burda takilip kaldim
        Unitynin ýaninda gelen Angry boots playere baktim ondan inceleýerek ýaptim ama kameraýi saga sola ýaptigimda aýaklari dönmeýe başliyor 20-30 kere döndükden sonra duruýor ne ýapmaliýim

        Unityýi kullanmiýodum bu dersini okuýarak unityýi sevdim ve kullanmadiğima rağmen senin saýende çok ilerledim

        Çaýlaklar için unity script derslini pdf indirdim
        Pong pdf indirdim
        Towwer pdf indirdim
        Flappy pdf indirdim bu unitynin 2D desteği hangi versiýonda geliýor 4.0 da varmmi

      • yasirkula dedi ki:

        2D desteği sanırım Unity 4.3 ile gelmiş. Ben son sürüm kullanmanızı tavsiye ederim. Madem Unity 3.4 kullanıyorsunuz, o zaman Player animasyonu için orijinal dersteki animasyon scriptini yazmanızı öneririm. Ders linki: https://dl.dropboxusercontent.com/u/25260770/UnityLessons/FeuUnity3dLesson9.pdf

      • Şamil Özdemir dedi ki:

        Derslerde hiçbir sıkıntı yok hocamda animator kullanarak yaptığınız bölümü birde kaynağın yaptığı şekilde çevirirseniz çok makbule geçer. animator kullanımında iyiyim fakat diğer yöntemide öğrenmek istiyorum gelişmek lazım bilirsiniz 🙂

      • yasirkula dedi ki:

        İlginiz için teşekkürler. Bahsettiğiniz kısmın Animation componenti kullanarak yapılmış orijinal halini Türkçe’ye çevirmeyi düşünmüyorum, mecburen İngilizce kaynaktan faydalanmalısınız.

      • Şamil Özdemir dedi ki:

        Ben teşekkür ederim hocam başarınızın devamını diliyorum Türkiye’de gördüğüm en iyi Unity3D kaynağısınız. Birde TagdaGame iş yapıyor 🙂

      • Nurullah dedi ki:

        Nerden yorum atacağımı bilemediğimden cevap olarak atıyorum.
        Hocam kamera duvarların içinden geçmesin istiyorum ne yapmalıyım

      • yasirkula dedi ki:

        Bu biraz kompleks bir konu, eğer “unity camera wall collision” şeklinde arama yaparsanız çeşitli kaynaklar çıkıyor. Örnek bir kod isterseniz de şöyle bir şey buldum ama kendim denemedim: https://gist.github.com/plafone/6ed1f2edf37108bc18a7

  9. ceyhun dedi ki:

    Pardon yukarda unity 3D 4.0 demek istedim

  10. ceyhun dedi ki:

    Tamamdir halletdim. Orjinal kaýnağindeki ingilizce pdf olduğu için anlamadim ingilizcem 0 olduğu için ama kodlari kopýala ýapiştir diýerek halletdim.
    Ýardimin için sağol.13.14.15.16.17 pdf leride bekliýoruz.

  11. ceyhun dedi ki:

    13 gelmiş yuhu;-)
    Sinirlenmessen bir sorunum var 9 deki player animasion ýaptim sonra playere ragdoll ekledim ýürütmek istediğimde animasyonu hatasiz ýürüyor ama karakter 1 metre bile gitmiýor.
    Sana çok sorun oldum galiba!0:)

    • yasirkula dedi ki:

      Ragdoll vermeden önce yürüyor muydu? PlayerMovement scripti ile Character Controller componenti hâlâ Player objesine atanmış durumda, değil mi? Herhangi bir hata ya da uyarı mesajı geliyor mu?

      • ceyhun dedi ki:

        Herşeý tamam aýni ýaptim olmadi.
        Dersleri baştan başliýarak yeniden ýaptim bu sefer halloldu 13.14 iýimiş devami gelsin hadi tam gaz ileri!:-)

  12. Tarık BAYÇELEBİ dedi ki:

    12. 13. ü bölümüde çevirmişsin. 🙂 , Bu ne hız Yasir abi!! çok yararlı oluyorsun. Devamını bekliyorum. Sayende Unity merakım bir hayli arttı. Çok Teşekkürler, Selamlar

  13. ceyhun dedi ki:

    Teşşekür ederiz derslerin için bu çevri derslerin bitince ara uzamadan inşallah başka çeviri ya-da kendi ýaptiğin derslerde görüşürüz diýe umud ediýorum!:-)

  14. emre dedi ki:

    merhaba yasir kula bey. size bir sorum olacaktı :

    Ders 8’de söylenenleri harfiyen yapmama rağmen düşmanın üzerine tıklayıp düşmana ateş edince “NullReferenceException : Object reference not set an instance of an object” diye bir hata çıktı. Defalarca kez aynı şeyi tekrarlamama rağmen de bir çözüm bulamadım. Yardımcı olur musunuz ?

  15. Çağlayan dedi ki:

    elinize sağlık kağıda bastım tamamını, bana çok yararlı olacaktır.

  16. Mehmet dedi ki:

    ben de sevdim ama Bölüm 4 deki controlleri yapıyom o garip şekle atmaya çalışıyorum unity bana name class felan diyor napcam

    • yasirkula dedi ki:

      Scriptlerinizin 4. satırında “public class BlaBla : MonoBehaviour” satırı yer alır. Her script için, BlaBla’nın değerinin scriptin ismi ile harfi harfine aynı olduğundan emin olun. Genelde bir C# scriptin ismini sonradan değiştirince bu sorun ortaya çıkar.

  17. Kürşat dedi ki:

    Merhaba abi unity 1 sene önce tanıştım ingilizce olmadıgı için zaten yabancı kaynaklara bakamadım Türkçe kaynakta Azdı hemen hemen yoktu gibi şimdi bunlar harika emegin için çok teşekkür ilk oyunumu yaptıgımda oyunun köşesine adını yazacagım

  18. Murat dedi ki:

    Yasir Bey, nasıl ki Farmville’de domates ekiyorsunuz ve diyelim ki hasat etmeniz için 40 dakika (gerçek zamanlı) gerekiyor. Siz oyunu kapatıp çıksanız dahi 40 dakika geçtikten sonra oyuna girdiğinizde hasat etmeniz gerektiği uyarısı geliyor. Bu tip uyarıların gerçek zamanlı olarak oyunumda belirmesi için ne yapmalıyım? Yani oyunum ve karakterim gerçek zamanı nasıl takip edip uyarılar verebilir?

    • yasirkula dedi ki:

      Daha önce hiç böyle bir tecrübem olmadı ve dediğiniz şey nasıl yapılır kesin olarak da bilmiyorum. Ama aklımda bir fikir var. System.DateTime adında bir yapı var, bir tarihi depolamaya yarıyor. Domates ekince onu ektiğiniz zamanı DateTime olarak kaydetmeyi (nasıl kaydedilir bilmiyorum) deneyebilir ve oyunu yeniden açınca mevcut DateTime ile domatesin ekildiği DateTime arasındaki farkı bir şekilde alıp bu fark 40 dakikadan büyükse uyarı verebilirsiniz.

  19. Murat dedi ki:

    Teşekkür ederim. Aklımda bir iki oyun fikri var. Yapılabilirlikler üzerine karar verip öğrenmeye ve projem üzerinde uğraşmaya devam etmek istiyorum.

  20. Umut Bayır dedi ki:

    Böylesi bir kaynağı hazırlayan sizlere çok teşekkür ederim.Büyük emek isteyen bir iş sizlere her zaman borçlu olacağız.Minnettarız

  21. Faruk dedi ki:

    Ah yasir hocam o kadar bitrdim dersleri androdie uyarlayamadım bir türlü.Nasır uyarlarım. 😥

  22. mesut dedi ki:

    Bu oyunu export edip başka bir projeye attıgımda alacagım hatalar nelerdir? Mesela animasyonlar sapıtıyor bunu nasıl düzeltebilirim? Başka ne gibi hatalar almam olası?

    • yasirkula dedi ki:

      Animasyonların sapıtması da dahil herhangi bir hata beklemiyorum ben.

      • mesut dedi ki:

        Mesela suanki oyunumuzda ground diye tanımlı olan zemini terrainle degiştirirsem kodların içinde direk ground diye yazılı olan şeyler ( raycast ışınları gibi) terrain zeminimdede aynı etkileri gösterir mi?

      • yasirkula dedi ki:

        Bahsettiğiniz ground hangi scriptte geçiyor?

    • mesut dedi ki:

      Kodlamaya yeni başladıgım için biraz sıkıntı çekiyorum ve senide ugraştırıyorum kusura bakma ilgin için teşekkürler.

      ben konuya yanlış yerden girdim sana durumu anlatayım. ben burada yapmış olduklarımı exportladım ve arkadaşıma attım. arkadaşımda benden aldıgı playeri oluşturmuş oldugu terrain üzerine ekledi ve player ileri dogru gitmedi fakat geri , sag ve sola cok bozuk ve sapıtmış bir şekide hareket etti. Kendimde new project açarak boş bir terrain oluşturup player objesini üstüne attıgımda aynı hatayla karşılaştım. sorun ne olabilir?

      • yasirkula dedi ki:

        Oyunun bitmiş halini açtım ve Scenes klasöründen MainScene’i açtım. Ground objesini sildim ve yerine GameObject-Create Other-Terrain ile bir terrain koydum. Oyunu başlattığımda karakter zeminin üstünde sorunsuzca hareket ediyordu.

        İsterseniz projenin bitmiş halini açıp benim uyguladığım adımları siz de uygulamayı deneyin: https://www.dropbox.com/s/mbglfxuxgwgk322/TheGame.rar

      • mesut dedi ki:

        Evet o şekilde bendede sorunsuz oluyor fakat benim bahsettigim nokta farklı. şimdi oyunun bitmiş halini açtım ve hierarchy panelindeki Player, GameOverScreen, EnemySpawnManager, CombatGui ve GameManager objelerini sürükle bırak yöntemiyle project paneline prefablarını oluşturdum ve oyunun içindeki bütün dosyalarla birlikte Assets-Export Package ile export ettim sonra (bu kısım çok önemli!) File-New Project-Create ile yeni bir proje açtım (File-New Scene degil File-New Project) ve .Exportlamış oldugum bütün dosyaları Assets-Import Package-Custom Package ile projeme import ettim ve prefabını almış oldugum Player objesini oluşturmuş oldugum terrainin üzerine attım ve ondan sonra anlattıgım hatalarla karşılaştım.

      • yasirkula dedi ki:

        Garipsedim. Sebebini bulursanız bana da söyleyin.

      • mesut dedi ki:

        Sebebini tam olarak anlayamadim fakat calistirmayi basardim. Onceki yorumumda soyledigim exportlanmis dosya ve prefablari yeni projeme import ettim sonra prefablanmis Playeri projemdeki terrainin uzerine attim ve icindeki Child olan Playeri sildim sonra model klasorunun icindeki Player modelini Parent olan Playerin Childi yaptim ve ikisininde konumunu resetledim sorun cozulmus oldu. Animasyonunu duzeltmek icinde model klasorunun icindeki Player Animation Controlleri child olan Playerin Animator componentine attim.

  23. mesut dedi ki:

    Şöyle bir sorum olacak. bu zombilerin etrafımızda rastgele degilde haritada istedigimiz yerlerde olmasını nasıl saglayabilirim?

  24. mesut dedi ki:

    Oyunu bitirdim ve mainmenuden options’a tıkladıgımda optionsmenusu acılmadı. senin bitirmiş oldugun projeden açtıgımdada aynı sorunla karşılastım. sebebi ne olablir?

    • yasirkula dedi ki:

      Options menüsü Scenes In Build’e eklenmemiş olabilir (Build Settings’te). Hiç hata veriyor mu Options’a gitmeye çalışınca?

      • mesut dedi ki:

        builde ekledim hatta oyunun buildini alıpta denedim bile ama sanki hiç kod yazılmamış gibi tepki vermiyor. konsolda hata mesajıda vermiyor.

      • yasirkula dedi ki:

        MainMenuGui’deki OnGUI fonksiyonu OptionsGui’dekinden sonra çalışınca bu sorun oluyor. Options menüsü açılıyor ama Main Menu onun üzerine çizildiği için Options arkada kalıyor.

        Bunu çözmek için MainMenuGui’de “GUI.skin = _guiSkin;” satırından sonra şu kodu ekleyin:

        if( OptionsGui.IsOpen )
        return;

        _mainMenuBg ve _title çizdirme kodlarını ise kopyalayıp OptionsGui’ye yapıştırın.

  25. mesut dedi ki:

    ilginiz için teşekkürler sorun halloldu

  26. mesut dedi ki:

    Senden bir ricam olacak türkçe kaynak olarak hiç bir yerde bulamadım ve birçok kişininde ihtiyaç duydugu bir konu. mesela ben bu oyundan cıkıp tekrar girdigimde kaldıgım yerden devam etmek istiyorum. bunun kodlarını ve yapılış tarzını bir ders haline getirebilir misin?

  27. Muhammet dedi ki:

    Oyunda zombilere ateş edeilirken roket gözükmüyor bunu nedeni ne olabilir?

  28. Hasan dedi ki:

    Bu örnek projeyi açtığımda project incompatible new version of unity required diye bir hata alıyorum.Oyun yine de continue and data loss if you continue bastığımda açılıyor ama oyunda bazı hatalar oluşuyor.Bunun nedeni ne olabilir?

    • yasirkula dedi ki:

      Kullandığınız Unity sürümü eski duruyor. En son çıkan sürümü yüklemeyi deneyin.

      • Hasan dedi ki:

        Evet ondanmis tesekkürler.Ben de oyle dusunmustum de oyle cok eski bi surum olmadigindan bundan kaynaklanmadigini dusunuyodum.

  29. ErsanKaran dedi ki:

    Ben menüyü build ettiğimde butonlar falan karışmış oluyor nasıl düzeltebilirim?

  30. Nihat Yıldız dedi ki:

    teşekkürler elinize sağlık hcam devamını dört gözle bekliyorum 🙂

  31. Nihat Yildiz dedi ki:

    cok sagol hocam Allah razi olsun elleriniz dert gormesin

  32. Özgür dedi ki:

    Oyunuma nasıl reklam verebilirim Kod ilemi veriliyor Reklam şirketi ile nasıl anlaşılıyor ?

  33. Özgür dedi ki:

    Startapp ta nasıl oluyor merak ediyorum ufak bir ders verme şansınız varmı veya addmob mu yoksa startapp mi daha iyi ?

  34. Ygs Yaklaşıyor dedi ki:

    Yasir hocam siz ygs ve lys de kaç alıp bilkente gittiniz?

  35. Özgür dedi ki:

    nesneyi tuşa basınca rotation z de nasıl çevirebilirim ?

  36. werduet dedi ki:

    iyi günler unity ile bir kaç aydır tanışmaktayım ve sizin sitenizi takip etmekdeyim.bu verdiğiniz notlara dün başladım ve bölüm 4 ‘de bulunan jump kodu kısmında sorunla karşılaşmaktayım.
    sizin tasarladğınız oyunuda indirdim ve PlayerMovement kısmındaki kodları tek tek kontrol ettim ve herhangi bir farklılık bulamadım.PlayerMovement kodunu player objeme attıgım anda obje sürekli zıplıyor.Bu sorunu nasıl halledebilirim ?

    • yasirkula dedi ki:

      Aynı sorun örnek projemde olmuyor anladığım kadarıyla. Garip bir sıkıntı, verdiğiniz bilgiler doğrultusunda herhangi bir olası sebep göremedim.

  37. abdulkadir dedi ki:

    bazı controller bende eksik yapamıyorum onları nasıl çıkarcam

  38. 6askan dedi ki:

    Bir teşekkürü borç bilirim usta

  39. siyanbian dedi ki:

    Çok sağolun hocam iyi çalışmalar

  40. harun dedi ki:

    yükledim finish yazısı geldi sonra kapandı.nasıl aççam

    • yasirkula dedi ki:

      Malesef restart butonu olmadığı için oyunu tekrar açmalısınız. Restart butonunu oluşturmak sizin için bir alıştırma olsun. Butona basınca çalışacak kod basit: Application.LoadLevel(0);

  41. harun dedi ki:

    ağaç resmini bulamadım dosyada nerde oldugunu anlatırmısınız ders 2deki

  42. harun dedi ki:

    all compiler errors have to be fixed before you can enter playmode diye hata alıyom ne yapmalıyım

  43. harun dedi ki:

    ayriştırma hatası varmış iki kodda ne demek istiyor

    KOD TEMİZLENDİ.

    • yasirkula dedi ki:

      Dediğiniz hatayı anlayamadım ancak kodunuzda “float_jumpSpeed” veya “voidUpdate()” gibi kısımlar var. Buralarda arada bir boşluk olacak: “float _jumpSpeed” ve “void Update()” gibi.

  44. harun dedi ki:

    Bu kodler her versiyona uygun mu?

  45. harun dedi ki:

    4,6 yı yükledim yine hata veriyor. rotate kodunu yazdım bunda 1 hata vardı düzelttim.player movementtaki hataları düzeltemiyom. yardım edersiniz sevinirim.

  46. harun dedi ki:

    MissingComponentException: There is no ‘CharacterController’ attached to the “Player” game object, but a script is trying to access it.
    You probably need to add a CharacterController to the game object “Player”. Or your script needs to check if the component is attached before using it.

    MissingComponentException: There is no ‘CharacterController’ attached to the “ZombieMixamo” game object, but a script is trying to access it.
    You probably need to add a CharacterController to the game object “ZombieMixamo”. Or your script needs to check if the component is attached before using it

    bu hatalar ne yapmam gerek

    • yasirkula dedi ki:

      Player’a ve Enemy prefab’ına Component-Physics-Character Controller ekleyebilirsiniz ancak upload ettiğim örnek projede karakterde ve zombilerde zaten Character Controller var, ben hiçbir hata almıyorum (Unity 4.6.1f1 üzerinde test ettim).

  47. harun dedi ki:

    character controller yaptım yine aynı hata var

    • yasirkula dedi ki:

      Upload ettiğim projeyi Unity 4.6’da açtım ve hata almadım. Sizin yaşadığınız sorunun çözümünü bilmiyorum. Tek tavsiyem örnek projeyi incelemeniz…

      • harun dedi ki:

        animator controller şeyinde player animation controller yapınca hata gidiyor ama uçuyorlar.örnek projedede böyle yapılmış.

      • yasirkula dedi ki:

        Uçma sorunu zamanında bende de olmuştu. Çeşitli şeyler deneyerek karakteri tekrar uçurmaya (ve böylece sorunun kaynağını bulmaya) çalıştım ama ben projeyi yapalı oldukça uzun zaman oldu ve başarısız oldum. Kısacası karakter niçin uçuyor hatırlamıyorum.

      • harun dedi ki:

        ÇEVİRMEN EKLEMESİ: Eğer böyle bir uyarı penceresi bende çıkmadığı gibi sizde de çıkmazsa Player objesinin Inspector’undan Capsule Collider’ın sağındaki dişli ikonuna tıklayın ve Remove Component seçeneğini seçin. Yoksa karakter hareket ederken garip bir şekilde uçmaya başlıyor.bundan
        olabilirmi

      • yasirkula dedi ki:

        Player’da Capsule Collider olmamalı. Varsa Remove Component yapıp tekrar deneyin madem.

      • harun dedi ki:

        character controller örnek projedeki gibi düzelttiğimde karakteri uçmuyudu ama kendi başına hareket ediyordu.zombide örnek projede bulamadığımdan bu kodları yaptım bunda olmadı

      • yasirkula dedi ki:

        Örnek projede herşey tam takır var. Scenes klasöründen MainScene sahnesini açmanız lazım.

      • harun dedi ki:

        NullReferenceException: Object reference not set to an instance of an object
        EnemyMovement.Update () (at Assets/scripht/EnemyMovement.cs:29)
        bu hata verdi karakteri haraket ettirdim zombi hareket etmiyor

      • yasirkula dedi ki:

        Sorunlarınızın çoğunu verdiğim linkteki projeyi inceleyerek çözebilirsiniz.

      • harun dedi ki:

        koddan mı yapcam

      • yasirkula dedi ki:

        Belki koddandır belki birşeyleri eksik yapmışsınızdır. Ben bu çeviri dersi kendi başıma yaptığımda hiçbir hata çıkmadı, sizde bi dolu hata çıkması şaşırtıcı.

  48. Seyit Mustafa Adem KANDEMİR dedi ki:

    Dersler için Çok Teşekkürler Ellerinize Sağlık.Benim bir sorunum var.Şöyle ki:
    Bölüm 13 ‘deki anlatılanları eksiksiz yaptım. Unitye döndüğümde ise şöyle bir mesaj çıktı :
    RESİMLER KALDIRILDI.
    Bu mesaja “No Thanks” dediğimde ise şöyle hatalar çıktı :
    RESİMLER KALDIRILDI.
    Sonradan bu mesaja “I Made a Backup.Go Ahead!” dedikten sonra oyunu test ederken de ise şunlar çıktı :
    RESİMLER KALDIRILDI.

    Kendi elle yazdığım ve bölüm 13 PDF de bulunan C# Script Kodu :
    RESİMLER KALDIRILDI.
    Programa “I Made a Backup. Go Ahead!” dedikten sonra programın update ettiği C# Script Kodu :
    RESİMLER KALDIRILDI.

    Bir türlü işin içinden çıkamadım.

    • yasirkula dedi ki:

      Scriptte hata yok. Tek yapmanız gereken Inspector’a sağ tıklayıp Debug moda geçmek ve Landing animasyonundaki “Legacy” seçeneğini işaretlemek.

  49. TaRmAnYa dedi ki:

    Merhaba Yasir Hocam, ben bir objenin yerçekimine sahip olmasını istiyorum. İnsan modeli olduğu için character controller koydum. Modelin sadece yerçekimine sahip olması lazım ama sizin 9. dersinizde zombi aynı zamanda hareket ettiği için script istediğim gibi olmuyor. Sadece yerçekimi olsun diye kodu değiştirmeye çalıştım ama bu sefer hiç olmuyor. Mesh Collider’de sıkıntı olduğu için character controller kullandım. Bana C# yalnızca yerçekimi scripti verebilir misiniz?

    • yasirkula dedi ki:

      Yerçekiminin kısa yolu objeye Rigidbody verip Is Kinematic’i kapatmak ve Use Gravity’i açmak. CharacterController için olan kod dediğiniz gibi zaten scriptlerde mevcut, onu ordan tutup çekmeniz lazım. Kodu ben yazmayacağım.

      • TaRmAnYa dedi ki:

        Objeme mesh collider i tanıtamıyorum. Mesh kısmı boş gözüküyor. Neden olduğu ile ilgili bir fikriniz var mı?

      • yasirkula dedi ki:

        Objede Mesh Filter varsa Mesh Collider’ın düzgün çalışması lazım.

  50. Umuthan dedi ki:

    Öncelikle dersler için teşekkür ederim.
    Ben RagDoll sistemi için buraya gelmiştim. Ancak benim karakterimde Ragdoll’un istediği bazı parçalar yok. omuz gibi, veya bazı parçalar fazla, örneğin dirsek gibi. Bunun için bir çözüm öneriniz varmı acaba?

  51. TaRmAnYa dedi ki:

    Son bir şey daha 😀 Biraz fazla oldu kusura bakmayın. Apk dosyası build ettiğimde dosyanın 180 mb olduğunu gördüm. Nasıl düşürebilirim? Işık ları son gölge seviyesine getirdiğim için olabilir mi?

    • yasirkula dedi ki:

      Texture’ların çözünürlüğünü düşürerek, müzikleri compress ederek ve modelleri low-poly yaparak.

      • TaRmAnYa dedi ki:

        Nasıl yapacağım hakkında herhangi bir bilginiz var mı?

        BU SON 😀

      • yasirkula dedi ki:

        Resimlerin çözünürlükleri için Inspector’da Max Resolution var. Belki resim formatını değiştirmek de işe yarayabilir. Müzikleri bilmiyorum. Modelleri low-poly yapmak için modelleme bilgisi sahibi olmanız lazım. Modeli low-poly’e çevirmek oldukça zorlu bir süreç olabilir.

  52. TaRmAnYa dedi ki:

    Inspector’daki 2048 yazan yeri 32 ye çevidiğimde 2 mb lık dosya 0.7 kb a düştü. Kalite de düştü ama olsun teşekkür ederim

  53. TaRmAnYa dedi ki:

    Tekrar ben 😀 . Yasir Hocam oyunu android e build ettim ama mouse cursor u nda bir sıkıntı oldu. Çizgili bir kare gibi görünmeye başladı. Ben de tekrar windows a build ettim fakat sorun yine aynı. Oyuna başlayınca da fare imleci siyah bir kare şeklinde görünüyor. Pişman oldum android e build ettiğime 😀 Yardımcı olabilir misiniz?

  54. Barış dedi ki:

    Draw Texture üzerine UI button kullanabilir miyiz?

  55. Barış dedi ki:

    Derslerin için teşekkür ederim. Zombi modelini kendi oyunumda kullansam sorun çıkar mı?

  56. Enes dedi ki:

    Merhaba konu ile pek alakalı deği ama bir sorunum var ve konu ile ilgili bi kaynak bulamadım. Oyuncular oyuna ilk girişte g mail hesabı ile oyuna kaydedip sora her girişlerinde google hesaplarıyla giriş yapma özelliğini nasıl ekleybilirim

  57. alper dedi ki:

    Selam. Ben bir şeyi merak ediyorum. Mesela

    if ( a <= 10)

    {
    b -= 10 * time.DeltaTime;
    }

    bu kodu yazdığımda a'nın değeri 10'a eşit veya 10'dan küçük olduğunda b'nin değerini 1 saniyede 10 birim sürekli azaltıyor. Ama ben bu işlemin sadece bir kez çalışmasını istiyorum yani a'nın değeri 10'a eşit veya 10'dan küçük olduğunda b'nin değerini bir kereliğine 10 azaltsın. Sürekli 10 azaltsın istemiyorum. Bunun için nasıl bir kod yazmam gerekiyor bana yardımcı olur musunuz.

  58. alper dedi ki:

    Yasir bey ben bu projeye yeni başladım sayılır. 4. ve 5. bölümlerdeki scriptleri yazdıktan sonra gerekli yerlere atadım ve play tusuna bastım. Player’i W,A,S,D tuşlarıyla kontrol ederken bir şey fark ettim. Kamera açısını değiştirmediğim sürece karakteri x ve z koordinatları boyunca hatasız kontrol edebiliyorum fakat kamera açısını değiştirdiğim anda mesela 180 derece geri çevirirsem W tuşuna bastığımda sanki karakterin önünde bir engel varmış gibi ilerlemeye çalışıyor ama ilerleyemiyor. Sizin bitirdiğiniz projeyi indirip karşılaştırdım herhangi bir farklılık bulamadım. Unity sürücüm 5.0.0 . PlayerMovement Scriptli ile alakalı olduğunu düşünüyorum. Scriptteki kodlar şöyle:

    using UnityEngine;
    using System.Collections;

    public class PlayerMovement : MonoBehaviour
    {

    CharacterController _controller;

    [SerializeField]
    float moveSpeed = 5.0f;

    [SerializeField]
    float jumpSpeed = 20.0f;

    [SerializeField]
    float gravity = 1.0f;

    float yVelocity = 0.0f;

    // Use this for initialization
    void Start ()
    {
    _controller = GetComponent();
    }

    // Update is called once per frame
    void Update ()
    {
    //Objeyi hareket ettireceğimiz yönleri belirliyoruz.
    Vector3 direction = new Vector3(Input.GetAxis(“Horizontal”), 0, Input.GetAxis(“Vertical”));

    //Objenin hareket hızını yön ile çarpıyoruz.bu sayede hareket hızının aralığını değiştiriyoruz. (daha hızlı / daha yavaş)
    Vector3 velocity = direction * moveSpeed;

    //Objeyi hareket ettiriyoruz.
    _controller.Move(velocity*Time.deltaTime);

    //İlk if değerindeki is.Grounded, Objenin yere değip değmediğini kontrol eder ve eğer değiyorsa işlem yapmamızı sağlar
    if (_controller.isGrounded)
    {
    if (Input.GetButtonDown(“Jump”))
    {
    yVelocity = jumpSpeed;
    }
    }
    else
    {
    yVelocity -= gravity;
    }

    velocity.y = yVelocity;

    velocity = transform.TransformDirection(velocity);

    _controller.Move(velocity * Time.deltaTime);

    }
    }

    Acaba sorun ne olabilir ?

    • alper dedi ki:

      Tamamdır sorunu buldum. Sanırım yaşlanıyorum.

      _controller.Move(velocity * Time.deltaTime);

      Bu kodu 2 kez yazmışım. O kadar baktım fark etmedim.

      • yasirkula dedi ki:

        Kendi başınıza çözmeniz daha iyi olmuş. Kodun iki kere tekrarlanması neden karakteri durdurmuş bilmiyorum ama çözülmesi yeterli sanırım.

  59. Ali dedi ki:

    pdf linkleri bozulmuş yenilerseniz çok sevinirim

  60. efe dedi ki:

    hocam bu uygulamayı android de çalışabilir mi? yani telefon ve bilgisayar için geliştirme aşaması aynı mı?

  61. efe dedi ki:

    bölüm 10 da ragdoll işlemlerini yaptıktan sonra ölen zombi bu şekilde kalıyor, nerede sıkıntı olabilir?

    http://i.hizliresim.com/nrYPk0.png

    • yasirkula dedi ki:

      Aynı part’taki 38. sayfada yer alan soruna benzemiş biraz (farklı bir sorun da olabilir). Konsolda bir error almadığınızdan emin olun ve isterseniz örnek projedeki zombi ile sizin zombiniz arasında ne farklar var kontrol edin: http://www.speedyshare.com/xXqg8/TheGame.zip

      • efe dedi ki:

        hocam şunu farkettim, create dedikten sonra oluşturmuyor rigidbody felan, bileşenleri seçince de gözükmüyor, pelvis i seçiyorum gözükmüyor yeşil hatlar mesela.

      • efe dedi ki:

        hallettim hocam, ragdoll menüsün de yanlarında ki yuvarlaklara basarak seçim yapıyorumdum olmamıştı, sonra hierarchy den sürükle bırak yaptım tek tek oldu. teşekkürler yine de.

  62. efe dedi ki:

    bölüm11 sonunda şu hatayı aldım: http://i.hizliresim.com/MJ9B8M.png
    burada ne hatası olabilir : http://i.hizliresim.com/WYWpa4.png

    health 0 olduğunda ölmesi gerekirken dead yazısı ekran da çıkıyor ama animasyonlar devam ediyor. her şeyi kontrol ettim scriptlerin hepsi doğru.

    çözemiyorum.

  63. ahmet dedi ki:

    Hocam merhaba.Hocam kusura bakmayın bir sorum olacaktı.Ben karaktere bir raycast verdim ama sadece kendi göz hizasına gelen nesnelerin rengini değiştiriyor.Ama bazı nesneler göz hizasından aşağıda olduğundan raycast çarpmıyor.Hocam ben karakterin önündeki istediğim tüm nesnelerin (eğer tag varsa) renklerini değiştirmesini istiyorum.Bunu nasıl yapabilirim.Şimdiden taşekürler.

  64. Kimex dedi ki:

    Merhaba
    Protected,visual,override,abstract komutlarının ne işe yaradığını açıklayabilir misiniz ? Nette birkaç şey yazılmış ama üstün körü geçilmiş hep 😦

    • yasirkula dedi ki:

      Bunları anlamak için class extend etmenin ney olduğunu bilmeniz lazım. Örneğin “public class KarakterScript : MonoBehaviour” yazdığımız zaman KarakterScript class’ı MonoBehaviour class’ını extend ediyor. Artık MonoBehaviour class’ında yer alan ve private olmayan tüm değişkenlere (mesela transform değişkeni) ve fonksiyonlara (örneğin GetComponent) artık KarakterScript class’ından da erişilebiliyor. Aslında bu saydıklarım Component isimli class’tan geliyor ancak KarakterScript -> MonoBehaviour -> Behaviour -> Component şeklinde bir ilişki olduğundan Component’teki private olmayan bu şeylere MonoBehaviour’dan, dolayısıyla da KarakterScript’ten erişebiliyoruz. Extend edilen class’tan çekilen şeyleri Unity Script Reference’de “Inherited Members” adı altında görürsünüz zaten.

      Bir değişken veya fonksiyon protected olursa ona sadece o class’ı extend eden class’lardan erişilebilir (örneğin Behaviour class’ındaki protected bir değişkene sadece Behaviour, MonoBehaviour ve KarakterScript class’larından erişilebilir).

      Bir fonksiyon virtual olursa, o class’ı extend eden class’lar bu fonksiyonu override edip böylece fonksiyonun işleyişini değiştirebilir. Örneğin A : B şeklinde bir class hiyerarşisi var diyelim (A burada B’yi extend ediyor). B class’ında şöyle bir fonksiyon olsun:

      virtual void Test() { Debug.Log( “B” ); }

      A class’ında ise:

      override void Test() { Debug.Log( “A” ); }

      Elimizde bir A bir de B objesi var ise (sırasıyla x ve y)(A : B olduğu için aslında x teorik olarak hem A hem de B objesi olmuş oluyor) Test() fonksiyonu x için konsola “A” basarken y için konsola “B” basıyor. Buradaki avantaj ise şöyle: x aynı zamanda bir B objesi olduğundan dolayı hem x’i hem de y’yi “public B x, y;” şeklinde B değişkeninde tutabiliyoruz. Bu haldeyken x için Test fonksiyonunu çağırınca konsola yine “A” basılıyor.

      abstract keyword’ü ise biraz daha farklı bir şey. Bir class abstract ise direkt bu class’ın bir objesini oluşturamıyorsunuz. Hem abstract’ı anlatmak, hem de override’ı pekiştirmek için şöyle bir örnek verebilirim: elimizde “Araba” adında abstract bir class, bu class’ın içinde de “public abstract int Hiz();” isminde abstract bir fonksiyon olsun. Bu fonksiyonun süslü parantezleri yok çünkü bu fonksiyonun nasıl çalışacağını, Araba class’ını extend eden class’lar override ile belirleyecek.

      “BMW : Araba” ve “Toyota : Araba” şeklinde, Araba’yı extend eden 2 class olsun. Bu class’lar abstract değil diye varsayalım. Bu durumda bu class’lar Araba’nın Hiz fonksiyonunu override etmek zorunda (aksi taktirde compiler error verir):

      public override int Hiz() { return 130; } // BMW class’ındaki Hiz()
      public override int Hiz() { return 100; } // Toyota class’ındaki Hiz()

      BMW ve Toyota class’ları Araba’yı extend ettiği için bu iki class’ın objelerini de Araba türünde değişkenlerde tutabilme avantajına sahibiz (“public Araba bmw6, toyotaYaris;”). Araba class’ında abstract bir Hiz() fonksiyonu tanımladığımız ve bu fonksiyonu BMW ile Toyota’da (zorunlu olarak) override ettiğimiz için, bmw6 ve toyotaYaris objelerinin Hiz() fonksiyonunu çağırdığımız zaman her iki obje de Hiz fonksiyonuna kendisine özgü bir şekilde yanıt veriyor (biri 130, öbürü 100 döndürüyor).

      Diyebilirsiniz ki şu şekilde iki değişken de tanımlayabilirdik (hatta Araba’yı extend bile etmeyebilirdik):

      public BMW bmw6;
      public Toyota toyotaYaris;

      Evet böyle de yapabilirdik ancak elimizde çok sayıda BMW ve Toyota olsa o zaman bu objeleri “public Araba[] arabalar;” şeklinde tek bir array’de tutabilirken “public BMW[] bmwler;” ve “public Toyota[] toyotalar;” şeklinde 2 farklı array’de tutmak zorunda kalacaktık. Veya programımızda 10 farklı araba markası varsa her biri için ayrı ayrı array tutmak zorunda kalacaktık.

      Daha oyunlara yönelik bir örnek vererek yazıyı noktalayayım: oyununuzda her birisi kendisine özgü 15 farklı yaratık türü varsa, bu yaratıkların Yaratik isimli abstract bir class’ı extend etmesini ve “public abstract void OyuncuyaSaldir();” isimli bir fonksiyonu kendilerine özgü bir şekilde override etmelerini sağlayabilirsiniz (örneğin bir yaratık türü player’ın arkasına sinsice yaklaşarak saldırmayı tercih ederken başka bir yaratık türü havadan saldırmayı tercih edebilir). Artık sahnedeki tüm yaratıkları bir Yaratik[] array’inde tutup bu array’deki player’a yakın olan yaratıkların OyuncuyaSaldir() fonksiyonunu çağırabilirsiniz. Bu şekilde her yaratık türü için ayrı bir array tutmak zahmetinden de kurtulmuş olursunuz.

      Bu yorum size sadece bir başlangıç noktası olsun. İnternetten biraz daha araştırma yaparak daha kapsamlı bilgiler, örnekler ve tavsiyeler bulmaya çalışın zira nesne yönelimli programlamada (OOP) bahsettiğiniz bu kavramlar çok önemli bir yere sahip (her ne kadar Unity’de nispeten daha az kullanma gereği duysak da).

  65. efe dedi ki:

    merhaba yasir hocam, bazı sorularım olacak.

    oyun kazanıldığın da ‘you win’ yazısı ile birlikte oyunu durdurmak istiyorum ve ekrana skoru yazdırmak istiyorum, sonra da menü ye dönmek için de bir tuş atamak istiyorum.

    şu an ‘you win’ yazıyor ama oyun devam ediyor ve ‘you dead’ oluyor. ‘you dead’ yazsa da devam ediyor aslında yine durdurup skor yazdırmam lazım.

    bazı şeyler denedim ama başka hatalara sebeb oldu.

    fikir verebilirsen sevinirim.

    • yasirkula dedi ki:

      Oyunu durdurmak için en kolay yol Time.timeScale’i azaltmak (eğer değeri 0 olursa oyun tamamen durur). Oyunun bitince herşeyin küt diye donmasını istemiyorsanız Time.timeScale’i yumuşak bir şekilde 1’den 0’a çekebilirsiniz. Bunun için CombatGUI scriptine şu Update fonksiyonunu ekleyebilirsiniz:

      void Update()
      {
      	if( _playerHealth.IsDead || GameManager.HasPlayerWon )
      	{
      		float t = Time.timeScale - 0.01f;
      		if( t < 0f ) t = 0f;
      		Time.timeScale = t;
      	}
      }
      

      Şu anda oyun bitince CombatGUI’nin OnGUI fonksiyonu vasıtasıyla ekrana skor yazdırılıyor diye biliyorum ama yanlışım varsa düzeltin.

      EDIT: Oyun yeniden başlayınca herşeyin tekrar hareket edebilmesi için MainMenuGui ve CombatGui scriptlerinin Start fonksiyonuna “Time.timeScale = 1f;” kodunu da eklemek isteyebilirsiniz.

  66. selam dedi ki:

    merhaba sorum olacaktı,

    new game butonu çalışıyor ama options çalışmamaya başladı, scriptler de bir hata yok 2-3 kere kontrol ettim. sorun ne olabilir.??

    options gui: http://i.hizliresim.com/3oDGBr.jpg

    main menu gui: http://i.hizliresim.com/WYn3AN.jpg

    • yasirkula dedi ki:

      Sıkıntı şöyle ki options’ın ana menünün üzerine çizilmesi gerekirken bazen ana menü options’ın üzerine çizilebiliyor (çünkü bunu engelleyen bir kod yok scriptlerde ve bu durumda iş şansa kalıyor). Sorunu çözmek için MainMenuGui’de “GUI.skin = _guiSkin;” kodunun altına şunu ekleyin:

      if( OptionsGui.IsOpen )
      return;

  67. Burhan dedi ki:

    Ben unity3d oyun motorunda c# dili ile iyi bir oyun yapib nasil pazarlaya bilirim ? Ve oyun satislarindan elde edilen gelirin ne kadari oyunu yapan kisiye duser ?

    • yasirkula dedi ki:

      Unity ve C# ile iyi bir oyun yapıp Kickstarter veya Steam Greenlight üzerinden pazarlamasını yapabilirsiniz. Bu platformlarda gelir konusunda hiç bilgim yok.

  68. Burhan dedi ki:

    Hocam ben unity3 ve c# ile oyun yapmaga calisdigim zaman diyelim ki bazi hazir assetler kullandim ve ya onceden kimse tarafindan hazirlanmis bir modeli oyunumda kullandim ve bu oyun uzerinden pazarlmada iyi para kar etdim. Simdi ben bu hazir modeli hazirlayana tazminat odemelimiyim ? Diger bir sorum da olacakdi: Unity icin model hangi programlar yardimiyla yapa bilirim ve bu programlarin kitap derslikleri movcutmu ? Biraz uun sorular oldu kusura bakmayin. Onceden tesekkur ederim

    • yasirkula dedi ki:

      Parayla satılan bir asset ise sıkıntı çıkma riski var tabi ki. Doğru olan şey asset’in ücretsiz sürümü varsa onu kullanmak, yoksa da kullanmadan önce asset’i satın almak. Kendiniz modelleme için de Maya, 3ds Max veya Blender kullanabilirsiniz. Bunlar arasından Blender ücretsiz bir program. Ben Maya için Nebi Yıkaroğlu’nun Maya Unlimited kitabını okumuş ve beğenmiştim.

  69. Burhan dedi ki:

    Hocam ben c# dilinin temellerini ve bir cok ozelliklerini nerdeyse tamamen oyrenmis durumdayim. Sadece unity3d ve blenderi de oyrenmek iyi bir oyun yapa bilemek icin yeterlimidir ?

  70. Burhan dedi ki:

    Sizden baska iyi bilen birini tanimiyorum.
    Izninizle son bir sorum daha olacakdi : Online oyun yapa bilmek icin c#,unity ve blender-den baska ne gerekli biliyorsaniz lutfen soylermisiniz ?

    • yasirkula dedi ki:

      Çok deneyimim yok ancak Unity’nin kendi networking sistemini (UNet) kullanınca başka bir şeye gerek olmayabilir. MMORPG türünde devasa bir oyun düşünüyorsanız o zaman muhakkak başka araçlara ihtiyacınız olacaktır.

  71. Burhan dedi ki:

    unity icin iyi bir derslik biliyormusunuz ?

  72. Burhan dedi ki:

    Yardimlariniz icin cok tesekkur ederim

  73. Altug dedi ki:

    Merhaba,
    Bölüm5’teki “Sağa-Sola Bakmak” adımını uyguladım. Projeyi çalıştırdığımda hiçbir şekilde sağa-sola dönmüyor karakter, Input.GetAxis(“Mouse X”) “0” dönüyor geriye…
    Böyle bir problemle karşılaşan var mı?
    Teşekkürler.

  74. aduygulu dedi ki:

    Evet, Macbook-Parallels üzerinde win10 kullanıyorum… Birçok şey denedim, olmadı. Şimdi osx tarafına kuruyorum, bakalım nasıl olacak 🙂
    Teşekkürler yardımlarınız için…

  75. akrep dedi ki:

    merhaba bu derste unity’nin hangi versiyonu kullanıldı acaba solermısınız ben son surum ındırdım de asets fazla ozellık yok ya

  76. Programmer dedi ki:

    Hocam ders için kullanılan asset dosyalarının indirme linki kurbağa olmuş. Yenilersen seviriniriz 🙂

  77. Muhammet dedi ki:

    Hocam android oyun yapmayla ilgili PDF dosyanız varmı.

    • yasirkula dedi ki:

      Direkt Android odaklı ufak derslerim var (joystick dersi veya multi-touch dersleri gibi) ama onun dışında aklıma bir şey gelmiyor. Bunlar da PDF ders değil maalesef.

  78. Darkwolf dedi ki:

    Zombiler görunje kowalamali nasil yapilir,zombiler playeri sez olursa yada gorunje kowalatmaliyip yoksa hepsi saldiryor we zombi kalmiyor oyunda

    • yasirkula dedi ki:

      Bu sistem yapay zekanın field of view’ı olarak geçiyor. Bunu video ders ile görerek anlamanızı öneririm, yazılı bir şekilde anlatmak zor olur. “unity ai field of view” şeklinde arama yaparsanız çeşitli video dersler bulmanız mümkün.

  79. Darkwolf dedi ki:

    1yasirkula field of view sistemini videosunu gordum ama videoda iy anlatim yok sen
    bik ders onere bilirmisin yada kendin bir ders yaparmisin.

    • yasirkula dedi ki:

      Field of view’la ilgili nasıl bir sıkıntı yaşıyorsunuz? Field of view’ın kameranın görüş alanını etkilemekten başka bir işlevi yok benim bildiğim. FOV’u değiştirmenin yolu da kameradaki fieldOfView değişkeninin değerini değiştirmek.

  80. Darkwolf dedi ki:

    zombiler playeri gorduginde kowalamali nasil yapilir.
    we bende scripti dogru yasam error weryor

    • yasirkula dedi ki:

      Zombilere bir cube child obje verip bu objenin Mesh Renderer’ını kapatın ve collider’ındaki Is Trigger’ı işaretleyin. Artık bu küp düşmanın görüş alanı olacak. OnTriggerEnter fonksiyonunda bu trigger’a player’ın girip girmediğine bakabilir ve eğer girmişse her frame’de player’a doğru hareket edebilirsiniz. Burada bir noktadan bir noktaya hareket etmekten bahsettiğimiz için ister Transform, ister Rigidbody, ister CharacterController, ister de NavMeshAgent kullanabilirsiniz.

      • Darkwolf dedi ki:

        tesekur ederim
        we satirda hatam public float attackditanci yalnis yazmammis.

  81. Darkwolf dedi ki:

    yasirkula yerden sarjor nasil alinajagini soyliye bilirmisin

    • yasirkula dedi ki:

      Şarjorün üzerine gelince alacaksa bir trigger’dan ve OnTriggerEnter’dan faydalanabilirsiniz. Şarjörün üzerine tıklayınca alacaksa OnMouseDown fonksiyonundan faydalanabilirsiniz.

  82. Darkwolf dedi ki:

    mermi sitemi scripti nasil olur ama c# sharp lazim

    • yasirkula dedi ki:

      Bu konuda piyasadaki FPS oyun yapımı dersleri kendi mermi scriptinizi anlayarak yazmanıza yardımcı olacaktır. “Unity FPS ders” yazarsanız karşınıza çeşitli video dersler çıkar.

  83. ahmet dedi ki:

    GENÇLER iyi günler sizden bir ricam var UNITY de aplikasyon içerisinde arama yaptırıp objenin resmini değiştirmek istiyorum
    örneğin; küp düşünelim menü ya basıp search yapıp google image içerine yünlenecek burda gereken adı yazıp resimlerin içerisinden birine tıkladığımızda bunu o küpün üzerine import edecek bir script bulamadım yardım istiyorum şimdiden sağolun android için çalışmam

    • yasirkula dedi ki:

      İnternetteki bir resmi bir objenin materyaline vermek için şu kodu kullanabilirsiniz:

      public IEnumerator ResmiInternettenCek( string resimLink )
      {
          WWW www = new WWW( resimLink );
          yield return www;
           
          if( string.IsNullOrEmpty( www.error ) )
          {
              Texture2D resimTexture = www.texture;
              GetComponent<Renderer>().material.mainTexture = resimTexture; 
          }
          else
          {
              // resim indirilirken bir hata oluştu
              Debug.LogWarning( www.error );
          }
      }
      

      Ancak Unity içerisinde Google resim arama sayfasını veya herhangi bir web sayfasını göstermek zor bir iş, bunu plugin’siz yapmanız mümkün olmayabilir. Bu iş için “unity show web page github” şeklinde bir arama ile ücretsiz alternatiflere bakabilir veya Asset Store üzerindeki ücretli plugin’leri kullanabilirsiniz.

  84. efe dedi ki:

    merhaba yasir kardeşim, sorum var ama öncelikle bu kaynak için teşekkür ederim 🙂

    Oyun bittikten sonra tekrar menüye dönüp oyunu yeniden başlatabilmek için nasıl bir yol izlemeliyim. Oyun bittiğinde u are dead yazdığında bir buton ile oyunu kapatıp menüye dönmek istiyorum.

    • yasirkula dedi ki:

      Buton oluşturmak ve butona tıklayınca bir fonksiyon çağırmak için UI dersime bakabilirsiniz (https://yasirkula.com/2015/01/21/unity-ui-arayuz-sistemi/). Şu an proje bende olmadığından menü sahnesinin ismini hatırlamıyorum ama diyelim ki “Menu” ise, butona basınca UnityEngine.SceneManagement.SceneManager.LoadScene( “Menu” ); komutunu çalıştırarak menüye dönebilirsiniz.

      • efe dedi ki:

        peki oyun sonlandığında yeni scene yapsam ve oradan yeni level gibi oyun başlasa, bu şekilde 3-4 level yapabilir miyim. sahne değiştikten sonra içindekiler yine ilk sahnenin benzeri olacak şekilde, yani sadece yeni sahneye buton ile göndermemde bir sıkıntı olur mu?

      • yasirkula dedi ki:

        Tam aklınızdaki şeyi gözümde canlandıramadım ama istediğiniz gibi bir şey elbette yapabilirsiniz, bu anlamda yapabileceklerinizin bir limiti yok.

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