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

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.

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)

Dersin Bitmiş Hali (Unity Projesi): https://www.mediafire.com/file/h15dv8k3uokw3y9/TheGame.rar/file

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. Ferhat dedi ki:

    Hocam emeğinize sağlık üzerinden çok zaman geçmiş olsada çok çok faydalı bir kaynak. Orjinal sitesinde bile konu güncellenmiyor sizin sitenizde hala daha kaynaklar güncel, linkler aktif. Çeviriniz için emeğiniz için tekrar tekrar teşekkürler.

  2. Yasin dedi ki:

    hocam oyunu açamıyorum acaba son halini nerden bulacağım.

  3. furkan dedi ki:

    Hocam merhaba projenin bitmiş halinde objeler yok düzletme ihtimaliniz var mi?

  4. zehra dedi ki:

    hocam link çalışmıyor yine son hali yok atabilir misiniz

  5. salih dedi ki:

    merhabalar
    ben ders 10 kadar geldim fakat bazı noktaların hatalar alıyorum
    özellikle player ı öldürdüğümde ekrandan kayboluyor ragdollnu herşeyini yaptım
    acaba sizde karekterin assetini isteyebilirmiyim
    çeviriler düzenlemeler 10 numara eline sağlık kardeşim

  6. Yasir dedi ki:

    public class RaycastTest : MonoBehaviour {
    Transform cameraTransform;
    Vector3 cameraPosition;
    Vector3 cameraDirection;

    void Start ()
    {
    GameObject camera = GameObject.FindGameObjectWithTag(“mainCamera”);
    cameraTransform = camera.transform;
    cameraPosition = cameraTransform.position;
    cameraDirection = cameraTransform.forward;

    }

    void Update ()
    {
    if(Input.GetButtonDown(“Fire1”))
    {
    RaycastHit info;
    Physics.Raycast(cameraPosition, cameraDirection,out info, 99);

    Health enemyHealth = info.transform.GetComponent();
    if(enemyHealth!=null)
    {
    enemyHealth.Damage(50);
    }
    }

    }
    }

    Hocam Raycast çalışmıyor sebebi nedir?

    • yasirkula dedi ki:

      Kamera hareketliyse şu kodu kullanın: Physics.Raycast(cameraTransform.position, cameraTransform.forward,out info, 99);. Ayrıca kameranızın tag’i eğer “mainCamera” değil de “MainCamera” ise, FindGameObjectWithTag’i de “MainCamera” yapın. Hâlâ sıkıntı varsa konsolda bir hata mesajı var mı kontrol edin.

  7. SERDAR dedi ki:

    Eline sağlık

  8. Yasir dedi ki:

    Merhabalar hocam. Ben bu motorun yanında birde grafik tasarım programı öğrenmek istiyorum. Kafamdaki oyunda atmosfer önemli ve bunu hangi programla sağlarım yahut unity bu konuda bana yardımcı oluyor mu?

    • yasirkula dedi ki:

      Sanırım ücretsiz en popüler 3D modelleme programı Blender diyebiliriz. Ücretli olarak ise 3ds Max ve Autodesk Maya programları oldukça popüler. Unity’de modelleme yapmak için ProBuilder diye bir plugin bulunmakta ancak bununla insan vücudu gibi yumuşak yüzeyler modellemek, saydığım programlara nazaran daha zor olabilir.

  9. Nurullah Ertaş dedi ki:

    Bu konu güncelmidir acaba? eposta yoluyla lütfen geri dönüş yapabilirmisiniz?

    Önerdiğiniz video veya başka kaynak varsa lütfen eposta yoluyla geri dönüş yapın.

    ertas73emrulla@gmail.com

  10. prodrmani dedi ki:

    Hocam ders 9 da Player dosyasındaki player’ın animator componentindeki controller değişmiyor. Nasıl yapabilirim?

    • yasirkula dedi ki:

      “Create-Animator Controller” ile oluşturduğunuz Animator Controller’ı sürükle bırak yaparak player’ın Animator component’indeki Controller değişkenine değer olarak verebilmeniz lazım. Yanlış bir şey sürüklemediğinizden emin olun. Bir hata alıyorsanız hata mesajını paylaşabilirsiniz. En kötüsü Controller değişkeninin sağındaki ufak yuvarlak ikona tıklayarak, Animator Controller’ı elle seçebilirsiniz.

  11. Fatih Ceb dedi ki:

    merhaba ustam bu link bende hata veriyor bunu nereden ve nasıl bulabilirim
    https://dl.dropboxusercontent.com/u/25260770/UnityLessons/LessonAssets.zip?dl

  12. Murat Gökak dedi ki:

    Merhaba yasir abi.Benim için 3d zor olduğu için (tek bir kişiyim) bana çok zor geliyor.Sizden tek ricam bunun birde 2d olanını yapmanız.Sadece benim için değil,başkaları içinde lazım.Ben aslında game maker isimli oyun motorunda iyice tecrübeliyim ama oda bir yere kadar yaani.

    • yasirkula dedi ki:

      Aslında 2D oyunlar için Game Maker (eğer aşinaysanız) bence daha mantıklı. Ama sanırım siz Unity’nin fizik, partikül vs. özelliklerinden faydalanmak istiyorsunuz. 2D için yakın zamanda bir ders fikrim yok açıkçası, sadece öncelerden paylaştığım eski ve basit bir Flappy Bird dersim vardı o kadar. O yüzden bu konuda internetteki diğer derslere odaklanmanızı öneririm. Ama bir sorunuz olduğunda sormaktan çekinmeyin tabi ki.

  13. Murat Gökak dedi ki:

    merhaba yasir abi,ben 2d oyun yapıyorum(unity 5 ile).Karakter animasyonlarını yapmaya çalışıyorum.Ben a’ya veya D’ye bastığımda animasyon başlıyor,ama elimi çektiğimde,(GetKeyUp),karakter animasyonu oynamaya devam ediyor.İşte kodlar.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class Karakter2 : MonoBehaviour {

    public float hiz;
    public Animator anim;
    public bool idle, run;

    void Start() {
    hiz = 4.5f;
    idle = true;
    run = false;
    }

    // Update is called once per frame
    void Update() {
    AnimasyonKontrolleri();
    if (Input.GetKey(KeyCode.A))
    {
    transform.position -= new Vector3(Time.deltaTime * hiz, 0, 0);
    transform.localScale = new Vector3(-1, 1, 1);
    run = true;
    idle = false;
    }
    if (Input.GetKey(KeyCode.D))
    {
    transform.position += new Vector3(Time.deltaTime * hiz, 0, 0);
    transform.localScale = new Vector3(1, 1, 1);
    run = true;
    idle = false;
    }
    if (Input.GetKeyUp(KeyCode.D) || Input.GetKeyUp(KeyCode.A))
    {
    run = false;
    idle = true;
    }
    }
    public void AnimasyonKontrolleri()
    {
    if (idle)
    anim.SetBool(“Idle”, true);
    else
    anim.SetBool(“Idle”, false);

    if (run)
    anim.SetBool(“Run”, true);
    else
    anim.SetBool(“Run”, false);
    }
    }

    • yasirkula dedi ki:

      Kodu şu şekilde yazmanızı öneririm:

      void Update()
      {
      if (Input.GetKey(KeyCode.A))
      {
      transform.position -= new Vector3(Time.deltaTime * hiz, 0, 0);
      transform.localScale = new Vector3(-1, 1, 1);
      run = true;
      idle = false;
      }
      else if (Input.GetKey(KeyCode.D))
      {
      transform.position += new Vector3(Time.deltaTime * hiz, 0, 0);
      transform.localScale = new Vector3(1, 1, 1);
      run = true;
      idle = false;
      }
      else
      {
      run = false;
      idle = true;
      }

      AnimasyonKontrolleri();
      }

      public void AnimasyonKontrolleri()
      {
      anim.SetBool(“Idle”, idle);
      anim.SetBool(“Run”, run);
      }

      Eğer bir işe yaramazsa, sıkıntı AnimatorController’daki koşma animasyonundan idle animasyona geçişin doğru ayarlanmamış olmasındandır.

Cevap Yazın

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.