Unity Level Manager Nasıl Oluşturulur?

Yiğit Öztoprak

Hectopat
Katılım
24 Ağustos 2017
Mesajlar
1.745
Çözümler
3
Yer
Milkway
Arkadaşlar merhaba. Unity'de labirent oyunu yapıyorum. Ve har çıkışa para koyup, karakter ona değdiğinde sonraki bölümün kilidi açılsın istiyorum. Şu anda bölümlere kilit koyamıyorum, ancak seçerek girilebiliyor. Ve alttaki resimdeki paraya değince sonraki bölüm açılsın istiyorum.
ldkasjf.PNG
Şu anda elimde bulunan kodlar bunlar bölüm seçimi için;
LevelControlScript.cs
LevelNumberScript.cs
MainManuControlScript.cs

Bu arada Main Menu kodun'da nereyi düzeltirsem Level Button ekleme hakkım artar? Şu anda 2 tane de. ( Bu kodu bir yerden bulmuştum)
kfsaş.PNG


@Predator Titan
 
Çözüm
Yanlış anlamanı istemezdim dostum, elbette yardımcı olacağım sadece sana öneri de bulunmak istedim. Sana adım adım ne yapacağını yazıyorum belki kafan karıştı ondan anlamadın.
1-Labirentin sonun da ki o para benzeri objene "kontrol" adın da bir script oluştur ve sürükleyip at.
2-kontrol kodunun içerisine ise;
Kod:
   LevelControlScript LSC;
   //LevelControlScript Hangi objenin içine atılmış ise, yani LevelControlScript nerede ise objeyi sürükleyip Paranin içine atın.
   public GameObject Para;
   void Start() {
   LSC= Para.GetComponent<LevelControlScript>();
   }
    void OnTriggerEnter(Collider c)
    {
        if (c.transform.root.tag == "Player")
        {
            LSC.youWin();
        }
    }
Bu kodu yaz ve kaydet.
3-Para yazan yere, LevelControlScript'in vardıya hani ilk yazdığın, konu başın da ki mesajın da gösterdiğin 3 tane script, işte onlardan biri olan LevelControlScript'in artık hangi objede ise o objeyi sürükleyip, Para kısmın da ki boş yere bırak.
4-Son bir sorum var, sen konunun en başında gösterdiğin şu 3 script'i kullanıyormusun ? Onları kullnamıyorsan hata verecek elbette, ama eğer LevelControlScript'i ve diğerlerini bir objeye attıysan, ayarlarını yaptıysan LevelControlScript'in atılı olduğu objeyi, labirentin sonun da ki yani kontrol kodunu attığın objende ki sağ tarafda bulunan inspector kısımından ki Para yerine sürükle.
5-Ayrıca karakterin, yani oyunun ana karakteri, senin kontrol ettiğin obje/oyuncu/karakter artık her ne ise onun adını sağ tarafında ki inspector kısmından Tag kısmına gelip orada ki Tag butonuna basıp listeden Player'i seç ve karakterin Tag'ini Player yap.

Predator Titan

Kilopat
Katılım
13 Ekim 2015
Mesajlar
1.382
Makaleler
11
Çözümler
12
Merhaba dostum, öncelikle verdiğin kodları inceledim lakin bunlar bu işlem için bana göre çok gereksiz karışıklık içeriyor.
İlk sorundan başlayalım, paraya çarptığımızı unity'e nasıl aktarabiliriz?
Eğer bir objeye temas edersek, unity bunu anlayacak ve diğer bölüme geçecek.
Ben sana örnekleri vereceğim, neyin, nasıl çalıştığını izah edeceğim; sen ise koduna ekleyeceksin, anlaştıysak başlayalım.

OnTrigger dediğimiz metot ile bir objenin tetiklenmesini sağlayacağız ve buna göre işlemler uygulayacağız.
Aşağı da ki resim de, bir adet Sphere bir adet ise FPSController objeleri var. Varsayalım ki bu FPScontroller sensin ve Sphere de senin labirentin sonun da ki objen. Bu objeye çarptığın zaman seni diğer bölüme ışınlayacak/aktaracak.
Sen de ki objenin Collider Comp. de bulunan yerden "Is Trigger" chek ini True yapmanı istiyorum, resim de ki gibi yani. Böylece objen bir tetikleyici olacak. İçinden geçebileceğiz ve işlem yapacağız.
1530562589087.png

Labirentin sonun da ki objene yeni bir kod eklemen gerekecek. Bu kod sayesin de diğer kodlarla iletişim kurup, onlara değer aktaracağız.
Kod:
    LevelControlScript LSC;
    void OnTriggerEnter(Collider c)
    {
        if (c.transform.root.tag == "Player")
        {
            LevelControlScript.youWin();
        }
    }
Bu kodu yeni bir C# script i oluşturup oraya yazman gerekiyor. Karakterinin inspectorunda (sağ üst köşede ki yer) bulunan TAG kısmından Player'i seçmen gerekiyor.

*1=Bu alan aslında sana bağlı olan bir yer. Oyunun içeriği hakkın da bir bilgim yok ondan dolayı ne yazacağımı kestiremiyorum. Yazdığım şey çalışmaz ise geri dönüş yap.
 

Predator Titan

Kilopat
Katılım
13 Ekim 2015
Mesajlar
1.382
Makaleler
11
Çözümler
12
Ne yaptın dostum sen :)
LevelControlScript olacak,controller değil. Ayrıca levelcontrollerscript adında script zaten yokmuydu neden tekrar yarattın? Bak simdi, kontrol adında yeni bir script yarat içine direk kodumu kopyala yapıştır.
 

Predator Titan

Kilopat
Katılım
13 Ekim 2015
Mesajlar
1.382
Makaleler
11
Çözümler
12
Kod:
   LevelControlScript LSC;
   //LevelControlScript Hangi objenin içine atılmış ise, yani LevelControlScript nerede ise objeyi sürükleyip Paranin içine atın.
   public GameObject Para;
   void Start() {
   LSC= Para.GetComponent<LevelControlScript>();
   }
    void OnTriggerEnter(Collider c)
    {
        if (c.transform.root.tag == "Player")
        {
            LevelControlScript.youWin();
        }
    }
}
Dostum, bak; dili bilmeden konuşmaya çalışıyorsun. Olmaz, sana önerdiğim o AçıkAkademi kaynağında bulunan C# derslerini bitir, Unity Dersler,ne geç Bu şekilde ezber ile olmaz. Temel mantığını kavraman lazım. İlk olarak dili öğren olur mu ?
 
Yukarı