Şimdi Ara

Unity - Multitouch Sorunu

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
6
Cevap
0
Favori
329
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar. Oyunumda sağ ve sol dokunmatik yön butonları ve zıplama butonu var. Ekranın ise neresine dokunursak oraya ateş ediyoruz. Fakat şöyle bir sorun var. Yön butonlarına veya zıplama butonlarına da dokununca ateş ediyor. Ateş etmemesini istiyorum. Fakat diyelim yön tuşlarına basılı tutup sağa veya sola giderken ekranın bir yerine (butonların olmadığı) dokunduğumuzda ateş etmesini istiyorum. Kodlarım bu şekilde. Yardımcı olabilecek var mı?

    void Update ()
    {
    for (int i = 0; i < Input.touchCount; i++) {
    Touch touch = Input.GetTouch (i);
    if (Input.touchCount > 0) {
    if (touch.phase == TouchPhase.Began) {
    this.Shoot();
    }
    }
    }

    if (CrossPlatformInputManager.GetButton ("Jump") && this.grounded) {
    this.Jump ();
    }
    this.moveVelocity = moveSpeed * CrossPlatformInputManager.GetAxisRaw ("Horizontal");
    }



  • Butonlara tag ekleyip.

    Touch icine de , tagi Buton degilse islem yap dersen sorun cozulur sanirim.

    if (touch.phase == TouchPhase.Began && gameobject.tag !=Buton) {
    this.Shoot();

    Kodu yanlis yazmis olabilirim ama bu yontemle cozulur sanirim



    < Bu mesaj bu kişi tarafından değiştirildi Baxa -- 11 Nisan 2018; 7:38:18 >
    < Bu ileti mobil sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: Baxa

    Butonlara tag ekleyip.

    Touch icine de , tagi Buton degilse islem yap dersen sorun cozulur sanirim.

    if (touch.phase == TouchPhase.Began && gameobject.tag !=Buton) {
    this.Shoot();

    Kodu yanlis yazmis olabilirim ama bu yontemle cozulur sanirim
    Tag yöntemiyle işe yaramıyor maalesef. Fakat böyle yapınca artık butonlara dokununca ateş etmiyor.
    if (touch.phase == TouchPhase.Began && !EventSystem.current.IsPointerOverGameObject(touch.fingerId))
    Şu anda tek sorun kaldı. Dokunduğumuz yeri bu kodlar ile buluyorum.
    	Vector2 GetMousePosition()
    {
    return Camera.main.ScreenPointToRay(CrossPlatformInputManager.mousePosition).origin;
    }

    Butonlara basınca ise dokunduğumuz yeri bulmasını istemiyorum. Ben de böyle yaptım:

        Vector2 GetMousePosition()
    { if (!EventSystem.current.IsPointerOverGameObject (fingerID)) {
    return Camera.main.ScreenPointToRay (Input.mousePosition).origin; }}

    Fakat "error CS0161: `PlayerController.GetMousePosition()': not all code paths return a value" diye hata verdi.



    < Bu mesaj bu kişi tarafından değiştirildi 1ht1baron -- 11 Nisan 2018; 17:39:46 >




  • Daha pratik yolunu söylüyim.

    Image oluştur görünmez yap tüm ekranı kaplat. Pozisyonunu doğru ayarlayınca butonların arkasında kalıcak. Yani en son triggerlanan şey o görünmez şey olcak.

    Button atayıp oradan scriptinden çalıştırabilirsin.
  • quote:

    Orijinalden alıntı: Okeanix

    Daha pratik yolunu söylüyim.

    Image oluştur görünmez yap tüm ekranı kaplat. Pozisyonunu doğru ayarlayınca butonların arkasında kalıcak. Yani en son triggerlanan şey o görünmez şey olcak.

    Button atayıp oradan scriptinden çalıştırabilirsin.
    Bunu raycast ile halletmiştim. Buraya yazmayı unutmuşum İlk oyunumu yayınlamama az kaldı fakat sınavlar dolayısıyla sanırım 2 ay erteleyeceğim.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.