Şimdi Ara

Unity Canvas ile ilgili sorum var.

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
12
Cevap
0
Favori
414
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhabalar benim canvasta bir labirent yapmam gerekiyor. Bu labirentin içindeki kutuyu sürükle birak yöntemiyle taşımak istiyorum fakat bir türlü pozisyonunu sınırlayamadım. Projeyi bir vites gibi düşünebilirsiniz. Vites topuzunu oynatırken belli bölgeler üzerinde hareket etmesi gerekir. Bunu yapamadım. Yardımcı olabilecek varmı?



  • Unity.EventSystems altindaki IPointerEnterHandler. IPointerExitHandler, IDragHandler ve IDropHandler isinize yarayabilir. Bence sinirlandirma yapmak icin GridLayoutGroup kullanin. Bu LayoutGroup'un icinde bulunacak her elemente de ozel bir script yazin, LabyrinthCell gibi bir adi olsun. Her hucre sag sol yukari ve asagisindaki hucreleri bilsin, bu sayede hareket 4 yone sabitlenebilir. Ve her hucrenin de icine girip girilemeyecegini belirten bir boolean degeri olsun. Eger bu deger true ise icine girilebilsin, degilse girilemesin.

    En basta bahsettigim Handler'larin nasil calistigini ogrenirseniz bu dediklerimi kolayca yapabilirsiniz. Bir sorunuz olursa yardimci olmaya calisirim.
  • SpesifikBrush S kullanıcısına yanıt
    Öncelikle yanıtınız için teşekkürler. Sürükleme işlemini dediğinin yol ile yaptım. Sınırlama işlemi içinde position büyükse küçükse diye if oluşturarak hallettim fakat bilgisayarda ve kendi telefonum da sorunsuzca çalışırken nox,bluestack ve 2 tane farklı telefona kurup denememe rağman sürükleme çalışmadı. Bunun sebebi nedir acaba?
  • ertuğrul k E kullanıcısına yanıt
    Hmm, bilemiyorum hocam. Ekran boyutuyla alakalı olabilir. Canvas ayarlarını doğru yaptınız mı? Canvas Scaler'dan Scale With Screen Size seçip, referans çözünürlüğü girerseniz Canvas kendini o çözünürlükte kalmak için ayarlar. Tavsiyem 18:9 ya da 19.5:9 oranlı bir çözünürlük girin, çünkü 16:9 girerseniz yeni uzun ekran telefonlarda canvas yakınlaştırıyor ve üst alt kısımları ekran dışında kalıyor.

    Bir de RectTransform'ları sabitlemek için anchor point kullanın. Mesela sağ üstte olmasını istediğiniz elementi sağ üste sabitleyip pozisyonunu ona göre belirleyin. Eğer bir elementin bütün ekranı kaplamasını istiyorsanız Alt tuşuna basılı tutarken anchor menüsünde sağ alttaki genişletme tuşuna basın, o element her zaman bir üstündeki elementin boyutunda olacak (mesela direk canvasın child'ı ise tam ekran olur).

    < Bu ileti mini sürüm kullanılarak atıldı >
  • SpesifikBrush S kullanıcısına yanıt
    Hocam sorun şu. Telefonun ekranına butonu koyuyorum ve transform.position değerine bakıyorum. Birinde 540,960,0 çıkıyor ki bu olması gereken yani ben unityde yaparken ki değer de bu. Çalışmayan cihazda ise 360,640,0 gösteriyor. Haliyle sınır değerler kayıyor.Bunu nasıl düzeltebilirim?

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • ertuğrul k E kullanıcısına yanıt
    Hocam iste ben de diyorum ki, dogru tasarladiginiz zaman kaysa bile calisir. Belki baska bir Image ya da Canvas Group falan uzerini kapatiyor olabilir. Dokunmak istediginiz objelerin uzerinde baska bir Raycast Target olmamasi lazim. Aklima bunlar geliyor su an.

    EDIT: Bir de, sinirlari vs elle giriyorsaniz yapmayin. Dinamik olarak atayin onlari ki her yere adapte olabilsin.



    < Bu mesaj bu kişi tarafından değiştirildi SpesifikBrush -- 30 Mart 2020; 18:53:43 >
  • SpesifikBrush S kullanıcısına yanıt
    Elle giriyorum hocam. Ama söylediğim noktayı dinamik girmem zor cunki mouseposition alıyorum ve o sınırlar içinde hareket etmesini sağlıyorum. Ama dediğiniz gibi sınırları kendi elimle girdiğim için bu sıkıntı yaşanıyor. Daha nasil çözeceğimi bulamadım. Mesele ornek verecek olursam mousepostion.x<100 ise false yapıyorum. Bu şekilde x 100den büyükse hareket saglanmiyor. Ama ekran farklı olunca o 100 değeri farklı bir konuma denk geliyor. Umarım anlatabilmisimdir.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • ertuğrul k E kullanıcısına yanıt
    Hocam, oluşturmak istediğiniz oyun mekaniğini biraz detaylıca açıklayabilir misiniz? Problemi daha iyi anlayabilirsek uygun bir çözüm yolu bulmak daha kolay olur.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • SpesifikBrush S kullanıcısına yanıt
    Unity Canvas ile ilgili sorum var.

    Hocam beyaz kare görünen çerçevenin içerisinde sürüklenebilecek. Oradan dışarı çıkamayacak ve ortadaki beyaz dikdörtgene de değemeyecek. Orası duvar yani. Sağ tarafa geçince de orada ki belli bir noktaya geçecek. Ben bunu o çerçeve içerisinde ki noktaların dışındaki transform.position değerlerini ve o duvarın transform.position değerlerini false yaptım ve true olduğunda hareket sağlansın dedim oldu fakat bazı telefonlarda maalesef çalışmadı. Umarım anlatabilmişimdir.




  • ertuğrul k E kullanıcısına yanıt
    Anladim hocam. Bunu canvas ile degil de normal GameObject'ler ile daha rahat yaparsiniz aslinda. Her objenin collideri olur Cerceve ve duvarin static rigidbody'li, Player objeniz de dynamic rigidbody'li olur. Sonra bu buldugum linkeki Non-UI objeler icin olan cozumu implement edin. Sonuc olarak pointeriniz (fare ya da dokunmatik ekranda parmak) player objenizi tespit edip hareket ettirebilir.
    https://stackoverflow.com/questions/41391708/how-to-detect-click-touch-events-on-ui-and-gameobjects
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.