Şimdi Ara

Unity - Canvas'a Eklenen Objenin Raycast'tan Etkilenmemesi

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
7
Cevap
0
Favori
3.306
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Örneğin canvasa ekli buton var. Ayrıca oyunda raycast ile ateş de edebiliyoruz. Fakat butona basınca ateş etmemesini istiyorum. Bir adet gameobject oluşturup collider verip Deadzone tagı atayıp scripte de hit.transform.gameObject.tag != "Deadzone" yapınca her şey sorunsuz bir şekilde oluyor. Butona basınca ateş etmiyor. Fakat şöyle bir şey var. Oyun farklı aspect ratio cihazlarda olunca butonlar ekranın köşelerine kayıyor. Haliyle de oluşturduğum Deadzone taglı gameobject yerinde kalıyor. Onu uzatsam da oyun için uygun olmuyor. Demek istediğim hit.transform.gameObject.tag != "Deadzone" yerine ne yazmalıyım ki canvasa ekli butonu etkilemesin?



  • Canvas'a eklediğin Butonun image'inin özelliklerinde Raycast Target tikinden haberin var mı?Ayrıca yine sağdaki inspector penceresinde Button componenetinde interactible tikinden haberin var mı?
  • quote:

    Orijinalden alıntı: Iqtam

    Canvas'a eklediğin Butonun image'inin özelliklerinde Raycast Target tikinden haberin var mı?Ayrıca yine sağdaki inspector penceresinde Button componenetinde interactible tikinden haberin var mı?
    Interactible tikini kaldırmak bir işe yaramadı. Butona basınca yine ateş etti. Raycast targetin tikini kaldırınca ise malesef buton hiç çalışmadı.

    Butona collider ve tag ekleyip hit.transform.tag != "Deadzone" yaptım. Sonra hit.transform.gameobject.tag != ve daha sonra bunun layerlısını hit.transform.layer != yaptım. Ama bunlar da olmadı. Canvas objesini bir gameobject gibi algılamıyor unity.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: 1ht1baron

    Interactible tikini kaldırmak bir işe yaramadı. Butona basınca yine ateş etti. Raycast targetin tikini kaldırınca ise malesef buton hiç çalışmadı.

    Butona collider ve tag ekleyip hit.transform.tag != "Deadzone" yaptım. Sonra hit.transform.gameobject.tag != ve daha sonra bunun layerlısını hit.transform.layer != yaptım. Ama bunlar da olmadı. Canvas objesini bir gameobject gibi algılamıyor unity.

    Alıntıları Göster
    Evet canvas'ı Gameobject olarak tanımaz.Canvas'ı scriptine "public Canvas canvas;" şeklinde eklemelisin."public GameObject canvas;" şeklinde tanımlama yanlıştır.

    Fareye tıkladığında, farenin herhangi bir UI element'i üzerinde olup olmadığını EventSystem'den kontrol edebilirsin."public EventSystem eventSytem;" şeklinde tanımlama yap.Sonra update fonksiyonu içerisinde , ateş etme kontrolünün olduğu kısma aşşağıdaki koşula göre uyarlama yap:

    void Update()
    {
    // Farenin sol tuşuna basıldığını kontrol et
    if (Input.GetMouseButtonDown(0))
    {
    // Farenin bir UI element'i üzerindeyken basıldığını kontrol et
    if (EventSystem.current.IsPointerOverGameObject())
    {
    Debug.Log("UI elementi üzerine tıklandı.");
    }
    }
    }



    < Bu mesaj bu kişi tarafından değiştirildi Iqtam -- 22 Ağustos 2018; 2:9:5 >




  • Iqtam I kullanıcısına yanıt
    Çok teşekkür ederim. EventSystem ile sorunsuzca oldu. Fakat public EventSystem es; yapıp tanımlayıp !es.current.IsPointerOverGameObject(parmak.fingerId) diye yapınca "Static member `UnityEngine.EventSystems.EventSystem.current' cannot be accessed with an instance reference, qualify it with a type name instead" diye hata veriyor. Herhangi bir tanımlama yapmayıp dümdüz !EventSystem.current.IsPointerOverGameObject(parmak.fingerId) yapınca sorunsuz çalışıyor.
  • quote:

    Orijinalden alıntı: 1ht1baron

    Çok teşekkür ederim. EventSystem ile sorunsuzca oldu. Fakat public EventSystem es; yapıp tanımlayıp !es.current.IsPointerOverGameObject(parmak.fingerId) diye yapınca "Static member `UnityEngine.EventSystems.EventSystem.current' cannot be accessed with an instance reference, qualify it with a type name instead" diye hata veriyor. Herhangi bir tanımlama yapmayıp dümdüz !EventSystem.current.IsPointerOverGameObject(parmak.fingerId) yapınca sorunsuz çalışıyor.
    Problemi çözebildiğine sevindim. Demek ki yeni güncellemeler sayesinde, bazı şeyleri daha kısa yoldan halletmeyi sağlamışlar. EventSysytem'i public olarak tanımlamadan da oluyomuş.

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