Ziyaretçi Defteri


Tarkan için bir cevap yazın Cevabı iptal et


1.219 yanıt

  1. Emin Avatar
    Emin

    Hocam merhaba. Ben animator içerisindeki bir state’e dışarıdan duruma göre animation atamak istiyorum. Bu animation’ları “[SerializeField]” ile referans olarak elle ekleyip karakterimin seçimine göre istediğini oynatmasını sağlayacağım.

    1-) Bu animation’ları inspector penceresinde sürükle bırak yapamıyorum. Değişkeni “Animation” olarak yapınca olmuyor. GameObject mi yapayım? Bir problem olur mu?

    2-) Bu değişken olarak atadığım Animation’ları, State içerisindeki mevcut Animation ile yer değiştirmek istiyorum. Nasıl yapacağımı bulamadım. Yardımcı olur musunuz?

    1. yasirkula Avatar

      Değişken türünüz AnimationClip olmalı. Bunları Animator’e oyun esnasında verebilmek için, Animator Controller’ınızdan bir Animator Override Controller oluşturup Animator component’inize onu vermeniz lazım. Daha sonra Animator Override Controller’ın GetOverrides ve ApplyOverrides fonksiyonlarını çağırabilirsiniz.

  2. Ahmet Avatar
    Ahmet

    Merhaba,
    Yaptığım projelerde bir süre sonra fps drop yaşıyorum. Bir sahneyi 10-15 kere reload yapınca yada 10-15 bölüm ilerleyince fps drop başlıyor bu konuda ne yapmalıyım ?

  3. mehmet07 Avatar
    mehmet07

    Google play deki oyunların assetlerini kullansak bir sorun olur mu.

    1. yasirkula Avatar

      Başka oyunların asset’lerini izinsiz bir şekilde kullanmak sorun olur, o oyunun yapımcısı sizin oyununuzu keşfederse ve size dava açarsa haksız taraf siz olursunuz (avukat olmadığım için %100 kesin böyle olur demiyorum).

  4. wolf Avatar
    wolf

    Oyunumda 2d nesne var bu nesne sağa sola döndükçe karakter animasyonu da ona göre ilerleyebilir mi bu konu hakkında bilginiz var mı?

    1. yasirkula Avatar

      Biraz daha açar mısınız tam istediğiniz şeyi?

      1. wolf Avatar
        wolf

        2d nesne rotation z 0 dan 15’e değere ulaştığında animasyonun da 3. kareye gitmesini istiyorum sonra 2d nesne rotation z 15 den 0 gittiğinde animasyonun da 0. kareye gitmesini istiyorum. Bunu yapmanın bir yolu var mı ?

      2. yasirkula Avatar

        Rotation 7.5’de iken animasyon 2. karede sabit mi kalacak?

      3. wolf Avatar
        wolf

        Yok hayır kalmayak rotation 1 ise animasyon 1. karede olacak
        Rotation 2 ise animasyon 2. karede olacak

      4. yasirkula Avatar

        Rotation’la keyframe’i elle senkronize edecekseniz aklıma tek bir yöntem geliyor o da Animator’da o animasyonun Speed’ini 0 yapmak ve Update’te animator.PlayInFixedTime (veya animator.Play) fonksiyonu ile, mevcut rotation’a denk gelen keyframe’e elle geçiş yapmak.

      5. wolf Avatar
        wolf

        Cevaplarınız için teşekkür ederim

  5. wolf Avatar
    wolf

    12 karelik animasyonum var 3. kareye kadar ilerlemesini istiyorum sonra tekrar en başa geri dönsün.
    Bunu yapmanın bir yolu var mı ?

    1. yasirkula Avatar

      Aklıma 2 yöntem geliyor. En temizi, sadece o 3 karenin olduğu yeni bir AnimationClip kullanmak. Öbür yöntem ise, Animator Controller’a o animasyonu 2 kere sürükle-bırak yapmak ve bu 2 state arasında Condition’ı olmayan Transition’lar oluşturup bu Transition’ların Exit Time’larını 3. kareye denk gelecek şekilde değiştirmek ve bir yandan da Transition Duration’larını 0 ya da çok düşük bir değer yapmak.

      1. wolf Avatar
        wolf

        2. Yöntem karışık gibi geliyor ama 1. Yöntem daha iyi benim aklımda o vardı ama size danışmak istedim sağolun.

  6. ascacaxcasd Avatar
    ascacaxcasd

    Hocam oyunda sahneyi tekrar yüklediğimde ışıklandırma da kararmaya gidiliyor. Ne yapabilirim?

    1. yasirkula Avatar

      Window-Rendering-Lighting Settings’ten “Auto Generate”i kapatıp “Generate Lighting” yapmayı deneyebilirsiniz.

  7. mehmet07 Avatar
    mehmet07

    2d araba oyunu yapıyorum da araba bir tümsekten atladığında sürücünün sarsılmasını istiyorum bunu nasıl yaparım asset var ama 3d

    1. yasirkula Avatar

      Araba yarım saniye boyunca yere değmediyse tümsekten atlamış varsayıp karakteri sarsma kodunuzu çalıştırabilirsiniz.

  8. Emin Avatar
    Emin

    Hocam kolay gelsin. Ben oyunuma birden fazla karakter koymak istiyorum ancak kendim tasarım konusunda bilgili değilim internetten ücretsiz bulabildiklerimi oyunuma ekleyeceğim. Tam da burada sorum var size; mixamo dan mesela eklediğim karakterleri oradaki animasyonları kullanarak güzel bir şeyler çıkartabiliyorum ancak ben dışarıdan bir 3D model bulduğumda onları mixamodaki karakter-iskelet-animasyona entegre edebilir miyim bilmiyorum. Yani şöyle; mixamodan indirdiğim karakterlere animasyonlara dışardan bulduğum 3D modelleri monte edebilir miyim bir şekilde boyutuyla vs. oynayıp veya sizin önerebileceğiniz bir yöntem araştırma başlığı var mı? Birden fazla karakter koymayı düşünüyorum oyunuma ondan dolayı böyle bir durum şart ve animasyon olarakta mixamoda istediğim çoğu şey var o yüzden oradan temin edip süreci kolaylaştırmak istiyorum.

    1. yasirkula Avatar

      Unity’nin Humanoid sistemi bu yüzden var. Dışarıdan import ettiğiniz modeller Humanoid desteklediği sürece, Mixamo animasyonlarını çalıştırır. Yapmanız gereken, hem karakterin hem animasyonların Inspector’dan Rig’ini Humanoid yapmak ve hata olmadığından emin olmak.

  9. asdsadsadas Avatar
    asdsadsadas

    Selamun aleyküm hocam. Ben yapmaya çalıştığım labirent oyunumda bulunan altınları ve elmasları bir yerde toplamak istiyorum yani şöyle ki oyuncu 3 bölümden toplamda 120 altın 23 elmas topladı mesela bunların hepsini bir yerde göstermek için playerprefs kullanmayı düşündüm ama sonrasına Prefer Binary Serialization ‘ın daha güvenli olduğunu öğrendim ama Prefer Binary Serialization ‘ı anlamadım ne yaptığını. Ben bu durumda sizce PleyerPrefs mi kullanmalıyım yoksa Prefer Binary Serialization ‘ı mı kullanmalıyım?

    1. yasirkula Avatar

      Para gibi, hack’lenmesinin çok kolay olmamasını istediğiniz şeyler için binary serialization daha güvenilir. Bunun için “unity binary serialization” şeklinde arama yaparsanız, karşınıza çok sayıda kaynak çıkar.

  10. Sıddık Çiçek Avatar

    Selamun aleyküm hocam. Ben bu hatayı aldım da bana herhangi bir sıkıntı çıkartır mı? Ne yapabilirim?
    SerializedObject target has been destroyed.
    UnityEngine.StackTraceUtility:ExtractStackTrace ()
    Unity.Notifications.NotificationSettingsProvider:b__18_0 () (at C:/Users/carel/TheMazeGenerator/Library/PackageCache/com.unity.mobile.notifications@1.4.1/Editor/NotificationSettingsProvider.cs:70)
    UnityEditor.EditorApplication:Internal_CallGlobalEventHandler ()

    1. yasirkula Avatar

      Bilinen bir hataya benziyor, bence sizle alakalı değil. “unity mobile notifications SerializedObject target has been destroyed” şeklinde arama yaparak görebilirsiniz.

      1. Sıddık Çiçek Avatar
        Sıddık Çiçek

        tamamdır hocam teşekkür ederim

  11. Emin Avatar
    Emin

    Merhaba hocam. Ben Unity’de ekrana bir Image koyup, mouse ile o image’in üzerine tıkladığım zaman 3den geriye sayan bir sayaç yapmak istiyorum. Ancak mouse basılı iken image’n üzerinden mouse kaydırılırsa yani image sınırları dışına imleç kaydırılırsa veya parmak çekilirse iptal olması gerekiyor. Bunu normal kod olarak ekranın tümünde yazabiliyorum. Ancak, image üzerinde bu işlemi yapmayı beceremedim. Yardımcı olur musunuz? Teşekkürler.

      1. Emin Avatar
        Emin

        Hocam incelemiştim zaten ancak burada problem şu, image’in sınırları dışında da basmaya devam ettiğimde kod hâlâ işliyor. Ben image’e basılı tutup parmağımı resmin dışında basılı tutmaya devam etsem gene çalışıyor. Ben öyle olduğunda kodun durmasını istiyorum.

      2. yasirkula Avatar

        Dersin tamamını okudunuz mu çünkü oradaki IPointerExitHandler işe yarar diye düşünmüştüm ben?

      3. Emin Avatar
        Emin

        Teşekkürler hocam; kısa sürede yanıtlamanız, yardım sever oluşunuz ile gerçekten bizim gibi gençlere çok yardımcı oluyorsunuz. 🙂

  12. mehmet07 Avatar
    mehmet07

    Unity 2d esneyen sopa nasıl yapılır esnediğinde eski haline geri dönebilen örnek verecek olursak tankın anteni gibi bunun hakkında tutorial var mı cevaplarınız için teşekkür ederim.

    1. yasirkula Avatar

      Anten esnediğinde bile düz bir çizgi şeklinde olacak ve boyutu değişmeyecekse, bu bir Joint kullanarak mutlaka çözülebilir (ama hangi joint ve hangi ayarlarla bilmiyorum). Aksi taktirde, bu konuda benim bildiğim ücretsiz bir plugin yok, araştırmasını yapmadım. Siz araştırmasını “unity elastic rod” gibi bir aramayla yapabilirsiniz.

  13. Muhammet Avatar
    Muhammet

    Merhaba,
    Sahnede Rigidbody ile duran objelerim var, başka bir obje animasyon ile bu objelere random olarak çarpmasını istiyorum, fakat animasyonla hareket verdiğim obje ilk önce diğer objelerin içine giriyor anlık olarak sonra itliyor, bu iç içe geçme sorununu nasıl çözerim ?
    Teşekkürler.

    1. yasirkula Avatar

      Animation veya Animator kullanıyorsanız, obje fizik motorundan etkilenmeden verdiğiniz animasyonu takip eder. Objenizin çarptığı diğer objelerin daha gerçekçi tepki vermesini istiyorsanız, Animator’un “Update Mode”unu “Animate Physics” yapabilirsiniz. Aksi taktirde Animation/Animator kullanmak yerine normal Rigidbody fonksiyonlarını ve/veya NavMeshAgent fonksiyonlarını kullanmanız lazım.

  14. Muhammet Avatar
    Muhammet

    Merhaba, build hakkında bir sorum olacak,
    Arm 64, arm7 ve Net 4.0 seçiyorum build alırken fakat çok azda olsa bazı 64 ve 32 bit cihazlarda oyun açılmıyor bunun sebebi ne olabilir. neyi araştırmam gerekiyor çözmek için.
    Teşekkürler.

    1. yasirkula Avatar

      Belki oyununuz OpenGL 3.0 ve üstünü kullanıyordur ve o zaman OpenGL 2.0 cihazlarda (antika cihazlar) açılmıyordur. Belki logcat daha kesin cevap verebilir.

  15. vaadddii Avatar
    vaadddii

    Selamun aleyküm hocam. Ben canvas ‘ı prefab olarak ayarlayıp bu prefab ‘ı 2 farklı sahnede kullandım. Ama 3. sahne de artık kullanamaz oldum. Yani şöyle ki mesela pause canvası oluşturdum. Bu canvasta butonlar var. işlevselliğini filan hepsini ayarladım. ama çalışmaz oldular. Ne yapacağımı bilemedim kaç gündür.

    1. yasirkula Avatar

      Aleykümselam; 3. sahnenizde Event System olduğundan emin olun. Eğer zaten varsa, butonlara tıklayabiliyor musunuz? Tıklayınca bir hata alıyor musunuz? Tıklayınca çalışan kodun en başına Debug.Log yazınca konsolda görüyor musunuz?

      1. vaadddii Avatar
        vaadddii

        Event System yokmuş hocam. şimdi oldu çok sağolun. hata da vermiyordu kullanılmaz haldeydi. Sağolun hocam

      2. vaadddii Avatar
        vaadddii

        hocam şimdi de Event System de var hata da yok ama oyun oynandığı sırada Pause butonuna basılmıyor. Debug.Log(); ekledim denedim, ama işlemiyor buton. Ne yapabilirim?

      3. yasirkula Avatar

        Öncelikle EventSystem’î Hierarchy’den kapat aç yapmayı deneyin. İşe yaramazsa, tüm ekranı kaplayan görünmez bir UI objeniz var olabilir. EventSystem objesini seçerseniz Inspector’da imlecin altındaki obje hakkında bilgi edinebilirsiniz. Hangi obje tıklamalarınızı yiyor ona bakın.

      4. vaadddii Avatar
        vaadddii

        Hocam EventSystem ‘i açıp kapamak filan işe yaramadı ama Canvas ‘ın ayarını Screen Space – Camera olarak ayarlamıştım. Çalışmıyordu. Ama normal ayarına Screen Space – Overlay olarak ayalayınca çalışmaya başladı. Ben de anlamadım nası oldu bu iş ama teşekkür ederim hocam.

  16. Onur Avatar
    Onur

    Iyi günler, neredeyse 10 gündür uğraşıp bir türlü çözemediğim bir sorun var. Benim bir oyunum var, tek sahneden oluşuyor ve reklam eklemeye çalışıyorum.

    Oyunu oynaması 10-15 saniye sürüyor. Oyuncu ölünce Restart butonu ile tekrar oynamaya başlıyor. Restart butonunda sadece sahneyi yeniden yükleme kodu bulunuyor. Bu şekilde sahneyi yeniden yükleyerek tekrar oynuyor.

    Fakat oyun çok kısa sürdüğü için (bazı durumlarda daha banner yüklenmeden oyuncu ölüp oyunu tekrar başlatabiliyor) Admob koduma singleton eklemeye karar verdim. Admob koduma singleton eklediğimde oyuna ilk başlayınca banner dummyler oluşuyor. Buraya kadar bir sorun yok. Fakat oyuncu ölüpte restart butonuna basarsa, banner dummyler kayboluyor. Çünkü kodum singleton ve bannerı sadece bir defa request ediyorum. Banner dummyler hiyerarşideki DontDestroyOnLoad objesinin altında gözükmüyor, sadece Admob kodu orada kalıyor ve bu yüzden kayboluyorlar. Fakat Android telefonda test ettiğimde bannerlar kaybolmuyor(Zaten bende bannerların kaybolmamasını istiyorum). Yani Android telefonda problemsiz çalışıyor gibi.

    Kod singleton olduğunda, RequestBanner fonksiyonunu bir defa çağırmam yeterli midir? Yani oyuna başlayınca ilk oluşan Bannerdummylerin, Sahneyi yeniden yükleme kodu ile sahneyi yeniden başlattığımda kaybolması normal midir? Yoksa orada da gözükmesi gerekli mi ?

    Sorun dediğim gibi, oluşan banner dummylerin DontDestroyOnLoad un altında gözükmemesi. Belki sadece editorde bu şekilde oluyor. Fakat telefonda, direk reklam geldiği için oyunun en tepesinde kalıp, müdahele edilmezse de oyun sonuna kadar, sahne geçişlerinde bile kalıyor. Umarım açıklayabilmişimdir.

    1. yasirkula Avatar

      Bu sorun sadece editörde olur, bence bir değişiklik yapmanız gerekmiyor. ShowBanner fonksiyonunu 1 kere çağırdıktan sonra, HideBanner’ı çağırana kadar banner hep ekranda gözükür, sahne geçişlerinden etkilenmez (editör harici).

      1. Onur Avatar
        Onur

        Cevap için çok teşekkürler. Yani bu sadece editörde oluyor. Sadece kafamdaki soru işaretini gidermek adına bir sorum daha olacak.

        O zaman, ben 20 sahnelik bir oyun yaptım diyelim ve sadece ilk sahnesine Admob kodu koydum (singletonsuz) ve bu ilk sahneden banner request edip gösterttim. Diğer sahnelerde admob kodu olmasada telefona atarsam ilk sahnede oluştuğundan telefonda o banneri her sahnede göreceğim. Fakat editörde kod ilk sahnede olduğundan,sadece ilk sahnede göreceğim.

        Kodu eğer singleton yapsam yine aynı şekilde olacak. Editörde ilk sahnede, telefonda her sahnede banner oluşacak.

        Fakat singletonsuz her sahneye koysam bu sefer telefonda da editorde de her sahnede görebileceğim. Sorular saçma olabilir kusura bakmayın ama kafamda oturması için soruyorum, 1 haftadır bu sorunla uğraşıyorum.

      2. yasirkula Avatar

        Yaptığınız varsayımların hepsi bence de doğru. AdMob editördeki reklam objesini DontDestroyOnLoad yapsaymış bu tarz bir sorun hiç olmazmış. İleride belki düzeltirler.

  17. Ali Avatar
    Ali

    Merhaba, aşamadığım bir sorunum var:
    sahnede 2 tane 3d obje var ikisindede aynı script var.
    iki top çarpışınca tagları aynıysa başka bir scripte erişerek yeni bir obje oluşturmak istiyorum.
    ancak ikisindede OnCollisionEnter fonksiyonu çalıştığı için diğer scripte iki kere erişiyor ve 2 tane yeni obje oluşuyor.
    coroutine kullanarak yapmaya çalıştım fakat bu seferde aynı anda olan diğer çarpışmalarda obje oluşturamadım.
    bu sorunu nasıl aşarım ?

    (oyun türü: 3D 2048)
    teşekkür ederim.

    1. yasirkula Avatar

      OnCollisionEnter’da gameObject.GetInstanceID() < collision.gameObject.GetInstanceID() koşulu true ise yeni objeyi oluşturabilirsiniz. Her objenin GetInstanceID()’si farklı bir int döndürür ve bu değerleri kıyaslayarak, kodun sadece bir objede çalışmasını sağlayabilirsiniz.

  18. MR. Sızz Avatar
    MR. Sızz

    Selamin aleykum Yasir Bey, sizin görüşünüzü almak istiyorum bir konuda. Ben Unity üzerinden örnek amaçlı 2 tane oyun yaptım. Ardından şimdi bir başka oyun üzerinde uğraşmaktayım. Sorum şu olacak. Sizce örnek oyun devam ederek sadece kullanılan oyun kodlarını mı anlamaya çalışmalıyım yoksa Vector3 nedir ne değildir gibi araştırmalar yapıp, bu araştırmaları not alıp, aldığım notlarla kendi oyunumu yapmaya çalışmak mı daha faydalı olur?

    1. yasirkula Avatar

      Bence ikisini de yapabilirsiniz. İzlediğiniz video derslerde öğrendiğiniz şeyleri not alıp, derste çok açıklanmayan kodları kendi başınıza araştırabilirsiniz. Aldığınız notları ara ara yeniden okumayı es geçmeyin, başlangıçta bu epey yardımcı oluyor. Ama eğer 2. seçenekten kastınız, Unity’nin dokümantasyonunu açıp tüm class’ların üzerinden tek tek geçmekse, bence öyle bir şey yapmayın. O class’ları yeri geldiğinde zaten öğrenirsiniz (ya takip ettiğiniz derste o class kullanılır ya da yaşadığınız bir problemi google’da aratınca o sınıfa denk gelirsiniz).

      1. MR. Sızz Avatar
        MR. Sızz

        Anladım Yasir Bey, teşekkür ederim hayırlı akşamlar.

  19. Sıddık Çiçek Avatar
    Sıddık Çiçek

    Selamun aleyküm hocam ben labirent oyununda küreyi player olarak kullanıyorum. Kamerayı player ‘ı takip edecek şekilde ayarladım ama kamera tek açıdan bakıyor. Ama player sağa döndüğünde kamera da aynı yönde dönsün istiyorum. Nasıl yapabilirim?

    1. yasirkula Avatar

      Player’ın gittiği yönü “Vector3 playerYon” değişkeninde tutuyorsunuz diyelim. Bu durumda, playerYon’ün değeri Vector3.zero olmadığı sürece, “Quaternion.LookRotation(playerYon).eulerAngles.y” ile kameranın Y ekseninde alması gerektiği açıyı bulabilirsiniz.

      1. Sıddık Çiçek Avatar

        Hocam ben bu yazdığınız kodu
        [SerializeField]
        private GameObject kamera;

        [SerializeField]
        private GameObject player;

        private Vector3 mesafemiz;
        void Start()
        {
        mesafemiz = kamera.transform.position – player.transform.position;
        }

        void Update()
        {
        kamera.transform.position = player.transform.position + mesafemiz;
        }
        buraya nasıl uyarlayacağım. Çünkü kullanmış olduğunuz kod ile ilgili bir bilgim yok.

      2. yasirkula Avatar

        Öncelikle “Vector3 playerYon” değişkenini bu script’e bir şekilde yedirmeniz lazım. Şu anda script player’ın gittiği yönü bilmiyor.

      3. sıddık çiçek Avatar

        hımm tamam hocam sağolun.

  20. akncn57A Avatar

    Hocam Unity için bir forum oluşturma planınız var mı ? Gerçekten çok güzel olur. Yada böyle bir platform bilişyor musunuz ? Amatürkçe olursa iyi olur.

    1. yasirkula Avatar

      Forum planım yok çünkü bence yeterince Türkçe forum var. “oyun programlama forum” veya “unity programlama forum” şeklinde aratırsanız, bu forumlardan bazılarını bulabilirsiniz (ben forumların hiçbirinde aktif üye değilim o yüzden şahsen önerebileceğim bir forum maalesef yok).

  21. sıddık çiçek Avatar

    Hocam bir şey daha soracağım. Unity ‘i 3d olarak kullanırken yanlışlıkla 2d olarak ayarlamış oldum klavye üzerinden nasıl düzeltebilirim ?

    1. yasirkula Avatar

      Yanlış hatırlamıyorsam Edit-Project Settings-Editor’den düzeltebilirsiniz.

      1. sıddık çiçek Avatar

        tamamdır hocam sağolun

  22. Igrahiga Avatar
    Igrahiga

    Merhaba Yasir! Uzun yillardir senin sitenin takipcisiyim. Lutfen daha fazla ders icerikleri getir. Oldukca iyi anlamli ve bilgilendirici. Yeni dersleri sabirsizlikla bekliyorum. Mesela unity ile online/multiplayer oyun yapimi…
    Sunucu programlama gibi

    1. yasirkula Avatar

      İlginize teşekkür ederim. Online oyun ile ilgili bir içerik yakın zamanda beklemeyin çünkü bu konuda kendimi geliştirmedim, yakın zamanda da geliştireceğimi sanmıyorum. Eskiden Numan Kaan Karataş’ın tam bu konularda dersleri vardı ama sonra kaldırdı sanırım. Bu konuda yabancı dersler izlemeye açıksanız, YouTube’da çok sayıda eğitim bulabilirsiniz.

  23. sıddık çiçek Avatar

    Selamun aleyküm Yasir hocam. Ben
    Animator animator;

    void Start()
    {
    animator = GetComponent();
    }

    void Update()
    {
    if(Input.GetKeyDown(KeyCode.W))
    {
    animator.SetTrigger(“YurumeyeBasla”);
    }
    if(Input.GetKeyUp(KeyCode.W))
    {
    animator.SetTrigger(“YurumeyiBitir”);
    }
    bu kodlar ile animasyon oynatmaya çalışıyorum. oluyor da ama bunu yaptığımda karakter olduğu yerde yürümekte. Benim asıl amacım ise

    public int speed = 10;

    Rigidbody rigb;

    void Start()
    {
    rigb = GetComponent();
    }

    void FixedUpdate()
    {
    float moveHorz = Input.GetAxis(“Horizontal”);

    float moveVert = Input.GetAxis(“Vertical”);

    Vector3 movement = new Vector3(moveHorz, 0.0f, moveVert);
    rigb.AddForce(movement * speed);
    }
    bu kodu kullandığımda GameObje’ nin hareketini sağlıyorum ama bunu animasyon karakterime uygulamak ve normal bir şekilde W ‘ye basıldığında ilerlemesini sağlamak istiyorum. Sizce ne yapabilirim?

    1. yasirkula Avatar

      İlk attığınız kod animasyonu, ikinci kod da hareketi sağlıyor gibi duruyor. Bunları beraber kullanınca sorun nedir?

      1. sıddık çiçek Avatar

        beraber kullandığımda animasyonun hareket hızı ile uyuşmuyor. 2. kodu GameObject ‘e eklediğimde gayet güzel hareket ediyor.

      2. yasirkula Avatar

        Animasyonun hareket hızı ile mükemmel uyuşması için Humanoid rig ve Root Motion animasyonlar kullanmanız lazım. Bu durumda karakter script tarafından değil animasyon tarafından hareket ettirilir. Aksi taktirde hareket kodunuzun Speed değişkenini değiştirmeyi veya Rigidbody.AddForce yerine başka bir metot ile karakteri hareket ettirmeyi düşünebilirsiniz: https://www.youtube.com/watch?v=e94KggaEAr4

      3. sıddık çiçek Avatar

        Yardımınız için teşekkür ederim hocam sağolun.

  24. duman61 Avatar

    Merhaba Yasir Hocam android oyunuma admob ekledim, UnityEditorde hiç sorun yok ama build alıp telefonda deneyince bu hatayı alıyorum:

    AndroidJavaException: java.lang.ClassNotFoundException: com.google.unity.ads.UnityInterstitialAdCallback

    FORCE RESOLVE denedim ama işe yaramıyor ne yapabilirim acaba

    1. duman61 Avatar

      Sorun nasıl olduğunu anlamadığım bir şekilde çözüldü ama şimdi de test id lerini kullanmama rağmen load error code 3 hatası alıyorum 😦

      1. yasirkula Avatar

        “admob error 3” şeklinde arama yapmanız lazım ben maalesef bilmiyorum.

  25. Erdinç Avatar
    Erdinç

    Merhaba Yasir Bey, Unity ile hazırladığım oyuna AdMob ile reklam ekledim ancak APK’yı Play Console yüklediğim zaman “APK’nız veya Android App Bundle’ınız, gizlilik politikası gerektiren izinler kullanıyor: (android.permission.READ_PHONE_STATE). hatası alıyorum. Bir kaç yıl önce de reklam eklemiştim ama böyle bir şey çıkmamıştı. Yapabileceğim bir şey var mı?

    1. yasirkula Avatar

      Başka bir plugin’den kaynaklandığını düşünüyorum, AdMob’un bu izni eklediğini daha önce görmedim. Ayrıca bkz. https://yasirkula.com/2018/02/28/unity-android-read_phone_state-izni-hakkinda/

      1. Erdinç Avatar
        Erdinç

        İzin konusunu düzelttim teşekkür ederim.

  26. Barış Biltekin Avatar
    Barış Biltekin

    Yasir Bey, Unity kullanarak bir tarım uygulaması yapmayı düşünüyorum fakat doğru yöntemi, algoritmayı bir türlü bulamadım. Çünkü yapmayı düşündüğüm uygulama çok hassas gerçek dünya konum bilgisine ihtiyaç duyuyor ve yanılma payı 1m veya daha az olması gerekiyor. (GPS kullanmayı düşündüm ama GPS ‘in 15-20m yanılma payı olduğunu okudum.)

    Yapmayı düşündüğüm uygulama bir örnekle açıklamak gerekirse şöyle çalışıyor. Misal bir çiftçi içinde 1.000 adet meyve ağacı bulunan bahçesinde dolaşıyor. 50 numaralı ağacın yanında durup android cihazındaki uygulamadan o ağaç ile ilgili gerekli verilere ulaşıyor.

    Uygulama çiftçinin 50. ağacın yanında durduğunu nasıl tespit edebilir?

    1. yasirkula Avatar

      Maalesef benim teknik bilgimin tamamen dışında kalıyor, bilgim yok :/

  27. JEEMSilver Avatar
    JEEMSilver

    Yasir Bey selamlar 2 sorum olacak;

    1)

    Mobil oyunumda ekrana şu kodlar ile dokunarak player objemi hareket ettirebiliyorum.

    private void Update()
    {
    if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved)
    {
    Vector2 touchPosition = Input.GetTouch(0).deltaPosition;
    transform.Translate(touchPosition.x * movementSpeed * Time.deltaTime, touchPosition.y * movementSpeed * Time.deltaTime, 0);
    }
    }

    Sorun şu ki her telefonda farklı farklı çalışıyor. Benim telefonumda akıcı iken Başka telefonlarda parmağımı 3-4 kere kaydırarak hareket ettirmem gerekiyor. Sebebi ne olabilir?

    2)
    Farklı farklı telefonlarda kameranın gösterdiği alan değişiyor. Kendi telefonumda herşey normalken başka telefonda sanki Background image ler zoom yapılmış gibi. Kod ile düzelir denildi ama hiç bir fikrim yok.

    Çok teşekkür ederim

    1. yasirkula Avatar

      1) Ekran çözünürlüklerine göre değişir. Sizin telefonunuzun ekran çözünürlüğü yüksekse, parmağınızı biraz kaydırarak 100 piksel touchPosition elde ederken, düşük çözünürlüklü cihazlarda aynı miktar parmak kaydırmanız 50 piksele denk gelebilir. Her cihazda aynı olması için, deltaPosition’ı Screen.width’e bölebilirsiniz. Akabinde sonucu büyük bir sayı ile çarpın (deneme-yanılma ile sayıya karar verebilirsiniz).
      2) Normalde kameraların dikey görüş alanı sabittir ama siz yatay görüş alanını sabit tutmak istiyor olabilirsiniz. O zaman: https://yasirkula.com/2020/09/12/unity-cerez-ders-kameranin-yatay-gorus-alanini-sabitlemek/

  28. NF Avatar
    NF

    İyi pazarlar,
    Bir konuda fikrinize ihtiyacım var.

    İki takımlı bir multiplayer proje oluşturdum,daha önce de sormuştum takımları sırasıyla kırmızı ve mavi gibi atacak o kısmı yaptım.Şimdi ise mavi takımda veya kırmızı takımda puan alan oyuncuların skorlarının toplamını herkesin görmesini sağlayacak bir UI oluşturmak istiyorum bunu nasıl yapabilirim.Kırmızı takım 5 puan,Mavi takım 7 puan vs… takım oyuncuları puan aldıkça o arayüze eklenecek bunu bütün oyuncular görecek(host,client).

    Teşekkürler.

    1. yasirkula Avatar

      Skor olduğunda mutlaka server’da bir kod çalıştırıyorsunuzdur. Server’da aynı zamanda 2 adet int tutun, bunlar iki takımın skoru olsun. Server’daki skor kodu çalıştığında, ilgili takımın int’ini 1 artırın ve bu değişikliği tüm oyunculara bildirin. Oyuncular da UI’larındaki skoru o int ile değiştirsinler.

  29. Enes Avatar
    Enes

    İyi akşamlar,
    Multiplayer bağlantıda sırasıyla giriş yapan oyuncuların birini bir takıma(mavi takım) birini bir takıma(kırmızı takım) atama işlemi yapmak için nasıl bir yol izlemeliyim sizce,desteğinizi rica edebilir miyim ?

    1.Oyuncu(Host)Mavi Takım – 2.Oyuncu(Client)Kırmızı Takım – 3.Oyuncu(Client)Mavi Takım – 4.Oyuncu(Client) Kırmızı Takım…gibi

    Teşekkürler.

    1. yasirkula Avatar

      Teknik anlamda yardımcı olamam çünkü multiplayer bildiğim bir şey değil. Problemin özünde yapmanız gereken şey, (oyuncu sayısı % 2)’nin değeri 1 ise oyuncuyu mavi takıma vermek, yoksa kırmızı takıma vermek.

  30. Yasin Yürek Avatar

    Hocam merhaba, 2D bir projede karakterimin joystickten elimizi çektikten sonra hafif süzülmesini istediğim için rb.addforce kullandım. Rigidbody2D üzerinde gerekli lineerdrag – mass ayarlarınıda yaptım. gravity = 0 , oyunumda yerçekimi yok. İstediğim hareketi elde ettim. Kod aşağıdaki gibi.

    Vector2 force = new Vector2 (joystick.Horizontal() * joystickSpeed, joystick.Vertical() *joystickSpeed);
    rb.AddForce(force);

    Sorun şu ki bazen oyunu başlattığımda aşırı derecede hızlı hareket ediyor. Yaptığım ayarlar yok sayılıp sanki bir anda karakterin hızı 10 iken bir anda 50 yapılmış gibi oluyor. Sebebi ne olabilir? Şimdiden çok teşekkür ederim hocam.

    1. yasirkula Avatar

      Oyunun başında velocity’i ve angularVelocity’i Vector3.zero yapmayı deneyebilirsiniz.

      1. Yasin Yürek Avatar
        Yasin Yürek

        Malesef hocam işe yaramadı. Sorun sadece oyun başladığında değil yanlış belirttim yukarıda sanırım. Oyunu başlattım hareket normal. Sonra oyun çalışır vaziyette iken herhangi bir pencereye tıkladım (örn: inspector) sonra tekrar oyun penceresine tıklayıp hareket ettirdiğimde karakter aşırı hızlanıyor. Apk da bu sorun oyunu aşağı indirip geri açıldığında oluyor.

      2. yasirkula Avatar

        Sonsuza kadar mı çok hızlı oluyor birkaç saniye sonra düzeliyor mu? Joystick’ten parmağınızı çekmeden oyunu aşağı alınca mı böyle oluyor yoksa hiçbir yere dokunmazken oyunu aşağı alınca da mı? Hiçbir yere dokunmazken aşağı alınca da oluyorsa, aşağı aldığınız oyunu tekrar açınca karakter kendiliğinden mi jet gibi gitmeye başlıyor yoksa sadece joysticki hareket ettirince mi jet gibi gitmeye başlıyor?

    2. Yasin Yürek Avatar

      Hocam yine başka bir pencereye tıklayıp geri dönünce normale dönüyor. Başka bir pencereye tıklamazsak hep hızlı kalıyor. Hiçbir yere dokunmazken oyunu aşağı alınca oluyor. Karakter kendiliğinden hareket etmiyor hocam. Sadece joystick i hareket ettirince jet gibi oluyor.

      1. yasirkula Avatar

        Projenizde OnApplicationPause ve OnApplicationFocus fonksiyonlarının kullanıldığı her yeri kontrol edin. Time.timeScale veya Time.fixedDeltaTime’ın değerlerini değiştirdiğiniz her yeri de kontrol edin, gerekirse bu değerleri Debug.Log ile yazıp konsoldan kontrol edin. Onun haricinde aklıma bir şey gelmiyor maalesef.

      2. Yasin Yürek Avatar

        Anladım hocam. Çok teşekkür ederim.

  31. eYYUP Avatar
    eYYUP

    HOCAM VERİ TABANI OLARAK HANGİ PROGRAMI ÖNERİRSİNİZ. UNİTY MYSQL DESTEĞİ DEVAM EDİYOR MU

    1. yasirkula Avatar

      Hiç bilmiyorum veri tabanı ile çalışmadım.

      1. eyyup Avatar
        eyyup

        teşekkürler

  32. Emre Avatar
    Emre

    Merhaba hocam. Script’imin içinde ArrayUtility.Contains(correctAnswers, slots[i].text) şeklinde kodum var. Bu kodla yapmaya çalıştığım şey, slots[i].text’in correctAnswers array’ının içinde olup olmadığını kontrol ediyorum.
    Gayette çalışıyor fakat build alırken The name ‘ArrayUtility’ does not exist in the current context şeklinde hata alıyorum araştırdığımda ArrayUtuility’nin Editor için kullanıldığını öğrendim.
    Yapmaya çalıştığım şey’i başka ne gibi yollarla yapabilirim? tavsiyelerinize ihtiyacım var.

    1. yasirkula Avatar

      ArrayUtility sınıfı UnityEditor namespace’inde gözüküyor. O namespace sadece editörde çalışır, build alırken çalışmaz. System.Array.IndexOf(correctAnswers, slots[i].text) >= 0 kodunu deneyin.

      1. Emre Avatar
        Emre

        Teşekkür ederim hocam. İşe yaradı 🙂

  33. kmumcu Avatar
    kmumcu

    Yasir Hocam Merhaba,

    Öncelikle verdiğiniz bilgiler için teşekkür ederim. Oyun yazılımcılığında yeniyim ve yazılarınızdan çok faydalandım.

    Yakın zamanda bir oyun yayınladım. Reklam olarak Admob kullanmıştım ancak hesabım askıya alındı. Özellikle ödüllü reklamlardan kazanılan hakların devam edebilmesi ve kullanıcıların sorun yaşamaması için Unity ads ile değiştirmeye karar verdim.
    Unity Ads’i eklerken sizin yönergelerinizden de faydalandım. Test reklamı olarak deneyip sorun olmadığını görünce, Test modunu false yapıp editör menüsündeki test kutucuğunun da seçili olmadığına emin olduktan sonra güncelleme yaparak yayınladım ancak halen test reklamı gösteriliyor. Nerede yanlış yapmış olabilirim? Yorum yapabilirseniz sevinirim.

    GameID yi ve test modunun doğru olduğunu birkaç kez kontrol ettim.
    Ancak Ads SDK için package manager dan son sürümü (SDK 3.7.1) güncellediğimde;

    GUID [4ac5b631b96354c75a98bb07d468da16] for asset ‘Packages/com.unity.ads/Plugins/iOS/UnityAds.framework/Headers/UADSInAppPurchaseMetaData.h’ conflicts with:
    ‘Assets/Plugins/iOS/UnityAds.framework/Headers/UADSInAppPurchaseMetaData.h’ (current owner)
    We can’t assign a new GUID because the asset is in an immutable folder. The asset will be ignored.

    Gibi çok sayıda hata alıyorum. Paketi silip asset Storedan SDK3.6.0 ı indirip kullandığımda bu hatalar olmuyor.
    Oyunu Asset Store’dan indirdiğim SDK ile derledim. SDK dan dolayı sorun yaşamış olabilir miyim?

    1. yasirkula Avatar

      Unity Ads’i ya Asset Store’dan ya da Package Manager’dan import edin. İkisinden aynı anda import edince bahsettiğiniz hataları alırsınız. Package Manager’dan indirmeden önce, Asset Store’dan indirdiğiniz halini silmeniz lazım. Sorun bundan değildir bence ama bir süre beklemenize rağmen sıkıntı devam ediyorsa ve gerçekten de attığınız sürümde test modunun kapalı olduğundan %100 eminseniz maalesef benim aklıma bir şey gelmiyor 😦 İsterseniz Unity Dashboard’dan yeni bir project ve yeni reklam kimlikleri oluşturup onları kullanarak build alın.

      1. kmumcu Avatar
        kmumcu

        Yorumunuz için teşekkürler,
        Aslında ikisini aynı anda import etmiyorum Asset storedan indirdiğim paketi sildikten sonra package managerdan yüklüyorum. Ama bahsettiğim hataları alıyorum. Ama ilginç tarafı hataları console dan sildikten sonra build ederken ya da oyunu çalıştırırken tekrar almıyorum. Unity ilk açıldığında veya başka bir programa geçip tekrar unity ekranına geri geldiğimde hatalar geliyor.

      2. yasirkula Avatar

        Window-Services’ta Ads açıksa kapatın.

  34. mehmet07 Avatar
    mehmet07

    Unity’de Ekran Dışı Hedef Gösterge Oku nasıl yapılır

      1. mehmet07 Avatar
        mehmet07

        3B dünya konumunu bir ekran konumuna nasıl dönüştürürüz ?

  35. Junior Developer Avatar
    Junior Developer

    Merhaba Yasir Bey,

    Öncelikle içerikleriniz çok kaliteli tebrik ederim. != null kullanımı hakkında bir yazınız var mı? null hakkında pek bilgi bulamıyorum. Kafama oturmadı. 🙂 Bu işlerde yeniyim. Şimdiden teşekkürler

    1. yasirkula Avatar

      “!= null”, bir objenin null olup olmadığını kontrol ediyor. Değeri hiç verilmemiş değişkenler null olurlar, elle değeri null yapılan değişkenler null olurlar ve Unity’e özel olarak, Destroy ile yok edilen veya sahne geçişinde otomatik olarak yok olan objeleri depolayan değişkenler null olurlar.

      1. acespoly1 Avatar
        acespoly1

        Merhaba Yasir Bey, kusura bakmayın nereye yazacağımı bilemedim. Ben unity de bir oyun yaptım ve play console ‘a attım. Bazı hatalar var, rapor olarak göründü. Düzeltme yaptım, fakat oyunu silemiyorum, aktif de olmuyor. Düzeltmeyi de atamıyorum. 3 gündür hala incelemede diyor. Ne yapabilirim? Teşekkür ederim.

      2. yasirkula Avatar

        Oyunların ilk kabulü 1 haftaya kadar sürebiliyor o yüzden en azından 1 hafta beklemenizi öneririm. Belki bazı güncellemeler de artık o kadar uzun sürüyordur. Oyun incelemedeyken şuradaki “Mevcut Bir Uygulamayı Güncellemek” adımları ile güncellemek işe yaramıyorsa, maalesef bir bilgim yok: https://yasirkula.com/2014/04/17/unity-android-oyununuzu-google-playe-yuklemek/

  36. Arif Cem Selçuk Avatar

    Yasir Bey Merhaba,

    Level sonundaki Boss’u yendiğimde tetiklenen finisih animasyonunda playerin o anki kaldığı pozisyondan (Ör: -2.48,3.25,0) 0,0,0 pozisyonuna gidip birkaç animasyon yapıp level complete ekranını yazdırmak istiyorum. Fakat animasyondan player’ı 2 saniye sonra 0,0,0 pozisyonuna aldıktan sonra play yapınca playeri hiç bir şekilde scene ekranında hareket ettiremiyorum. Boss’u yendikten sonra finish animasyonu çalıştığı için kendi kendine 0,0,0 pozisyonuna gidiyor. Fakat finish animasyonu tetiklenmeden öncesinde de playeri hareket ettiremiyorum.

    Sebebi ne olabilir sizce?

    1. yasirkula Avatar

      Biraz karmaşık anlatmışsınız tam anlamamış olabilirim. Eğer animasyonda player’ın pozisyonu 0,0,0 olarak keyframe’lendiyse, o zaman animasyon player’ı oraya zıplatır. O transform.position keyframe’ini silerseniz düzelir. Ya da belki başka bir kod Update’te pozisyonu 0’a ayarlıyordur bilmiyorum.

      1. Arif Cem Selçuk Avatar

        Haklsınız karışık olmuş şöyle anlatayım;

        Player karakterim Bossu öldürdüğü anda hangi koordinatta olursa olsun (atıyorum -2.5,-3.5,0) öldürdükten sonra 0,0,0 pozisyonuna nasıl getirebilirim?

        Bunu yapması için animasyonda finish klibi oluşturdum ve bu klip bool ile boss öldükten sonra true yaparak tetiklenerek çalışmasına rağmen unity de play tuşuna basara basmaz daha boss bile ortada yokken karakteri hiç hareket ettiremiyorum.

        Apply Motion diye bir tuş var bunu tikli hale getirince karakter hareket etmeye başlıyor fakat o zamanda 0,0,0 pozisyonuna gitmiyor.

      2. yasirkula Avatar

        transform.position’ı Vector3.zero’ya eşitlemeyi denediniz mi?

  37. efe Avatar
    efe

    Yasir Hocam selamlar,

    Hocam yaklaşık 1 aydır Google Aile politikalarıyla uğraşıyorum internette bir bir çözüm bulamadım.
    Acaba siz yardımcı olabilir misiniz ?

    Hocam yaptığım uygulama herhangi bir bilgi istemiyor ve toplamıyor fakat yinede politika sorunu yaşıyorum. Google sorunu bu şekilde açıklıyor… bu sorunu nasıl çözebiliriz. Çoğu kaynakta Unity ile ilgili olduğu yazıyor ama bir cevap yok.

    ”İnceleme sırasında, uygulamanızın Aile Politikası Gereksinimlerini ihlal ettiğini tespit ettik . Uygulamanızın çocuklardan kişisel ve hassas bilgiler topladığını tespit ettik, ancak bu, Play Console’unuzun Hedef kitle ve içerik bölümünde açıklanmadı .

    Hedef kitlede çocukları içeren uygulamalar, uygulamanızda aranan veya kullanılan API’ler ve SDK’lar dahil olmak üzere, uygulamanızdaki tüm kişisel ve hassas bilgilerin toplanmasını ifşa etmenizi gerektiren tüm Aile Politikası gereksinimlerine uymalıdır. Daha fazla ayrıntı ve yaygın ihlal örnekleri için Aile Politikası Gereksinimleri sayfasını okuyabilirsiniz .

    Örneğin, uygulamanızın aşağıdaki kişisel ve hassas bilgileri topladığını tespit ettik:

    Reklam kimliği
    Android Cihaz Kimliği’

    1. yasirkula Avatar

      Reklam veya analitik SDK’leri bu sorunu çıkarıyordur. Bu sorunla tam olarak nasıl başa çıkılır maalesef bilmiyorum, bilmediğimden atıp sallamak istemiyorum. Facebook’taki oyun geliştirici gruplarında veya oyun geliştirici forumlarında bu soruyu sormanızı öneririm (google’dan çözümü bulamazsanız).

  38. Arif Cem Selçuk Avatar

    Merhaba,

    2D Shooter oyunu yapıyorum ve şu şekilde sürekli ateş etmesini tanımladım;

    public float bulletRespawnTime;

    void Start()
    {
    StartCoroutine(ShootDelay());
    }

    IEnumerator ShootDelay()
    {
    while (true)
    {
    yield return new WaitForSeconds(bulletRespawnTime);
    Shoot();
    }
    }

    Fakat düşmanlardan random çıkan ateş hızı sıklığını arttırıcı bir boost ile trigger ettirdiğimde, trigger içerisine yazdığım yeni bulletRespawnTime değeri çalışmıyor. Sürekli start’ta verdiğim değer olarak kalıyor. Player, Boost’a trigger ettiğinde bu değeri nasıl değiştirebilirim? hatam nerededir.

    Teşekkürler

    1. yasirkula Avatar

      Boost script’inden, Player script’indeki bulletRespawnTime’ı değiştirmeniz lazım: https://yasirkula.com/2019/07/27/unity-bir-scriptten-baska-bir-scriptteki-degiskene-ulasmak

      1. Arif Cem Selçuk Avatar

        private void OnTriggerEnter2D(Collider2D collision)
        {
        if (collision.tag == “Player”)
        {
        PlayerManager.instance.bulletRespawnTime = 0.15f;
        }
        }

        0.15f saniye aralıklarla shoot fonksiyonunu çalıştırması için Boost scriptine üstteki triggerı yazdım fakat maalesef oyun başlamadan önceki girdiğim değer sabit kalıyor. Start fonksiyonunda Coroutine olarak çalışan bir değişken acaba değiştirelemiyor mu? Öyle birşey var mı ?

      2. yasirkula Avatar

        Sahnede birden çok Player objesi olabilir mi? Player’ın tag’inin Player olduğuna emin misiniz? “if” koşulunun içine Debug.Log koyunca o log konsolda gözüküyor mu? Değiştirdiğiniz Bullet Respawn Time’ı Player’ı seçince Inspector’da görüyor musunuz?

      3. Arif Cem Selçuk Avatar

        Çok enteresan ya 2 gündür çözemiyorum.

        Triggerin içerisine başka şeyler yazıyorum yada Debug.Log alıyorum sorunsuz çalışıyor. Playe demeden önce inspectorde atadığım değer neyse play dedikten sonra o sabit kalıyor. Kendim manuel değeri bile oynayamıyorum.

        çok enteresan ya. çözemiyorum yardım please.

      4. yasirkula Avatar

        Değeri manuel değiştiremiyorsanız o değer mutlaka bir script’in Update’inde resetleniyordur. Aksi taktirde Inspector’dan değiştirememeniz mümkün değil.

      5. Arif Cem Selçuk Avatar

        Haklıymışsınız. Gerçekten çok teşekkürler. Valla böyle bir sayfanız iyi var. Teşekkürler. Daha öncede faydanız dokunmuştu propertylerde. Saolun

  39. Ali Avatar
    Ali

    Merhaba, iphone5s ve iPhone 6 da xcode da bu crash geliyor. Profiler dersinizi okuyarak tavsiye ettiğiniz optimizasyonları yaptım fakat garbage collector çok az fark etti. Sorum şu, hata mesajındaki 650 mb, neyi temsil ediyor ? kodlar mı grafikleri mi vs… bunu çözmem içi nereye bakmam gerek onu anlamak için soruyorum.
    Notlar;
    -Oyun 2D,
    -8k spritesheetler barındırıyor.
    -next level geçişlerinde alıyorum bu hatayı her zaman yapmıyor.
    -iphone 6 sonrası hiç bir cihazda bu sorun olmadı.

    Job.Worker 0 (9): EXC_RESOURCE RESOURCE_TYPE_MEMORY (limit=650 MB, unused=0x0)

    1. yasirkula Avatar

      Unity’nin Memory Profiler paketini kullanabilirsiniz.

      1. Ali Avatar
        Ali

        Teşekkür ederim, spritesheet tarafında sorun yaşıyorum gibi duruyor. düşük cihazlarda çözünürlüklerini düşürebilir miyim? yani 5s ve 6 da 2k çözünürlük olsun, daha üst cihazlarda 8k olsun diye bir seçeneğimiz var mı acaba ?

      2. yasirkula Avatar

        Asset Bundle veya Addressables ile olabilir (yalnız kendim kullanmadım, hiç tecrübem yok). Quality Settings’te de Texture Quality ayarı var, oyundaki TÜM texture’ların boyutunu düşürmeye yarıyor. Belki o da işinize yarar.

  40. ealgames Avatar

    Hocam iyi geceler aşamadığım bir problem var. Apk geri plana alınınca çalışmasını istemiyordum oyunumda Timera bağlı işleyişler bir hayli fazla ekran kitlendiğinde veya ana ekrana geçildiğinde aplication.quit kodunu işleyerek sorunu aştım ama şimdide admob eklediğim için oyun ads açıldığı zaman haliyle pause oluyor bu sefer oyunum kapanıyor Google ads üzerinden time.scale 0 değerini işleyen yeri keşfettim sildim ama yine bir sonuç elde edemedim bool ile çözmeye çalıştım ama reklam booldan önce işlediği için sonuç alamadım

    1. yasirkula Avatar

      Reklam objesinin OnAdOpening event’i belki işinize yarar.

      1. ealgames Avatar
        ealgames

        OnAdOpening bool gibi mi kullanmam gerekiyor kullanımı hakkında hiç bir fikrim yok

      2. yasirkula Avatar

        OnAdOpening bir event. AdMob’un resmî Unity dokümantasyonunda kullanımını görebilirsiniz: https://developers.google.com/admob/unity/interstitial

      3. ealgames Avatar
        ealgames

        Hocam oyunu yayınlayacağım bunu halledersem onadopening eventi gerçekleşince ReklamAcildi Bool u true işlesin istiyorum 3 gündür denemediğim yol kalmadı

        public void ReklamAcikIsle(object sender, EventArgs args)
        {
        ReklamAcildi = true;
        reklamObjesi.OnAdOpening+= ReklamAcikIsle;

        }

      4. yasirkula Avatar

        Attığım linkte de göreceğiniz üzere, “reklamObjesi.OnAdOpening+= ReklamAcikIsle;” satırını “reklamObjesi = new …” satırının altına taşımanız lazım.

    2. ealgames Avatar
      ealgames

      çok teşekkür ederim hocam bool true olarak aldım fakat işe yaramadı pause ile aynı anda bool kullanılmıyor sanırım reklamı gösteriyor uygulamayı kapatmadan fakat bu seferde reklam yokken koşul sağlanmasına rağmen uygulamayı kapatmıyor

      1. yasirkula Avatar

        Reklamın OnAdClosed event’inde veya Unity’nin OnApplicationFocus/OnApplicationPause fonksiyonunda bool’u false yapmak gibi deneme-yanılmalar yapın derim.

      2. ealgames Avatar
        ealgames

        Onadclosed eventinde bool u false yaparak denedim hocam zaten olmadı application quiti if içerisine alıp denedim, pause & & ReklamAcildi==false olarakta denedim sonuç vermedi unity fonksiyonlarıyla deneyeceğim şimdi ilginiz için çok teşekkür ederim sonucu yazarım belki başka birinin daha işine yarar.

      3. ealgames Avatar
        ealgames

        hocam OnAplicationFocus !focus içinde bool ile istediğim verimi aldım çok çok çok teşekkür ederim

  41. Ali Avatar
    Ali

    Merhaba,
    ilginç bir sorunum var bir çözüm bulamadım,
    Oyun projemi build&run ile çalıştırdığımda bir sorun olmadan çalışıyor, apk aldığımda bazı katmanlar gözükmüyor oyun içinde bir fikriniz var mı bu sorun ile ilgili ?

    1. ali Avatar
      ali

      örnek olarak, butonun görseli var ama içindeki yazı yok

    2. yasirkula Avatar

      Build&Run butonu ile Build butonu arasında hiç fark olmamalı, ilk defa böyle bir sorun duyuyorum. Belki öyle denk gelmiştir. Logcat ile hata alıp almadığınıza bakmak haricinde önerebilecek bir şey gelmedi aklıma: https://yasirkula.com/2015/10/13/unity-android-oyunlarinizi-debug-etmek/

  42. Furkan Avatar
    Furkan

    Hocam iyi günler. Benim bir ok görselim var (pivotu görselin en alt kısmında) ve bu okun oyuncunun oyun sırasında fare ile tıklayıp açısını/rotation değiştirebilmesini istiyorum. Bunu nasıl sağlayabilirim.şimdiden çok teşekkürler

    1. yasirkula Avatar

      “unity 2d object look at mouse” şeklinde arama yapınca karşınıza gelen sonuçlara bakabilirsiniz.

  43. disking Avatar

    merhabalar, unity hakkında bir sorum olacaktı oyuna admob reklamları ekledim samsung oppo gibi cihazlarda reklamlar gözüküyor herhangi bir sorun yok fakat xiaomi cihazlarda reklamlar gözükmüyor daha önce böyle bir sorunla karşılaştınız mı?

    şimdi telefonu bilgisayara bağlayıp baktım şu iki hatayı veriyor

    the webview is destroyed ignoring action
    not retrying to fetch app settings

    Test reklamları da gerçek reklamlar da xiaomi cihazlarda gözükmüyorlar diğer cihazlarda hiçbir sorun yok.

    Günlerdir bu sorunu arıyorum ve çözebilen olmadı en son bilgisayara format atıp sıfırdan kurulum yapacağım o duruma geldim yardımcı olursanız çok sevinirim.

    1. yasirkula Avatar

      Ben yaşamadım ama bilgisayarla alakası olduğunu düşünmüyorum. Logcat’te “ad failed to load” şeklinde bir hata mesajı aramanızı öneririm. Bulursanız o hatayı google’da aratın.

      1. disking Avatar

        Şöyle bir durum fark ettim ki reklam yükleniyor onda bir sorun yok fakat ekrana çıkmıyor. Bunu da şuradan fark ettim; benim bir ödüllü reklamım var o yüklenirse ekrana bir panel geliyor ve reklam izlenip oyuna devam ediliyor. Eğer yüklenmezse yani internet vs. olmama durumunda o panel hiç ekrana gelmiyor ve oyun bitiyor. Bu reklamın çıkmadığı telefonlarda o panel ekrana geliyor, yani reklam yükleniyor. Fakat sorun reklamın ekrana gelmemesi, yani yüklendiği halde gösterilmemesi. Bunu çözemedim önerebileceğiniz her hangi bir şey var mı?

      2. yasirkula Avatar

        Tam reklam göstermek istediğiniz anda ekrana gelen başka hata mesajları var mı? Reklam gösterme kodunuzdan bir satır önce ve bir satır sonra Debug.Log koyduğunuzda onlar gözüküyor mu?

    2. disking Avatar

      dediğiniz gibiymiş yüklemede sorun var diyor yani OnAdFailedToLoad giriyor. Ama sadece belirli cihazlarda bunu yapması mantıksız değil mi?

      1. yasirkula Avatar

        Teoride garip; pratikte AdMob niye bu tarz hatalar verir hiç fikir üretemiyorum. AdMob dersimi yorumlara kapatarak AdMob’la ilişiğimi kestikten beridir kafam rahat.

      2. disking Avatar

        Sanırım yapacak bir şeyim kalmadı. Her şeyi denedim denemediğim bir şey yok bu sorunu sanırım çözemeyeceğim başkalarının oyunlarında ve uygulamalarında aynı cihazda reklam gözükürken bende gözükmüyor pes edeceğim muhtemelen.

  44. Furkan Avatar
    Furkan

    Hocam öncelikle merhabalar. Uzundur çabaladığım ama bir türlü sonuca erişemediğim bir olay var. İki sahnemiz ve iki scriptimiz var. İlk sahnemizde bir topumuz var. Bu top aynı zamanda prefab olarak da kayıtlı. İlk sahne başlatıldığında bizi bir panel karşılıyor bu panelde bir çok image var. Hangi image a tıklanırsa topun SpriteRenderer compenentine o image gidiyor. Bu ilk sahne için işliyor. İkinci sahneye geçildiğinde bu topa ilk sahnede seçilen image nin aynısının eklenmesini istiyorum. Bu olayı nasıl gerçekleştirebiliriz hocam? Oyun çalışıyorken prefabdaki değişiklikleri prefaba anlık olarak kaydedebileceğimiz bir kod dizini var ise bu bizim işimizi görecektir. Araştırdım denedim ama maalesef başaramadım. Şimdiden teşekkür ederim.

    1. yasirkula Avatar

      Image’lar listesinden kaçıncı sıradaki Image’ı oyuncunun seçtiğini PlayerPrefs’te tutabilirsiniz (SetInt). Ardından 2. sahnede bu indexi GetInt ile çekip o sıradaki Image’ı o sahnedeki topa verebilirsiniz.

      1. Furkan Avatar
        Furkan

        Hocam çok teşekkürler fikriniz için. Dediğiniz gibi yaptım ve takır takır çalışıyor. 🙂

  45. mehmet07 Avatar
    mehmet07

    public void Restart()
    {
    SceneManager.LoadScene(sceneIndex);
    }

    Oyun ilk açıldığında normal çalışıyor ama restart butonuna bastığım zaman oyunu yüklüyor ve daha sonra çalışmıyor.
    Oyunu duraklattığım zaman ve daha sonra resume butonuna bastığım zaman oyun normal şekilde çalışıyor.
    Bunun sebebi ne olabilir.

    1. yasirkula Avatar

      Belki bir objenin OnDisable veya OnDestroy fonksiyonunda timeScale’i 0 yapıyorsunuzdur ve sahne kapanırken bu kod çalışıyordur.

      1. mehmet07 Avatar
        mehmet07

        Bu hatayı çözdüm. Şimdi bu hatayı alıyorum unity is already in list. you cannot locate the same versiyon. Bu hatayı nasıl çözebilirim.

      2. yasirkula Avatar

        Unity Hub’ı silip tekrar kurarak veya Denetim Masası’ndan Ethernet/Wi-Fi’ı devre dışı bırakıp tekrar devre içi yaparak çözenler olmuş ama daha fazla çözüm yolu için hatayı google’lamanız lazım.

      3. mehmet07 Avatar
        mehmet07

        Hatayı unity ve hub tekrar install yaparak çözdüm cevaplarınız için teşekkür ederim.

  46. abdulmuttalip Avatar
    abdulmuttalip

    iyi akşamlar admob geçiş reklamında gerçek reklam id si kullanılmasına rağmen test reklamı çıkmasının sebebi ne olabilir.

    1. yasirkula Avatar

      AddTestDevice fonksiyonunu kullanmadığınızdan emin olun ve oyunu silip tekrar kurmayı deneyin.

      1. abdulmuttalip Avatar
        abdulmuttalip

        yani sorun kesinlikle yazılan kodlardan mı kaynaklanır

      2. yasirkula Avatar

        Benim dersimde gösterdiğim 2 metot arasından sadece script’te AddTestDevice fonksiyonunu bırakmak bu soruna sebep olabilir. Mediation kullanıyorsanız ve ilgili reklam servisinin sitesinden test reklamlarını aktif hale getirdiyseniz, o zaman o ayarı tekrar kapatmalı ve biraz beklemelisiniz. Eğer sadece sizin cihazınızda test reklamları gözüküyorsa, belki şurada bahsettiği gibi AdMob arayüzünden cihaz ID’nizi test cihazı olarak eklemişsinizdir: https://support.google.com/admob/answer/9691433

  47. teknosy8 Avatar

    Merhaba,
    Admobta yeni reklam birimleri de çıktı. Native reklamlar gibi bunları singleton scriptinize eklemeyi düşünüyor musunuz?

    1. yasirkula Avatar

      AdMob dersimi güncellemeyi planlamıyorum.

  48. konfasaksimet Avatar
    konfasaksimet

    Yasir Bey Merhaba,

    Emekleriniz ve yardımlarınız için çok teşekkürler, benim de kısa bir sorum olacaktı.

    2D shooter oyunu yapmaya çalışıyorum. Bölüm sonu çıkan bossunu prefabtan instantiate olarak tüm düşmanlar bittikten sonra türetiyorum ve sizin söylediğiniz gibi property ile bossun sağlıgını sürekli kontrol ettirebiliyorum. Fakat boss öldükten sonra animatik bir Level Complete ekranı çıkarmam gerekiyor. Haliyle boss’a atasam scripti boss ile birlikte yok oluyor. Başa bir gameobject’ten çağırsam da boss instantiate edilmediği zamanlarda null hatası alıyorum. Sizce ne yapmalıyım. Teşekkürler.

    1. yasirkula Avatar

      Aklıma gelen iki yöntem var:

      – Boss objesini bir “public static Boss instance;” değişkeninde tutuyorsanız, boss.Saglik property’sine erişmeden önce if(boss) yaparak, boss’un henüz spawn olup olmadığını kontrol edin
      – Level Complete menüsünü çıkaran fonksiyonu GameManager gibi bir objeye verip, boss öldüğünde bu fonksiyonu çağırın

      1. Arif Cem Selçuk Avatar

        Cevabınız için teşekkürler.

        İlk söylediğinizi deneyeceğim, inşallah becerebilirim.

        2. Söylediğiniz de bossun ölüp ölmediğini kontrol etmem için update fonksiyonundan sürekli kontrol etmem gerekli. Bu durumda Boss instantiate olmadığı zamanlarda nullexpect.. hatası veriyor.

      2. yasirkula Avatar

        İlk cevabımda söylediğim if(boss)’u burada da kullanabilirsiniz. Daha güzel bir alternatif, boss’un sağlık property’sinin set fonksiyonunda değerin 0 veya altına inip inmediğine bakmak, inmişse level complete menüsü çıkarmak.

      3. Arif Cem Selçuk Avatar

        Yasir Bey,

        Şu şekilde deniyorum ve update de bu fonkisyonu çalıştırdığım zaman prefab halindeki level1boss’u instantiate edilmediği zamanlarda (tüm düşmanlar yok olduktan sonra spawn oluyor) NullReferanceException hatası alıyorum.

        Not: health property Level1BossHealth scriptinde tanımlı.

        void LevelComplete()
        {
        if (Level1BossHealth.instance.HealthPoints <= 0 && Level1BossHealth.instance.gameObject!=null)
        {
        KillBoss();
        }
        }

      4. yasirkula Avatar

        if (Level1BossHealth.instance && Level1BossHealth.instance.HealthPoints <= 0)

      5. Arif Cem Selçuk Avatar

        Çok çok çok teşekkür ederim.

        if (Level1BossHealth.instance && Level1BossHealth.instance.HealthPoints <= 0)

        Dediğiniz bu işe yaradı. Boss gameobje'si yok oluyor ve Level Complete ekranı çıkıyor. Fakat boss gameobjesi yok olduktan sonra fonkiyon update hala çalıştığı için bu sefer de obje yok oldu diyip yine MissingReferenceExpection hatası veriyor. Sanırım burada ….!=null gibi birşeyler yazacağım? yada başka bir metod var mıdır?

      6. yasirkula Avatar

        Açıkçası daha önce bahsettiğim property yolunu izlerseniz bu sorunların hiçbiri başınıza gelmez ve bunun doğru yolu da o. Ama Update kullanmak istiyorsanız da, hatanın geldiği satırın bu satır olduğuna emin misiniz?

      7. Arif Cem Selçuk Avatar

        Property’i oluşturup kullanıyorum ama sadece set fonksiyonunda health i kontrol etmek için kullanıyordum. Destroy komutunu da oraya yazmayı hiç denememiştim. Şimdi deniyorum.

  49. ertugrul Avatar
    ertugrul

    iyi günler Yasir bey.
    size bir sorum vardı.

    Unity 3D Android Oyunlarınıza AdMob Reklamları Eklemek – Resimli Anlatım


    burada her ne kadar bu dersi artık güncellemeyi düşünmüyorum desenizde tekrar sormak istedim.
    Admob un yeni reklamı Rewarded interstitial ads (https://developers.google.com/admob/unity/rewarded-interstitial) “5) Singleton Reklam Scripti (Son Güncelleme 29.10.2019)” daki reklam scriptinize eklemeyi düşünüyor musunuz. ben biraz uğraştım ama başaramadım.
    kolay gelsin.

    1. yasirkula Avatar

      Rewarded interstitial’ı ilk defa duymuş oldum. AdMob dersimi güncellemeyi planlamıyorum o yüzden ben maalesef yardımcı olamayacağım.

      1. ertugrul Avatar
        ertugrul

        teşekkür ederim.

  50. ertugrul Avatar
    ertugrul

    Yasir bey merhaba.
    Herşeyden önce bu siteniz ve yardımseverliğiniz için teşekkür ederim. Sizin gibi birisini bulmak zor.

    soruma gelecek olursam. sitenizde ayrıntılı bir şekilde lightingin anlatıldığı bir yer bulamadım. Acaba bu konuda bilginiz var mı?
    tünel gibi bir şeyin içinde ilerlerken içerdeki objelerin ve tünelin homojen bir şekilde aydınlanmasını istiyorum ama bir türlü yapamadım. directional light kullandığımda bir taraf gölge kalıyor. pointte ise yakın yer çok parlak oluyor. areayı ise yapamadım.
    bu konuda yardımcı olabilir misiniz?
    nasıl bir şey denemeliyim yada önerebileceğiniz bir kaynak var mı?
    şimdiden teşekkür ederim.
    iyi günler

    1. yasirkula Avatar

      Kapalı alanların ışıklandırması konusunda benim de tecrübem yok ama point light’ın Intensity’sini kısıp Range’ini artırsanız, yeterli olmazsa bir de sahnenin Lighting Settings’indeki Ambient ışığın şiddetiyle oynasanız nasıl olur?

      1. ertugrul Avatar
        ertugrul

        zaman ayırdığınız ve cevap verdiğiniz için teşekkür ederim.
        dediğinizi yaptım ve ambient ışığını daha beyaz yapınca sorunum biraz düzeldi.
        teşekkür ederim.

  51. Yasin Avatar
    Yasin

    Abi selamün aleyküm.

    Abi bolt (visual scripting) daki gibi bir node editor yaptım. flow yapısı filan tamam. Kendi Inspector ümü nasıl yaparım. Kaynak var mıdır ? Şuan deneme yanılma ile bir şeyler deniyorum. İki farklı editor yapıp birbirine bağlamak mümkün mü? biri node editor olacak diğeri inspector editor? Ve hasıl kelam kendi inspectorumu yapıp node editordeki nodeları kontol etmek, yönetmek, companent eklemek vb istiyorum.

    1. yasirkula Avatar

      Şu dersin OnInspectorGUI fonksiyonunda kendi Inspector’unuzu yazmaktan basitçe bahsettim ama editör script’leri aşırı derecede kapsamlı bir konu olduğu için, büyük olasılıkla “unity custom editor” şeklinde google araması yapıp karşınıza çıkan tonla derse bakmanız gerekecek 😀

      1. yasin Avatar
        yasin

        Abi inspector’den editorler windowu içinde bulunan node lara ulasmak mumkün mü ? Custom editor de var olan inspector’e buton vb. eklemeler yapılıyor. Inspector’den Editör panelindeki bir node’a ulaşabilir miyim ? Ben ulaşmak mümkün olmadığı için kendi inspector’ümü yazmak istiyorum. Var olan inspector dışında. iki editör windowu arasında ilişki kurmak istiyorum diğer bir deyişle. birinde node lar olacak. diğerinde nodun üzerine tıkladığımda o node’a buton text filan ekleme yapabileceğim. project paneli ile inspector paneli gibi.

      2. yasirkula Avatar

        GetWindow fonksiyonu ile başka bir editör penceresine erişebilirsiniz. Ardından o pencerenin public değişken ve fonksiyonlarını kullanabilirsiniz.

      3. yasin Avatar
        yasin

        Diğer editördeki public değişkenlere ulaştığın, GetWindow fonksiyonu için örnek kod yazabilir misin abi rica etsem ?

      4. yasirkula Avatar

        DigerEditor diger = GetWindow<DigerEditor>();
        diger.birPublicDegisken = true;

  52. Emre Avatar
    Emre

    Merhaba hocam. Oyunlardaki oyun parası tutma işlemi(sahneler arası geçişlerde, oyunu kapatıp açınca vs.) nasıl yapılıyor. Araştırdığımda PlayerPrefs i buldum fakat bir yabancı kaynakta da önemli veriler için asla kullanmayın kolay hacklenebilir yazıyor. Sizce bu işlem için en doğru yol hangisi?

    1. yasirkula Avatar

      Online oyunlarda paranın sunucularda tutulması gerekiyor ama offline oyunlarda PlayerPrefs’ten biraz daha güvenli olması için binary serialization (google BinaryFormatter) kullanabilirsiniz. Dosyayı persistentDataPath’e kaydedebilirsiniz.

      1. Emre Avatar
        Emre

        Teşekkür ederim hocam.

  53. Ayse Avatar
    Ayse

    meraba
    benim objem çok hızlanınca duvarın arkasına geçiyor bunu nasıl çözerim acaba. hareketini transform.translate olarak verdim. hızı fazla yaparsam duvarı geçiyor. duvarı baya kalın yaptım collider de kalın yaptım yine de duvarı geçiyor hızı fazla olunca

    1. yasirkula Avatar

      Rigidbody’nin Collision Detection ayarlarıyla oynayıp hareket kodunu rigidbodyComponenti.MovePosition olarak değiştirmek işe yaramıyorsa, “unity fast moving object goes through” şeklinde aramanız gerekecek.

  54. Anıl Avatar
    Anıl

    Maze Spawn On Mirror Network
    Yasir Hocam Merhaba. Ben script ile maze generate ediyorum ve oluşturduğum maze in aynısını servera join olan clientta göremiyorum. Orada farklı bir maze oluşuyor. Hem serverda hem clientta aynı maze i nasıl generate edebilirim? Network için Mirror kullanıyorum. Teşekkürler

    1. yasirkula Avatar

      Maze generator’unuza elle seed girebiliyorsunuzdur diye düşünüyorum. Seed’in olayı, aynı değer için her zaman aynı maze’in oluşturulmasıdır. Yapmanız gereken, client’ta maze’i oluşturmadan önce, maze’in seed’ini server’dan çekmek ve maze generator’a aktarmak.

      1. Anıl Avatar
        Anıl

        Geri dönüşünüz için teşekkürler hocam. Unity’de biraz amatörüm açıkçası. Bahsettiğiniz aşamaları hangi fonksiyonların içinde yapmam gerekiyor? Tekrar teşekkürler.

      2. yasirkula Avatar

        Kullandığınız plugin’lerin kullanımını bilmiyorum, ben maalesef yardımcı olamayacağım. Maze generator plugin’ini yapan kişiden destek almanız lazım.

    2. Anıl Avatar
      Anıl

      Plug-in kullanmıyorum hocam. Kendim generate ediyorum

      1. yasirkula Avatar

        Maze generate etmeye başlamadan hemen önce Random.InitState fonksiyonunu çağırarak ile belli bir seed kullanabilirsiniz.

    3. Anıl Avatar
      Anıl

      Network objesi olarak mı spawn etmek gerekiyo peki hocam yoksa scene de mi kalmalı maze objesi?

      1. yasirkula Avatar

        Multiplayer konusunda maalesef bilgim yok.

  55. Fatih Avatar
    Fatih

    Merhaba, 10 tane obje var oyunda diyelim. Bu objelere dokununca renkleri kırmızı oluyor diyelim. Buton özelliği olarak yani. 2. objeye dokununca kırmızı oluyor, 3. objeye dokununca da kırmızı olacak ancak 2. obje normal haline gelsin istiyoruz veya 8. objeye dokununca o kırmızı olsun önceki dokunduğumuz biri varsa o eski haline gelmiş olsun. Aklınıza gelen bir çözüm var mı

    1. yasirkula Avatar

      Bir önceki dokunulan objeyi tutan “private static Obje oncekiObje;” değişkeniniz olur. Bir objeye tıklayınca, öncelikle oncekiObje’nin değerinin null olup olmadığına bakılır ve null değilse, oncekiObje’nin rengi normal haline getirilir. Ardından tıklanan obje kırmızı olur ve oncekiObje’ye değer olarak tıklanan obje verilir.

  56. Semih Avatar
    Semih

    Merhaba. Yapmaya çalıştığım oyunda market bölümü var burada 5 sekme mevcut. (Altın, elmas, yakut, zümrüt …) Oyunun herhangi bir yerinde yukarıda bu mevcut sahip olduğu madenler gösteriliyor. Sahip olduğu altının yanında (+) işareti olduğunu düşünün. İstiyorum ki buna dokunduğunda marketteki altın sekmesi açılsın, elmasın yanındaki (+) dokunduğunda elmas sekmesi açılsın. Çok genel sordum farkındayım benim aklıma gelen şu, daha kolay yolu olmalı diye düşündüm.

    Altın (+) dokunduğunda kod olarak diyeceğim ki işte, altın kısımlarını aç, elması kapat, zümrütü kapat, yakutu kapat vs. Elmas(+) dokunursa da elması aç, altını kapat, zümrütü kapat gibi. Yani birini açmak isteyince diğerlerini de tek tek kapalı tutması gerektiğini söylemek zorunda mıyız.

    Veya buna da gerek yok sanırım. Markette 5 sekme var. (A B C D E). Şimdi ben A kısmını görünür yapmak için diyorum ki
    if A sekmesine dokunduğumda..
    {
    A.setactive(true)
    B.setactive(false)
    C.setactive(false)
    ..
    }
    Her kısım için böyle yapıyorum normal mi

    1. yasirkula Avatar

      Tüm sekmeleri bir array’e koyup for döngüsü içinde hepsini kapatabilirsiniz ama yine aynı kapıya denk geliyor. Bence normal.

  57. Emre Avatar
    Emre

    Merhaba hocam. İki buton var birinde mevcut sahneyi açıyor. Diğer butona basınca bir sonraki sahneyi açıyor. Sorunum şu; sonraki sahneyi açan butona basarsam seçilmeyen mevcut sahne 3 sahne sonra geri gelsin istiyorum. getActiveScene.buildIndex ile sahnenin indexi alıyorum ama onun indexin +3 e nasıl eşitleyebilirim. Böyle bir method var mı acaba?

    1. yasirkula Avatar

      SceneManager.LoadScene’e mevcut sahnenin index’inin 3 fazlasını parametre olarak verebilirsiniz ama sanırım soru bu değil. Seçilmeyen mevcut sahneden ve bunun 3 sahne sonra geri gelmesinden bahseder misiniz? 1 sahne sonra ve 2 sahne sonra bir ileriki sahneyi açacak ama 3 sahne sonra 3 sahne geri mi gidecek? Oyunu 1 sahne sonra kapatıp tekrar açınca 2 sahne sonra 3 sahne geri mi gidecek? Tam anlamadım anlayacağınız.

      1. Emre Avatar
        Emre

        Hocam ilk dediğiniz isteğime daha uygun ama 3 sahne geri giderse aradaki yapılan sahneler sonradan tekrar karşımıza çıkar. Eğer sahne indexlerini kod içerisinde oynatabilme şansımız varsa ilk seçilmeyen sahnenin index[x]ini , [x+3].indexe atamak istiyorum ki seçilen sahneler tekrar karşıma çıkmasın.

      2. yasirkula Avatar

        Elimizde 0,1,2,3,4 index’lerine sahip 5 sahne olsun. Bu index’ler üzerinden “şu şöyle olacak sonra şu index’e şöyle şey yapılacak” şeklinde gösterebilir misiniz?

      3. Emre Avatar
        Emre

        Hocam öncelikle her sahnenin açılışında panel geliyor.Panelde iki tuş var eğer kabul tuşu seçilirse panel deaktif olup mevcut sahneye giriyorsun mevcut sahne bittikten sonra bir sonraki sahneye geçiyorsun.Eğer reddet tuşunu seçersen bir sonraki sahneye atıyor aynı işlevi gören panel orada da var.
        5 Sahneleri örnekte şöyle anlatayım; Oyuna 0. indexten başlıyoruz kabul tuşuna bastık sahne bitti sonraki sahne(1.index) seçimine geçtik. 1.index panelinde reddet tuşuna bastık 1.indexli sahneyi göremeden. 2.index seçimine geçiyoruz. Bu reddedilen sahne(1.indexli) boşa gitmesin diye ((1+3) 4.index de tekrar görünmesini istiyorum.)

      4. yasirkula Avatar

        Hangi index’teki sahnelerin reddedildiğini ve reddedildikten itibaren kaç sahne geçtiğini bir veri türünde tutmanız ve bunu her sahne geçişinde güncelleyip kaydetmeniz lazım. Kaydetmek için JsonUtility ile PlayerPrefs.SetString fonksiyonlarını beraber kullanabilirsiniz. Örnek bir veri türü:

        public class ReddedilenSahneler {
        public List sahneIndexleri = new List();
        public List gecenSahneSayilari = new List();
        }

        1. index’teki sahne reddedildiğinde sahneIndexleri’ne 1 eklenir ve gecenSahneSayilari’na 0 eklenir. Her sahne geçişinde gecenSahneSayilari’ndaki değerler 1 artırılır. Diyelim 2. sahne kabul edilir 3. sahne reddedilirse sahneIndexleri’ne 3 eklenir ve gecenSahneSayilari’na 0 eklenir. Yani şimdi sahneIndexleri [1,3] ve gecenSahneSayilari [2,0] değerlerinden oluşuyor. Bir sonraki sahneye geçtiğimizde gecenSahneSayilari [3,1] oldu. Buradaki ilk değer >= 3 olduğu için, sahneIndexleri’nden ve gecenSahneSayilari’ndan 0. index’teki eleman çıkarılır ve sahneIndexleri’nin eskiden 0. index’inde olan 1. index’teki sahne tekrar görünür.

      5. Emre Avatar

        Sağolun hocam.Deneyeceğim

  58. mehmet07 Avatar
    mehmet07

    Merhaba android uygulamada kullanıcı oyunu arka plana aldığında oyunu durdurmak işlemi nasıl olur

    1. yasirkula Avatar

      OnApplicationPause veya OnApplicationFocus fonksiyonlarında Application.Quit kullanmayı deneyebilirsiniz.

      1. mehmet07 Avatar
        mehmet07

        Android telefonumda çalışmıyor
        Unity 2019.4.10 sürümü kullanıyorum başka çözüm var mı ?

      2. yasirkula Avatar

        Benim aklıma gelen başka bir yol yok.

  59. Semih Avatar
    Semih

    Selamlar, kodla değil de unity ile ilgili bir sorum var size. Yani öyle olduğunu düşünüyorum.

    Bir 3d küre objesi mevcut elimde. Bunu joystickle hareket ettiriyorum. Hızla duvara çarptığımda ve joystick’i bıraktığımda, küre kendi kendine dönmekte ve döndüğü için hareket etmekte. Anlaşılmadıysa farklı şekilde deniyorum şimdi, anlaşıldıysa okumayın lütfen vaktinizi çalmayım

    Duvara dönerek gidip çarptığımda sanki uzayda gibi bir etki oluyor sanırım, etki tepki gibi oradan çarpıp geri dönüyor ama ben olduğu yerde kalsın istiyorum. Dönüşünü engellemek çözüm değil hareket ederken dönmeli küre. Ancak bir yere çarpıp joystick bıraktığımda sekip geri gelmemeli. Bu sekme dediğim şey, duvara çarptığında dönüş olduğu için. Yani dönüşleri engellediğimde böyle bir problem yok. Ancak dönüşleri aktif ettiğimde çarpma hızıma bağlı top ters yönde dönüyor ve geri geliyor.

    1. yasirkula Avatar

      Topun Rigidbody’sinin angularVelocity’si dönme hızını belirler. angularDrag ise bu değerin ne kadar hızlı bir şekilde 0’a döneceğini belirler. Joystick’i bırakınca angularDrag’i yükseltip joystick’e dokununca angularDrag’i düşürebilirsiniz.

  60. Ahmet Yılmaz Avatar
    Ahmet Yılmaz

    Merhaba size ulaşabileceğim bir mail adresi var mı?

  61. Mustafa Avatar
    Mustafa

    Hocam Merhaba ben bir karakter moment i yapmak istiyorum ama rotasyonu da dönsün yani unity standard assets ti Third Person Character karakter gibi sadece hareketi nasıl yaparım

    1. yasirkula Avatar

      Karakterin rotation’ına Quaternion.LookRotation ile değer vermek bence en basit seçenek. Eğer karakterin dönüşünün yumuşak olmasını istiyorsanız, mevcut rotation’dan LookRotation’a Quaternion.Lerp ile lerp yapabilirsiniz.

      1. Mustafa Avatar
        Mustafa

        Hocam bir ornek verebilirmisinz

      2. yasirkula Avatar

        Transform kamera;
        void Awake() { kamera = Camera.main.transform; }
        void Update()
        {
        Vector3 yon = kamera.forward * Input.GetAxis(“Vertical”) + kamera.right * Input.GetAxis(“Horizontal”);
        transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(yon), 10f * Time.deltaTime );
        }

      3. Mustafa Avatar
        Mustafa

        hocam tamam rotasyonu dönüyor istediğim gibi ama hareket ettirmediğim zaman eski rotasyonuna geri dönüyor

      4. yasirkula Avatar

        Input.GetAxis’lerin ikisinin de değeri 0 ise Update’te yazdığım kodu çalıştırmayın.

      5. Mustafa Avatar
        Mustafa

        hocam tamam çözdüm sorunu Teşekkürler istediğim yöntem buydu
        if (Input.GetAxis(“Horizontal”) != 0 || Input.GetAxis(“Vertical”) != 0)
        {
        transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(new Vector3(Input.GetAxis(“Horizontal”), 0, Input.GetAxis(“Vertical”))), 10f * Time.deltaTime);
        transform.position += new Vector3(Input.GetAxis(“Horizontal”), 0, Input.GetAxis(“Vertical”)) * 3 * Time.deltaTime;
        }

  62. Ahmet A Avatar
    Ahmet A

    selamlar hocam
    benim bir joystick değişkenim var.
    Joystick joystick; olarak isimlendirdim. Yani Joystick diye bir tür var sanırım paket indirdim.
    Bunu public olarak atayamıyorum, çünkü prefabs dosyası olması gerekli. Prefabs dosyasını çağırdığımda da public olarak atadığım joystick yok oluyor.

    Joystick objesine tag verdim.
    Bunu awake fonksiyonunda joystick = GameObject.FindGameObjectWithTag(“JoyStick”);
    Fakat joystick ismini verdiğim şey sanırım bir gameobject değil de joystick olarak algılandığı için bu kodu kabul etmiyor.

    Bu joystick objesini nasıl public olmadan kod içinde tanıtabilirim.

    1. yasirkula Avatar

      joystick = GameObject.FindGameObjectWithTag("JoyStick").GetComponent<Joystick>(); deneyin.

      1. Ahmet Avatar
        Ahmet

        Harikasınız teşekkürler bilgi için 🙂

  63. Semih Avatar
    Semih

    Küre şeklinde 10 tane topum var diyelim. Bunlar 3 boyutlu. Farklı şekil ve desenlerde toplarım var. Bunları markette göstermek istiyorum nasıl yapabilirim. Market haliyle bir canvas olacak. Canvas üzerinde de 3d bir obje gösteremiyorum. Elimdeki toplar material şeklinde yani bir desen olarak atamıyorum. 3d objeleri canvas üzerinde nasıl gösterebiliriz mümkün müdür aklınıza bir çözüm geliyor mu bu topları markette sergilemek için. Cevaplarınız için teşekkür edemiyoruz meşgul etmemek adına sizi, her biri için çok teşekkürler

    1. yasirkula Avatar

      Canvas’ın Render Mode’u Screen Space-Camera veya World Space olursa, canvas ile kamera arasında kalan objeler canvas’ın üzerine çizilir. Ancak scroll view’larda bu düzenin işe yarayacağını sanmıyorum çünkü 3D objeler, scroll view ile otomatik olarak hareket etmeyecek. Benim önerim, her topun screenshot’ını alıp png resim olarak kaydetmeniz ve UI’da bu screenshot’ları göstermeniz. Daha zorlu bir alternatif ise, her topu farklı bir kamera ile farklı bir RenderTexture’a render alıp bu RenderTexture’ları UI’da göstermek ama bu performansı çok etkiler. Başka çözüm yolları varsa da araştırmadığım için maalesef bilmiyorum.

      1. Semih Avatar
        Semih

        Ekran görüntüsü benim aklıma gelen tek çözümdü. Canvas Render Mode değiştirmem pek mümkün değil sanırım 3d objeleri göstermek adına. Akıl akıldan üstündür diye size de danışmak istedim sanırım en sorunsuz ekran görüntüsü almakla olacaktır. Bu şekilde oyunun boyutunu yükseltmek istememiştim. Şimdilik tek yol bu sanırım teşekkürler

  64. Semih Avatar
    Semih

    İnternette videolar izlerken çoğu kişide inspector panelinde Image(Script) yazmakta. Farklı bir script mi mevcut acaba yani mutlaka indirilmesi gereken bir şey var da ben mi kaçırdım. Bende normal Image yazmakta.

    1. yasirkula Avatar

      Belki sadece bazı Unity sürümlerinde (Script) yazıyordur. İzlediğiniz videolardaki Image’lar ile sizdeki Image aynı component’tir.

  65. mehmet07 Avatar
    mehmet07

    Unity 2020.1.6 sürümünde android build ederken çok uzun bekliyorum. Diğer sürümlerde bu kadar zaman beklemedim. Graphics api düzenlenmesi nasıl olmalıdır?

    1. yasirkula Avatar

      Belki Scripting Backend olarak Mono yerine IL2CPP seçilidir. Graphics API’den olduğundan emin misiniz?

      1. mehmet07 Avatar
        mehmet07

        Mono seçtim bu şekilde denedim ve bug dan dolayı hata verdi 2019 4 10 sürümünde başarılı Apk aldım cevabınız için teşekkür ederim.

  66. Emre Avatar
    Emre

    Merhaba hocam. Tavsiyenize ihtiyacım var. Update içerisindeki bir fonksiyonumun sadece UI Buttonuna bastığımda çalışmasını nasıl sağlayabilirim? Input.GetKeyDown ile bunu başardım ama ben klavye tuşuna değilde ekrandaki Button a bastığımda olmasını istiyorum.

    1. yasirkula Avatar

      Sadece butona basınca bir kod çalışacaksa bunun Update’te olmasına gerek yok. Butonun On Click event’ine verdiğiniz fonksiyonda ilgili kodu çalıştırabilirsiniz.

      1. Emre Avatar
        Emre

        Hocam ilgilendiğiniz için teşekkürler ama halihazırda Butonun on clickinde bir Coroutine var, kod da onun içine ekleyeceğim fonksiyonda update te olması lazım ama update coroutine in içine atınca görmüyor. update in ismin değiştirince de fonksiyon çalışmıyor ,update çalışan bir kod.

      2. yasirkula Avatar

        public void ButonaBasildi() fonksiyonunuz olur ve bunu butonun On Click’ine eklersiniz (aynı anda 2 fonksiyon eklenebiliyor). Update’te de GetKeyDown olunca bu fonksiyonu çağırırsınız. Butona basılınca yapılacak şeyleri de fonksiyonun içine yazarsınız. İlla Update’in dışına taşmamalıyım diyorsanız, yazdığım SimpleInput plugin’ini kullanıp butonunuza Key Input UI component’i ekleyebilirsiniz.

  67. Semih Avatar
    Semih

    Bir online oyunda oyuncunun kazandığı altın, elmas, ses seviyesini nerede tuttuğu, örneğin sessize almış oyunu, satın aldığı veya sahip olduğu eşyalar ve daha onlarca veri belki. Hepsini playerpref olarak bir yerde kayıt altına mı almak gerekiyor tek tek. Yani ses seviyesini en son nerede bırakmış bunu bir playerprefs içinde saklamamız mı gerekiyor.

    Animasyonlar dotween ile çok daha kolay örneğin, öncesinde gereksiz yere yormuşuz kendimizi. Bunun da bir kolay yolu veya işlemi var mıdır kayıt altına alınsın. Oyuncunun seçtiği ayarları, aldığı eşyaları, ilerlediği exp vb bilgileri kayıt altına alabileceğimiz bir sistem biliyor musunuz siz ne yapardınız

    1. yasirkula Avatar

      Ses seviyesi gibi gameplay’e etkisi olmayan ayarları PlayerPrefs’te tutabilirsiniz ama bu bir online oyun olduğu için, altın sayısı gibi diğer tüm değerleri bir online veritabanında tutmalısınız yoksa oyuncular kolaylıkla hile programları vasıtasıyla altın sayılarını artırabilir. Ben nasıl yapardım emin olun bilmiyorum, hiç online oyun düşünmediğim için nereden araştırmaya başlardım onu hiç düşünmedim.

  68. Semih Avatar
    Semih

    Unity üzerinde instantiate olarak prefab bir objeyi çağırıyoruz. (Photon ile online oyun yapmak için) ancak online kısmıyla çok alakalı olmadığını düşündüğüm bir problem var. Bu “player” prefabı içinde bir joystick ekli scriptinde. Efektler de ekli inspectorda görüyorum. Ancak bunu prefab olarak çağırdığımızda bu eklenen şeyler özelliğini yiritiyor. Yani joystick kullanılmaz hale geliyor efektler de gitmiş oluyor.

    Prefab olarak çağırılan dosyanın scriptine atanmış şeyleri nasıl birlikte çağırabiliriz.

    1. yasirkula Avatar

      Prefab Instantiate olunca prefab’ın script’lerindeki değerler kaybolmaz. Ama diyelim sahnedeki bir prefab instance’ının bir değişkenine değer olarak sahnedeki bir objeyi verip sonra bu değişikliği prefab’a uygulamaya çalışırsanız, prefab’daki değer null olur çünkü asset’ler sahne objelerine referans bulunduramazlar. Bu sorunu çözmenin yolu, script’in Awake veya Start fonksiyonunda sahnedeki objeleri kod vasıtasıyla bulmak (örneğin GameObject.Find).

  69. Semih Avatar
    Semih

    Az önce bir canvası açıp kapatmayı kodlamada setactive false true şeklinde yazmaktansa, buton içine istediğim objeyi atarak setactive kısmını açıp kapatabileceğimi öğrendim. Gerçekten bazı kısayolları bilmemek insana çok uzun zaman kaybettiriyor. Şu an menüleri açıp kapatma işlemini herhangi bir kod dosyasına ihtiyaç olmadan yapabiliyorum.

    Şöyle bir sorum olacak size. Market menüm var, burada 5 sekme var (altın, elmas, eşya…). Altına dokunduğumda altınla ilgili bilgiler geliyor ekrana, elmasa dokunduğumda altın kapanıp elmas bilgileri geliyor. Bu sekmelerden “altın” olana buton ekledim. OnClick{} özelliğine de bu 5 sekmeyi ekledim ve setactive kısımlarına altın detayları aktif, diğerleri kapalı olacak şekilde komut verdim. Benzerlerini diğer sekmeler için de yaptım. Fakat ileride yeni bir sekme eklendiğinde tekrar diğer 5inde de işlem yapmak istemiyorum. Şöyle bir şey var mı; Altın sekmesine dokunduğumda, diğer sekmeler kapansın. Bunu kodlama olmadan bir şekilde çözmenin yolunu biliyor musunuz acaba?

    1. yasirkula Avatar

      Bence bu kod yazmadan mümkün değil.

      1. Semih Avatar
        Semih

        Anlıyorum, peki sizce kod yazmayla direkt olarak tuşa görev atama arasında bir fark görüyor musunuz. Kodlamada Menu.SetActive true yerine, buton özelliğinde menüyü oraya atıp setactive true yapmamız arasında.

      2. yasirkula Avatar

        İşlevsel olarak bir farkı yok. Başta ben de butonlara Inspector’dan fonksiyon ekliyordum ama artık kod ile yapıyorum çünkü Visual Studio’da bir fonksiyonun kullanıldığı yerleri arattığımda, o fonksiyonun atandığı butonlar varsa onları da görmek istiyorum. Inspector’dan fonksiyon ekleyince bu mümkün değil.

  70. Emre Avatar
    Emre

    Merhaba hocam.Dört triggerin doğru objeler tarafından tetiklenmesi ile tek bir sonuç çıkarmasını istiyorum. Bunu OnTrigger da Debug.Log ile denediğimde sonuçları ayrı ayrı gösteriyor. Eğer 4 tetiklenme de doğru ise tek bir sonuç(örneğin: kazandınız) göstermesini nasıl yapabilirim?

    1. yasirkula Avatar

      Her trigger’ın bir bool’u olur, o trigger’ın doğru objeyle temas edip etmediğini tutar. Ardından tüm 4 trigger da bir List veya array’de tutulur ve Update’te bu dizideki tüm trigger’larının bool’unun true olup olmadığına bakılır.

      1. Emre Avatar
        Emre

        Teşekkür ederim hocam.

  71. Emre Avatar
    Emre

    Merhaba hocam tavsiyenize ihtiyacım var. Bir obje grubumun hiyerarşideki sıralamasıyla(listedeki sıralama da olabilir) kendi oluşturacağım sıralama ile aynı olup olmadığını kıyaslamak istiyorum.Aynı ise Win ekranı yazdıracağım. Bu kıyaslama işlemini nasıl yapabilirim?

    1. yasirkula Avatar

      Eğer objelerin parent’ları aynı ise, transform.GetSiblingIndex()’lerini kıyaslayabilirsiniz.

      1. Emre Avatar
        Emre

        Teşekkürler hocam.

  72. Mehmetcan Avatar
    Mehmetcan

    Hocam selamlar, score++; yaptığımda score sürekli artıyor bunu nasıl çözebilirim.

    1. yasirkula Avatar

      Sadece skorun artmasını istediğinizde o kodu çalıştırmanız lazım. Eğer kodu olduğu gibi Update’in içine koyarsanız, kod sürekli çalışır.

  73. Mehmetcan Avatar
    Mehmetcan

    Hocam merhabalar. Rastgele konumlandırdığım şeylerin çakışmaması için ne yapmam lazım

    1. yasirkula Avatar

      Physics.OverlapBox, OverlapSphere veya ComputePenetration fonksiyonlarını kullanabilirsiniz.

  74. Furkan Avatar
    Furkan

    Hocam biliyorum siz unity kullanıyorsunuz genel olarak ama yine de sormam gereken bir olay var. Ben visual studioda windows form üzerinden bir oyun yapıyorum. Bir karakterimiz var ve sahneye rastgele labeller oluşuyor bu labellarda da rastgele sayılar var. Oyuncu ekrana rastgele çıkan sayıları en küçüğünden başlayarak üstlerine gitmek suretiyle en büyüğe doğru ilerleyecek. Sıkıntı şu ki, randomize oluşturduğumuz sayıların küçük veya büyük olarak toplanıp toplanmadığını nasıl anlayabiliriz? Ne tür bir kod gerekiyor? (Örneğin ekranda 5 8 9 varsa ilk başta 8 e giderse yanlış yaptığı için elenmeli) Şimdiden çok teşekkür ederim hocam 🙂

    1. yasirkula Avatar

      Tüm sayılar bir List<int>’te tutulup tıklanan sayının bu List’teki en küçük sayıdan büyük olup olmadığına bakılır.

  75. Semih Avatar
    Semih

    Merhaba, sitenizde animasyonlarla ilgili içerik göremedim geniş bir anlatım arşiviniz mevcut belki gözümden kaçmıştır kusura bakmayın öyleyse eğer.

    Kafatopu oyununu biliyor musunuz bilmem. Burada tüm kartların üzerinden parlama efekti geçmekte belirli bir süreyle. Sanki kartlar parlıyor gibi. Bunu nasıl sağlayabiliriz çok merak ediyorum. Veya sattıkları elmas, altın gibi yerlerde, bu kartların içinde rastgele olduğunu düşündüğüm ufak parlamalar yapıyorlar.

    Bu oyunda akıllara zarar bir şekilde sürekli bir hareketlilik, bir animasyon var gerçekten. Sabit herhangi bir şey hiç görmedim her şey oynuyor 🙂 Merakımı bu 2 animasyon çekti. Bunları kodla mı yoksa animasyonla mı sağlarız çözemedik.

    Özetlemek gerekirse: Bir dikdörtgen kart üzerinde rastgele yıldız parlamaları gibi belirip kaybolan bir animasyon veya kartın tamamının üzerinden geçen bir yansıma animasyonu oluşturmak istiyoruz. Sanki parlak bir cam gibi

    1. yasirkula Avatar

      Elmastaki rastgele parlama için elmasın üzerinde bir parlama Texture’u oluşturmuşlar, buna sürekli saat yönünün tersine rotation vermişler ve arada bunu saydam yapıp sonra görünmez yapmışlar bence. Kartların parlaması için ise bir yöntem, karta Mask verip ardından beyaz gradient bir texture’u ara ara kartın alt kenarından üst kenarına doğru hareket ettirmek. Kartta Mask olduğu için, child objeleri Mask’ın dışında çizilmez.