Şimdi Ara

Unity Raycasting ile Hazırlanmış Butonlara Nasıl Multitouch Özelliği Kazandırılır? [ÇÖZÜLDÜ]

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
4
Cevap
0
Favori
303
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
Öne Çıkar
0 oy
Sayfa: 1
Giriş
Mesaj
  • Raycast ile 2 adet buton oluşturdum (Yani 2 adet gameobject oluşturup isimlerini JumpButton ve FireButton yapıp ikisine de Collider verdim. Fakat ne yaptıysam multitouch olmuyor. Zıplama tuşuna basılı tutarken ateş de edilebilmesini istiyorum mesela. Yardımcı olabilir misiniz arkadaşlar?

    Birincisi karakterin zıplaması için JumpButton:

    if (Input.GetMouseButton (0) && this.grounded) {
    Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
    RaycastHit hit;

    if (Physics.Raycast (ray, out hit, 100)) {


    if (hit.transform.gameObject.name == "JumpButton")

    this.Jump ();
    }
    }


    Diğeri de karakterin ateş etmesi için FireButton:

    if (Input.GetMouseButton (0)) {
    Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
    RaycastHit hit;

    if (Physics.Raycast (ray, out hit, 100)) {

    if (hit.transform.gameObject.name == "FireButton")

    this.Fire ();
    }
    }



    < Bu mesaj bu kişi tarafından değiştirildi 1ht1baron -- 25 Temmuz 2017; 17:39:12 >



    _____________________________




  • Mobil için geliştiriyorsan Touch fonksiyonlarını kullanabilirsin.
    UI kısmında Button componentini ekleyebiliyorken neden raycast ile denetliyorsun onu anlamadım.

    İllada bu şekilde kullanmak istiyorum diyorsan zıplama için Input.GetMouseButton(0), ateş etmek için Input.GetMouseButton(1) kullanabilirsin.

    Input.GetMouseButton(0) bu kod editörde çalışıyorsa mouseun sol tıkını alıyor.
    Androidde çalışıyorsada en son tıklanan parmak hangisiyse onun pozisyonunu alır. Yani birinci parmak ile ateşe basılı tutarken diğer parmağınla zıplamaya basarsan ateşi iptal edip zıplama fonksiyonunu çalıştırır.

    Input.GetMouseButton(0) : Mouseun sol tıkı - Androidde ekrandaki ilk parmak
    Input.GetMouseButton(1) : Mouseun sağ tıkı - Androidde ekrandaki ikinci parmak
    Input.GetMouseButton(2) : Mouseun tekerleği - Androidde karşılığı yok galiba



    < Bu mesaj bu kişi tarafından değiştirildi Clavery -- 24 Temmuz 2017; 23:23:24 >
    _____________________________
  • quote:

    Orijinalden alıntı: Clavery

    Mobil için geliştiriyorsan Touch fonksiyonlarını kullanabilirsin.
    UI kısmında Button componentini ekleyebiliyorken neden raycast ile denetliyorsun onu anlamadım.

    İllada bu şekilde kullanmak istiyorum diyorsan zıplama için Input.GetMouseButton(0), ateş etmek için Input.GetMouseButton(1) kullanabilirsin.

    Input.GetMouseButton(0) bu kod editörde çalışıyorsa mouseun sol tıkını alıyor.
    Androidde çalışıyorsada en son tıklanan parmak hangisiyse onun pozisyonunu alır. Yani birinci parmak ile ateşe basılı tutarken diğer parmağınla zıplamaya basarsan ateşi iptal edip zıplama fonksiyonunu çalıştırır.

    Input.GetMouseButton(0) : Mouseun sol tıkı - Androidde ekrandaki ilk parmak
    Input.GetMouseButton(1) : Mouseun sağ tıkı - Androidde ekrandaki ikinci parmak
    Input.GetMouseButton(2) : Mouseun tekerleği - Androidde karşılığı yok galiba

    Öncelikle yorumun için teşekkürler. Mobil için geliştiriyorum. UI kısmındaki buttonlar çok kötü ya da ben beceremedim. Mesela ateş etme tuşunu basılı tutunca da ateş atmasını istiyorum. Kılıç butonuna ise basılı tutmayıp sadece 1 kere basınca kılıcı sallamasını istiyorum. Ama bunları bir türlü buttonlar ile yapamamıştım. Fakat raycast ile hemen yaptım. Çok da basit oldu. Tek sıkıntı multitouch artık. İki buttonda da Input.GetMouseButton(0) olunca malesef multitouch olmuyor. Birine Input.GetMouseButton(1) koyunca da o butona 2 parmakla basmak gerekiyor.
    _____________________________




  • Sonunda çözdüm. Buradan yararlandım:https://yasirkula.com/2013/07/28/unity-onmousedown-fonksiyonunu-androide-uyarlamak/


    void Update ()
    {
    Camera camera = Camera.main;
    RaycastHit hit;
    if( camera == null )
    return;
    Camera camera = Camera.main;
    RaycastHit hit;
    for( int i = 0; i < Input.touchCount; i++ )
    {Touch parmak = Input.GetTouch( i );
    if (parmak.phase == TouchPhase.Stationary && this.grounded) {
    if (Physics.Raycast (camera.ScreenPointToRay (parmak.position), out hit)) { if (hit.transform.gameObject.name == "JumpButton")
    this.Jump ();
    }
    }
    }

    for (int i = 0; i < Input.touchCount; i++) {
    Touch parmak = Input.GetTouch( i );
    if (parmak.phase == TouchPhase.Began) {
    if (Physics.Raycast (camera.ScreenPointToRay (parmak.position), out hit)) {
    if (hit.transform.gameObject.name == "FireButton")
    this.Fire ();
    }
    }
    }
    }



    < Bu mesaj bu kişi tarafından değiştirildi 1ht1baron -- 25 Temmuz 2017; 17:35:45 >
    _____________________________




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.