Şimdi Ara

doodle jump benzeri oyun yazıyorum bi yerde tıkandım yardım edin lütfen

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
29
Cevap
1
Favori
639
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • oyun göründüğü gibi sol üsteki high score u oyuncu öldüğü zaman try again kısımndada yazdırmak isitoyrum fakat ne yaptıysam olmadı try again ekranından high score ve öldüğüm andaki score ulaşamıyorum bu birinci

    1. karakter ekranın x eksenınde ekrandan çıkınca -x ten girmesi içinde uğraştım sağdan girip soldan girimiyor bazen bugta kalıyor o da fail oldu bunları nasıl yapabilirim biri lütfen biri yardım etsin



    doodle jump benzeri oyun yazıyorum bi yerde tıkandım yardım edin lütfen



    < Bu mesaj bu kişi tarafından değiştirildi rocketraccoon -- 2 Aralık 2020; 21:50:29 >



  • Kodlarını gösterirsen ve daha detaylı açıklarsan yardımcı olunabilir.

    1. sorunu çözdüm hocam
    2. sorunda ne kod yazacağımı bilmiyorum ekranına sağından girince solundan çıkmasını istiyorum sağından girince solundan çıkmasını istiyorum şuanda ekranın sağından çıktığımda devam ediyor ekranda gözükmüyor yere düşünce ölüyor solundanda aynı şekil hiç kod yazmadım bunun için
  • Ekranın en sağına ve en soluna olmak üzere 2 tane gameobject oluştur ve bunlara box collider 2D ver. Dikey olacak şekilde collideri yukarı doğru birazcık uzat ve is trigger işaretle. Soldaki objeye "Left", sağdaki objeye "Right" taglarını ver. Bu iki objeyi main cameranın atına childleri olacak şekilde at. Sonra playerımızın kod scriptini aç ve şunları ekle.

    Kod

    Yığını:
        public GameObject leftObj, rightObj; private void OnTriggerEnter2D(Collider2D other)     {         if (other.CompareTag("Left"))         {             this.transform.position = new Vector3 (rightObj.gameObject.transform.position.x-1, this.transform.position.y, this.transform.position.z);         }         if (other.CompareTag("Right"))         {             this.transform.position = new Vector3 (leftObj.gameObject.transform.position.x+1, this.transform.position.y, this.transform.position.z);         }     }

    Player'ın scriptinde leftObj ile rightObj'yi göstertmeyi unutma yoksa çalışmaz. Ayrıca objelerin box colliderlerini ince yap ve ekranın sağına ve soluna çok yaklaştırma. Arada 1 birimlik mesafe bırak ki karakter sağdan sola veya soldan sağa ışınlanınca tekrar etkileşime geçip tekrar eski pozisyonuna ışınlanmasın. Ek olarak farklı en boy oranı olan cihazlarda ışınlanma yerleri de farklı olmalı. Onun için de playerın scriptine şu yöntemi ekleyebiliriz:


    Kod

    Yığını:
        private void Start()     {         if (Camera.main.aspect >= 0.75 && Camera.main.aspect <= 0.76)         {             leftObj.gameObject.transform.position = new Vector3 (leftObj.gameObject.transform.position.x - 2, leftObj.gameObject.transform.position.y, leftObj.gameObject.transform.position.z);             rightObj.gameObject.transform.position = new Vector3 (rightObj.gameObject.transform.position.x + 2, rightObj.gameObject.transform.position.y, rightObj.gameObject.transform.position.z);             Debug.Log("ipad");         }         if (Camera.main.aspect >= 0.66 && Camera.main.aspect <= 0.67)         {             leftObj.gameObject.transform.position = new Vector3 (leftObj.gameObject.transform.position.x - 1, leftObj.gameObject.transform.position.y, leftObj.gameObject.transform.position.z);             rightObj.gameObject.transform.position = new Vector3 (rightObj.gameObject.transform.position.x + 1, rightObj.gameObject.transform.position.y, rightObj.gameObject.transform.position.z);             Debug.Log("iphone 4S");         }         if (Camera.main.aspect >= 0.56 && Camera.main.aspect <= 0.57)         {             leftObj.gameObject.transform.position = new Vector3 (leftObj.gameObject.transform.position.x, leftObj.gameObject.transform.position.y, leftObj.gameObject.transform.position.z);             rightObj.gameObject.transform.position = new Vector3 (rightObj.gameObject.transform.position.x, rightObj.gameObject.transform.position.y, rightObj.gameObject.transform.position.z);             Debug.Log("iphone 6S");         }         if (Camera.main.aspect >= 0.46 && Camera.main.aspect <= 0.47)         {             leftObj.gameObject.transform.position = new Vector3 (leftObj.gameObject.transform.position.x +1, leftObj.gameObject.transform.position.y, leftObj.gameObject.transform.position.z);             rightObj.gameObject.transform.position = new Vector3 (rightObj.gameObject.transform.position.x - 1, rightObj.gameObject.transform.position.y, rightObj.gameObject.transform.position.z);             Debug.Log("iphone X");         }     }

    Burada mesela ipad tabletlerin en boy oranı genelde 4:3. Yani tableti dikey tuttuğumuzda sola ve sağa oluşturduğumuz objeler ekranın en solunda veya en sağında değil de biraz daha iç kısımda kalırlar. Bu yöntemle ipadlerde soldaki objemizi 2 birim sola, sağdakini ise 2 birim sağa yolladık.




    < Bu mesaj bu kişi tarafından değiştirildi 1ht1baron -- 3 Aralık 2020; 20:16:47 >




  • 1ht1baron 1 kullanıcısına yanıt
    Hocam süpersin
  • 1ht1baron 1 kullanıcısına yanıt

    ilk kod yığınını yaptım işe yarıyor ama player oyun başında solda yapışık başlıyor oynarken kendi kendine ne tarafa yakınsa o tarafa ışınlanıyor neden olabilir hocam

  • rocketraccoon kullanıcısına yanıt

    Colliderleri iyi ayarlamamış olabilir misin? Hemen tetikleniyodur.

  • bu şekilde ayarladım

    doodle jump benzeri oyun yazıyorum bi yerde tıkandım yardım edin lütfen



    < Bu mesaj bu kişi tarafından değiştirildi rocketraccoon -- 3 Aralık 2020; 12:13:10 >
  • Belki en boy oranı için verdiğim kod oyunu başlattığın gibi objeleri ortaya yaklaştırmıştır. Onu kontrol et. Birde 1080x1920 portrait değil de orayı aspect ratio 9:16 olarak kullan. Diğer en boy oranları ise çentikli cihazlarım 90:195, ipad ise 3:4.
    Ayrıca playerın colliderini de düzgün ayarla. Player ile tam boy ya da biraz daha küçük capsule collider 2d kullanabilirsin.



    < Bu mesaj bu kişi tarafından değiştirildi 1ht1baron -- 3 Aralık 2020; 14:8:6 >
    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Bu işi colliderlarla yapıyorsanız canvasları ve farklı cihazlarda çözünürlük ayarlamayı çok iyi yapmak gerek.Yoksa colliderların konumu farklı cihazlarda en boy oranına göre değişşebilir ve oyuncu objenin yok olduğunu falan görebilir. OnBecameInvisible fonksiyonu ile yapmalısınız.Bu fonksiyonda cameranın objeyi görüp görmediği hesaplanır.

  • 1ht1baron 1 kullanıcısına yanıt

    telefon ekranları için verdiğin kod yığınını atınca oyun başlamıyor ekranda fix ...bla bla hata veriyor vsc içinde hata bulmuyor ama oyuna başlamıyor sadece

    player kapsül kolaydır 2d kullanıyorum

  • Bir internet kullanıcısı B kullanıcısına yanıt

    hemen deniyorum hocam

  • Bir internet kullanıcısı B kullanıcısına yanıt

    yardımcı olurmusunuz yapmadım hangi kodalrı yazaman gerekli

  • rocketraccoon kullanıcısına yanıt

    Tek istedigin bazi platform oyunlarindaki gibi sagdan kaybolunca soldan ,soldan kaybolunca sagdan cikmasi karakteri kontrolune gerek yok onu yaptin değil mi?


    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Bir internet kullanıcısı B kullanıcısına yanıt
    Oyun tam haraket falan indirdiğim asseste hazır vardı tek sağdan girince soldan çıkmak soldan girince sağdan çıkmak yukarda arkadaşın verdiği kod çalışıyor ama oyundayken kendi kendine durduk yere biyerlere ışınlanıyor
  • Mesela RightLeftinVisible isminde bir c script oluştur bu yazdığım kodu yapıştır ve kaybolacak karaktere at istediğin şey olur.Buradaki 0.5 değeri transform.y -4 değeri transform.z.Bunlar önemli değil ben kodu yazarken basit bir küp üzerinde yazdım ve küpün konumu böyleydi.Bunları kendine göre ayarla.Mesela senin karakterin bazen zıplayacaksa oraya 0.5 değil de karakterin pozisyon y'sini gir.


    using UnityEngine;


    public class RightLeftinVisible : MonoBehaviour

    {

       void OnBecameInvisible()

       {

          transform.position = new Vector3(transform.position.x-transform.position.x-transform.position.x,0.5f,-4);


       }


    }

  • Bir internet kullanıcısı B kullanıcısına yanıt

    hocam kod çalışıyor evet ama hep aynı y değerinde çalışıyor beni karakter hiç durmadan yukarı zıplıyor böylece değer hiç durmadan değişiyor onu nasıl yapıcam ?

  • rocketraccoon kullanıcısına yanıt

           transform.position = new Vector3(transform.position.x-transform.position.x-transform.position.x,transform.position.y,-4);

  • Bir internet kullanıcısı B kullanıcısına yanıt

    sağolun hocam x değeriyle oynayına düzeldi şimdi doğru değri bulmaya çalışyıorum kolay gelsin

  • quote:

    Orijinalden alıntı: rocketraccoon

    telefon ekranları için verdiğin kod yığınını atınca oyun başlamıyor ekranda fix ...bla bla hata veriyor vsc içinde hata bulmuyor ama oyuna başlamıyor sadece

    player kapsül kolaydır 2d kullanıyorum

    Hatanın nedeni ; koymayı unutmuşum sonlarına. Düzelttim şimdi.


    < Bu ileti mobil sürüm kullanılarak atıldı >
  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.