Unity image objesinin collider2D nesnesinde Click ya da çarpışma olmuyor

Mçınar

Hectopat
Katılım
5 Ağustos 2019
Mesajlar
461
Unity ımage objesinin collider2D nesnesinde Click'ya da çarpışma olmuyor neden?
Sahnede silah zeminine tıkladığımda ımage nesnesi ekranda beliriyor ama üzerinde Click yaptığımda kayboluyor (collider2D kullanılmıştır). Aynı durumu gameobject ekleyip collider2D kullandığımda ekrandan kaybolmuyor istediğim bu ama canvas UI elemanlarından ımage nesnesinde bu olmuyor hatta sahnede collider2D açık ve is trigger kapalı halde olmasına ragmen enemy içinden geçiyor bunun sebebi nedir?

Ekran görüntüsü 2022-12-02 171935.png
 
Bununla ilgili yazdığınız kodunuzu da paylaşır mısınız?
Video üzerinden ilerliyorum ama gözden kaçmış olabilir , sizin önerilerinizi bekliyorum.
hit.collider.gameObject.tag kısmında canvas uı elemanları gameobje nesnesi olarak kabul edilmiyor olabilir mi ?

Kod:
 void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            mousePos2D = new Vector2(mousePos.x, mousePos.y);
            hit = Physics2D.Raycast(mousePos2D, Vector2.zero);

            if (hit.collider != null && hit.collider.gameObject.tag !="dusman")
            {
                Debug.Log(hit.collider.gameObject.name);
                dolu = true;
            }
            else
            {
                dolu = false;
                uretilecek_silahin_koordinati = null;
                silah_zemini_scriptim.tanklarin_paneli.SetActive(false);
            }
        }
    }
 
Unity ımage objesinin collider2D nesnesinde Click'ya da çarpışma olmuyor neden?
Sahnede silah zeminine tıkladığımda ımage nesnesi ekranda beliriyor ama üzerinde Click yaptığımda kayboluyor (collider2D kullanılmıştır). Aynı durumu gameobject ekleyip collider2D kullandığımda ekrandan kaybolmuyor istediğim bu ama canvas UI elemanlarından ımage nesnesinde bu olmuyor hatta sahnede collider2D açık ve is trigger kapalı halde olmasına ragmen enemy içinden geçiyor bunun sebebi nedir?

Eki Görüntüle 1590868

Bayağıdır Unity kullanmıyorum ama canvas öğesi ile gameobject çarpışmaya girmez diye hatırlıyorum yani image yerine 2D Objectlerden Sprite kullanmayı dene yine olmazsa colliderın yanına rigidbody koyman gerekebilir rigidbody koyarsan gravityi kapatmayı unutma.
 
Bayağıdır Unity kullanmıyorum ama canvas öğesi ile gameobject çarpışmaya girmez diye hatırlıyorum yani image yerine 2D objectlerden Sprite kullanmayı dene yine olmazsa colliderın yanına rigidbody koyman gerekebilir rigidbody koyarsan gravityi kapatmayı unutma.

Tamam hocam çarpışmaya girmediğini anladım da silah zeminine tıkladıktan sonra image nesnesine tıkladığımda kayboluyor Click ile hatta Console ekranında çıktı vermiyor image colliderı görmüyor mu anlamadım? (çünkü aynı işlemi gameobje nesnesi ile yaptığımda Click yaptığımda collider ı görüyor ve Console ekranında çıkıyor? )
 
Tamam hocam çarpışmaya girmediğini anladım da silah zeminine tıkladıktan sonra image nesnesine tıkladığımda kayboluyor Click ile hatta Console ekranında çıktı vermiyor image colliderı görmüyor mu anlamadım? (çünkü aynı işlemi gameobje nesnesi ile yaptığımda Click yaptığımda collider ı görüyor ve Console ekranında çıkıyor? )

Bu "silah zemini" bir buton mu? Ve tıklayınca ne yapıyor herhangi bir scriptle çalışıyor mu? Çalışıyorsa scriptini atın, tam olarak ne yapmak istediğinizi anlayamadım şu an.
 
Bu "silah zemini" bir buton mu? Ve tıklayınca ne yapıyor herhangi bir scriptle çalışıyor mu? Çalışıyorsa scriptini atın, tam olarak ne yapmak istediğinizi anlayamadım şu an.

Silah_zemini bir gameobje hocam üzerine tıkladığımızda sağ tarafta istediğimiz tank paneli kısmı açılacak. Şu anda gameobje ile yaptım panelin üstüne tıklayınca collider ile etkileşime giriyor ve panel kapanmıyor ama bunu ımage ile yapamıyorum.

Ekran görüntüsü 2022-12-02 201130.png


Kod:
void Update()

    {

        if (Input.GetMouseButtonDown(0))

        {

            mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

            mousePos2D = new Vector2(mousePos.x, mousePos.y);

            hit = Physics2D.Raycast(mousePos2D, Vector2.zero);



            if (hit.collider != null && hit.collider.gameObject.tag !="dusman")

            {

                Debug.Log(hit.collider.gameObject.name);

                dolu = true;

            }

            else

            {

                dolu = false;

                uretilecek_silahin_koordinati = null;

                silah_zemini_scriptim.tanklarin_paneli.SetActive(false);

            }

        }

    }
 

Geri
Yukarı