{"id":41529,"date":"2026-05-01T21:00:48","date_gmt":"2026-05-01T18:00:48","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/"},"modified":"2026-05-01T21:00:48","modified_gmt":"2026-05-01T18:00:48","slug":"godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/","title":{"rendered":"Godot 4.7: Dokunmatik Ekranlar \u0130\u00e7in Neredeyse Haz\u0131r Sanal Joystick"},"content":{"rendered":"<h2>Godot 4.7: Dokunmatik Ekranlar \u0130\u00e7in Neredeyse Haz\u0131r Sanal Joystick<\/h2>\n<p>Mobil oyun geli\u015ftirme d\u00fcnyas\u0131na ad\u0131m att\u0131\u011f\u0131n\u0131zda, dokunmatik ekranlar i\u00e7in kullan\u0131c\u0131 dostu ve etkili kontrol mekanizmalar\u0131 tasarlamak en b\u00fcy\u00fck zorluklardan biridir. \u00d6zellikle aksiyon dolu oyunlarda, oyuncular\u0131n ekrana dokunarak karakterlerini hassas bir \u015fekilde kontrol etmeleri gerekir. Geleneksel sanal joystick&#8217;ler, bu ihtiyac\u0131 kar\u015f\u0131lamaya \u00e7al\u0131\u015fsa da, \u00e7o\u011fu zaman yetersiz kal\u0131r ve geli\u015ftiriciler i\u00e7in ek karma\u015f\u0131kl\u0131k getirir. \u0130\u015fte tam da bu noktada, Godot Engine&#8217;in 4.7 s\u00fcr\u00fcm\u00fcnde hayat\u0131m\u0131za giren &#8220;VirtualJoystick&#8221; (Sanal Joystick) \u00f6zelli\u011fi devreye giriyor ve mobil oyun geli\u015ftirme deneyimini k\u00f6kten de\u011fi\u015ftiriyor. Bu makalede, Godot 4.7&#8217;deki bu yeni ve heyecan verici \u00f6zelli\u011fi derinlemesine inceleyecek, temel kavramlar\u0131n\u0131 a\u00e7\u0131klayacak, nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 ad\u0131m ad\u0131m g\u00f6sterecek ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla bu yenili\u011fin mobil oyunlar\u0131m\u0131za neler kataca\u011f\u0131n\u0131 tart\u0131\u015faca\u011f\u0131z. E\u011fer siz de mobil platformlar i\u00e7in oyunlar geli\u015ftiriyor ve dokunmatik kontrolleri daha iyi hale getirmek istiyorsan\u0131z, bu makale tam size g\u00f6re.<\/p>\n<h3>Sanal Joystick Nedir ve Neden \u00d6nemlidir?<\/h3>\n<p>Mobil oyun geli\u015ftirme s\u00fcrecinde, fiziksel bir kontrol cihaz\u0131 olmad\u0131\u011f\u0131nda oyuncular\u0131n karakterlerini veya aray\u00fczlerini y\u00f6netebilmeleri i\u00e7in dokunmatik ekranlara dayal\u0131 kontrol sistemleri kullan\u0131l\u0131r. Bunlar\u0131n en yayg\u0131n olan\u0131, ekranda g\u00f6rsel bir joystick sim\u00fclasyonu sunan &#8220;sanal joystick&#8221;tir. Temel mant\u0131\u011f\u0131 olduk\u00e7a basittir: oyuncu, ekrandaki bir alana dokunur ve parma\u011f\u0131n\u0131 hareket ettirerek bir y\u00f6n belirler. Bu y\u00f6n bilgisi, oyun motoru taraf\u0131ndan alg\u0131lanarak karakterin hareketini veya ba\u015fka bir eylemi tetikler. Ancak, geleneksel sanal joystick&#8217;lerin tasar\u0131m\u0131 ve uygulanmas\u0131, geli\u015ftiriciler i\u00e7in baz\u0131 \u00f6nemli zorluklar bar\u0131nd\u0131r\u0131r.<\/p>\n<p>\u00d6ncelikle, g\u00f6rsel olarak tatmin edici ve i\u015flevsel bir sanal joystick olu\u015fturmak, s\u0131f\u0131rdan kodlama gerektirebilir. Bu, geli\u015ftirme s\u00fcresini uzat\u0131r ve hata yapma olas\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r. \u0130kinci olarak, farkl\u0131 ekran boyutlar\u0131na ve \u00e7\u00f6z\u00fcn\u00fcrl\u00fcklerine uyum sa\u011flayabilen, duyarl\u0131 ve hassas bir sanal joystick tasarlamak teknik bilgi gerektirir. Oyuncunun parma\u011f\u0131n\u0131n konumuna g\u00f6re do\u011fru y\u00f6nlendirmeyi sa\u011flamak, hatta joystick&#8217;in merkez noktas\u0131n\u0131n nas\u0131l belirlenece\u011fi gibi detaylar, geli\u015ftiricileri u\u011fra\u015ft\u0131r\u0131r. Dahas\u0131, joystick&#8217;in g\u00f6r\u00fcn\u00fcrl\u00fc\u011f\u00fcn\u00fc, boyutunu ve tepki hassasiyetini ayarlamak, kullan\u0131c\u0131 deneyimini do\u011frudan etkiler. Oyuncunun oyunun ak\u0131\u015f\u0131n\u0131 bozmadan kontrol\u00fc rahat\u00e7a kullanabilmesi i\u00e7in bu ayarlar\u0131n optimize edilmesi kritik \u00f6neme sahiptir.<\/p>\n<p>Bu zorluklar g\u00f6z \u00f6n\u00fcne al\u0131nd\u0131\u011f\u0131nda, oyun motorlar\u0131n\u0131n yerle\u015fik ve \u00f6zelle\u015ftirilebilir sanal joystick \u00e7\u00f6z\u00fcmleri sunmas\u0131, mobil oyun geli\u015ftiricileri i\u00e7in b\u00fcy\u00fck bir nimettir. Godot Engine&#8217;in 4.7 s\u00fcr\u00fcm\u00fcnde sunulan VirtualJoystick, tam da bu ihtiyaca cevap veren, geli\u015ftiricilerin hayat\u0131n\u0131 kolayla\u015ft\u0131rmay\u0131 ama\u00e7layan g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Bu yeni \u00f6zellik sayesinde, geli\u015ftiriciler, karma\u015f\u0131k kodlama s\u00fcre\u00e7lerine girmeden, h\u0131zl\u0131ca entegre edebilecekleri, \u00f6zelle\u015ftirilebilir ve performansl\u0131 sanal joystick&#8217;ler olu\u015fturabilirler. Bu da daha \u00e7ok oyun mant\u0131\u011f\u0131na odaklanmalar\u0131n\u0131 ve daha iyi oyun deneyimleri sunmalar\u0131n\u0131 sa\u011flar. K\u0131sacas\u0131, sanal joystick&#8217;ler mobil oyunlar\u0131n olmazsa olmaz\u0131d\u0131r ve Godot 4.7&#8217;nin bu alandaki yenili\u011fi, sekt\u00f6re \u00f6nemli bir ivme kazand\u0131racakt\u0131r.<\/p>\n<h3>Godot 4.7&#8217;deki VirtualJoystick&#8217;in Getirdikleri Neler?<\/h3>\n<p>Godot Engine&#8217;in 4.7 s\u00fcr\u00fcm\u00fcndeki VirtualJoystick \u00f6zelli\u011fi, mobil oyun geli\u015ftirme s\u00fcrecini \u00f6nemli \u00f6l\u00e7\u00fcde basitle\u015ftiren ve iyile\u015ftiren bir dizi yenilik sunuyor. Bu \u00f6zellik, ad\u0131ndan da anla\u015f\u0131laca\u011f\u0131 gibi, geli\u015ftiricilerin oyunlar\u0131na kolayca entegre edebilecekleri, tamamen yerle\u015fik bir sanal joystick bile\u015feni olarak kar\u015f\u0131m\u0131za \u00e7\u0131k\u0131yor. Art\u0131k, daha \u00f6nceki s\u00fcr\u00fcmlerde oldu\u011fu gibi, kendi sanal joystick sisteminizi s\u0131f\u0131rdan olu\u015fturmak veya \u00fc\u00e7\u00fcnc\u00fc parti eklentilere ba\u011f\u0131ml\u0131 kalmak zorunda de\u011filsiniz. Bu, hem geli\u015ftirme s\u00fcresini k\u0131salt\u0131r hem de potansiyel uyumluluk sorunlar\u0131n\u0131 ortadan kald\u0131r\u0131r.<\/p>\n<p>VirtualJoystick&#8217;in en dikkat \u00e7ekici \u00f6zelliklerinden biri, sundu\u011fu y\u00fcksek d\u00fczeyde \u00f6zelle\u015ftirilebilirlik. Geli\u015ftiriciler, joystick&#8217;in g\u00f6r\u00fcn\u00fcm\u00fcnden davran\u0131\u015f\u0131na kadar bir\u00e7ok parametreyi kendi oyunlar\u0131n\u0131n estetik ve i\u015flevsel gereksinimlerine g\u00f6re ayarlayabilirler. \u00d6rne\u011fin, joystick&#8217;in dokunmatik alan\u0131n\u0131n boyutu, merkez noktas\u0131, rengi, hatta dokunuldu\u011funda ve hareket ettirildi\u011finde nas\u0131l bir g\u00f6rsel geri bildirim verece\u011fi gibi detaylar \u00fczerinde tam kontrol sahibi olurlar. Bu, oyunun genel temas\u0131yla uyumlu, kullan\u0131c\u0131lar i\u00e7in sezgisel ve estetik a\u00e7\u0131dan ho\u015f bir kontrol deneyimi yaratmay\u0131 m\u00fcmk\u00fcn k\u0131lar. Belki de bir retro oyun i\u00e7in piksel sanat tarz\u0131nda bir joystick tasarlamak isteyebilirsiniz, ya da f\u00fct\u00fcristik bir aksiyon oyunu i\u00e7in \u015feffaf ve neon efektli bir kontrol paneli. VirtualJoystick, bu t\u00fcr yarat\u0131c\u0131 \u00f6zg\u00fcrl\u00fckleri sunar.<\/p>\n<p>Performans a\u00e7\u0131s\u0131ndan da \u00f6nemli iyile\u015ftirmeler sunan bu \u00f6zellik, mobil cihazlar\u0131n s\u0131n\u0131rl\u0131 kaynaklar\u0131n\u0131 daha verimli kullan\u0131r. Yerle\u015fik bir \u00e7\u00f6z\u00fcm olmas\u0131, gereksiz kod karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 azalt\u0131r ve daha ak\u0131c\u0131 bir oyun deneyimi sa\u011flar. \u00d6zellikle h\u0131zl\u0131 tempolu oyunlarda, gecikmesiz ve tepkisel kontroller hayati \u00f6nem ta\u015f\u0131r. VirtualJoystick, bu tepkiselli\u011fi sa\u011flamak i\u00e7in optimize edilmi\u015f algoritmalar kullan\u0131r. Ayr\u0131ca, farkl\u0131 dokunmatik giri\u015fleri do\u011fru bir \u015fekilde i\u015fleyerek, oyuncunun niyetini en iyi \u015fekilde anlamaya \u00e7al\u0131\u015f\u0131r. Bu da daha hassas hareketler ve daha keyifli bir oyun kontrol\u00fc anlam\u0131na gelir.<\/p>\n<p>Son olarak, VirtualJoystick&#8217;in kullan\u0131m\u0131 olduk\u00e7a kolayd\u0131r. Godot&#8217;un g\u00f6rsel edit\u00f6r\u00fc arac\u0131l\u0131\u011f\u0131yla sahnenize bir VirtualJoystick d\u00fc\u011f\u00fcm\u00fc ekleyebilir ve ard\u0131ndan Inspector panelinden gerekli ayarlar\u0131 yapabilirsiniz. Gerekli durumlarda, GDScript veya C# gibi betik dilleriyle daha geli\u015fmi\u015f \u00f6zelle\u015ftirmeler ve mant\u0131klar eklemek de m\u00fcmk\u00fcnd\u00fcr. Bu, hem yeni ba\u015flayanlar hem de deneyimli geli\u015ftiriciler i\u00e7in eri\u015filebilir bir \u00e7\u00f6z\u00fcm sunar. Bu entegre yakla\u015f\u0131m, Godot&#8217;un mobil geli\u015ftirme ekosistemini daha da g\u00fc\u00e7lendirerek, geli\u015ftiricilere daha rekabet\u00e7i ve kullan\u0131c\u0131 dostu mobil oyunlar yaratma imkan\u0131 tan\u0131r.<\/p>\n<h3>Sanal Joystick Nas\u0131l Entegre Edilir: Ad\u0131m Ad\u0131m K\u0131lavuz<\/h3>\n<p>Godot 4.7&#8217;deki VirtualJoystick \u00f6zelli\u011fini projenize entegre etmek, d\u00fc\u015f\u00fcnd\u00fc\u011f\u00fcn\u00fczden \u00e7ok daha kolay bir s\u00fcre\u00e7. Bu b\u00f6l\u00fcm, bu \u00f6zelli\u011fi ad\u0131m ad\u0131m nas\u0131l ekleyece\u011finizi ve temel ayarlamalar\u0131 nas\u0131l yapaca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde a\u00e7\u0131klayacak. Bu k\u0131lavuz, konuya yeni ba\u015flayan geli\u015ftiricilerin bile rahatl\u0131kla takip edebilece\u011fi \u015fekilde tasarlanm\u0131\u015ft\u0131r.<\/p>\n<p>\u0130lk ad\u0131m olarak, Godot Engine&#8217;i a\u00e7\u0131n ve yeni bir proje olu\u015fturun veya mevcut projenizi a\u00e7\u0131n. Oyununuzun sahnesini (Scene) a\u00e7\u0131n. Ard\u0131ndan, sahne a\u011fac\u0131na (Scene Tree) sa\u011f t\u0131klayarak veya sahne a\u011fac\u0131n\u0131n alt\u0131ndaki &#8220;+&#8221; d\u00fc\u011fmesine basarak yeni bir d\u00fc\u011f\u00fcm (Node) ekleyin. A\u00e7\u0131lan d\u00fc\u011f\u00fcm listesinde &#8220;Control&#8221; kategorisi alt\u0131nda veya do\u011frudan arama \u00e7ubu\u011funa &#8220;VirtualJoystick&#8221; yazarak bu d\u00fc\u011f\u00fcm\u00fc bulun ve ekleyin. Bu, sahnenize temel bir sanal joystick bile\u015feni ekleyecektir.<\/p>\n<p>D\u00fc\u011f\u00fcm\u00fc ekledikten sonra, Inspector panelinde VirtualJoystick d\u00fc\u011f\u00fcm\u00fcn\u00fcn \u00e7e\u015fitli \u00f6zelliklerini g\u00f6receksiniz. Bu \u00f6zellikler, joystick&#8217;in g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc ve davran\u0131\u015f\u0131n\u0131 kontrol etmenizi sa\u011flar. \u0130\u015fte en \u00f6nemli ayarlardan baz\u0131lar\u0131:<\/p>\n<p>*   <strong><code>name<\/code><\/strong>: Joystick d\u00fc\u011f\u00fcm\u00fcn\u00fcz i\u00e7in anlaml\u0131 bir isim verin. \u00d6rne\u011fin, &#8220;PlayerMovementJoystick&#8221;.<br \/>\n*   <strong><code>position<\/code><\/strong>: Joystick&#8217;in ekrandaki konumunu belirler. Genellikle ekran\u0131n sol alt veya sa\u011f alt k\u00f6\u015felerine yerle\u015ftirilir.<br \/>\n*   <strong><code>size<\/code><\/strong>: Joystick&#8217;in dokunmatik alan\u0131n\u0131n boyutunu ayarlar. Bu, oyuncunun joystick&#8217;i rahat\u00e7a kavrayabilmesi i\u00e7in \u00f6nemlidir.<br \/>\n*   <strong><code>modulate<\/code><\/strong>: Joystick&#8217;in genel rengini ve \u015feffafl\u0131\u011f\u0131n\u0131 ayarlamak i\u00e7in kullan\u0131l\u0131r. Oyununuzun temas\u0131na uygun renkler se\u00e7ebilirsiniz.<br \/>\n*   <strong><code>input_axis_name<\/code><\/strong>: Bu, joystick&#8217;in hangi eksenleri kontrol edece\u011fini belirler. Genellikle &#8220;move_x&#8221; ve &#8220;move_y&#8221; gibi isimler verilir. Bu isimler, daha sonra oyun mant\u0131\u011f\u0131n\u0131zda bu joystick&#8217;ten gelen girdiyi almak i\u00e7in kullan\u0131lacakt\u0131r.<br \/>\n*   <strong><code>deadzone<\/code><\/strong>: Joystick&#8217;in merkezinde, herhangi bir girdi olarak alg\u0131lanmayacak bir &#8220;\u00f6l\u00fc b\u00f6lge&#8221; tan\u0131mlar. Bu, parma\u011f\u0131n\u0131z\u0131n hafif\u00e7e kaymas\u0131 durumunda karakterin istem d\u0131\u015f\u0131 hareket etmesini engeller.<br \/>\n*   <strong><code>max_input_distance<\/code><\/strong>: Oyuncunun parma\u011f\u0131n\u0131 joystick&#8217;in merkezinden ne kadar uza\u011fa \u00e7ekebilece\u011fini belirler. Bu, hareketin hassasiyetini etkiler.<br \/>\n*   <strong><code>snap_to_center<\/code><\/strong>: Bu se\u00e7enek aktifken, joystick&#8217;in merkezi, oyuncu dokundu\u011fu noktaya sabitlenir. Devre d\u0131\u015f\u0131 b\u0131rak\u0131ld\u0131\u011f\u0131nda ise, oyuncunun ilk dokundu\u011fu nokta joystick&#8217;in merkezi olur.<br \/>\n*   <strong><code>background_visible<\/code><\/strong>: Joystick&#8217;in arkas\u0131ndaki dairesel alan\u0131 g\u00f6sterip g\u00f6stermeyece\u011fini belirler.<br \/>\n*   <strong><code>handle_visible<\/code><\/strong>: Joystick&#8217;in hareketli topunu g\u00f6sterip g\u00f6stermeyece\u011fini belirler.<\/p>\n<p>Bu ayarlamalar\u0131 yapt\u0131ktan sonra, VirtualJoystick&#8217;ten gelen girdiyi oyununuzda kullanmak i\u00e7in bir betik (script) eklemeniz gerekecektir. Genellikle, bu joystick&#8217;i kontrol eden karakterin veya bir &#8220;InputManager&#8221; d\u00fc\u011f\u00fcm\u00fcn\u00fcn beti\u011fine bu kodu eklersiniz.<\/p>\n<p>\u00d6rnek bir GDScript kodu:<\/p>\n<pre><code class=\"language-gdscript\"># \u00d6rnek betik, bir karakterin hareketini kontrol etmek i\u00e7in VirtualJoystick kullan\u0131r.\n\nextends CharacterBody2D\n\n@onready var movement_joystick = $PlayerMovementJoystick # Sahnenizdeki VirtualJoystick d\u00fc\u011f\u00fcm\u00fcn\u00fcn yolu\n\nvar movement_vector = Vector2.ZERO\n\nfunc _process(delta):\n\t# VirtualJoystick'ten gelen girdiyi al\n\tvar joystick_input = movement_joystick.get_input_vector()\n\n\t# Girdiyi hareket vekt\u00f6r\u00fcne ata\n\tmovement_vector = joystick_input\n\n\t# Karakterin hareketini g\u00fcncelle\n\tvelocity = movement_vector * speed\n\tmove_and_slide()\n\nfunc _input(event):\n\t# Dokunmatik olaylar\u0131 i\u015flemek i\u00e7in VirtualJoystick'in kendi _input fonksiyonunu kullan\u0131r.\n\t# Bu fonksiyon, VirtualJoystick d\u00fc\u011f\u00fcm\u00fcne otomatik olarak ba\u011flan\u0131r.\n\tpass<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>movement_joystick.get_input_vector()<\/code> fonksiyonu, VirtualJoystick'in o anki y\u00f6n ve yo\u011funluk vekt\u00f6r\u00fcn\u00fc d\u00f6nd\u00fcr\u00fcr. Bu vekt\u00f6r daha sonra karakterin <code>velocity<\/code> \u00f6zelli\u011fini g\u00fcncellemek i\u00e7in kullan\u0131l\u0131r. <code>_process<\/code> fonksiyonu, her karede g\u00fcncellenen hareket mant\u0131\u011f\u0131n\u0131 i\u00e7erir. Unutmay\u0131n ki, <code>PlayerMovementJoystick<\/code> k\u0131sm\u0131n\u0131 kendi sahnenizdeki VirtualJoystick d\u00fc\u011f\u00fcm\u00fcn\u00fcz\u00fcn yolu ile de\u011fi\u015ftirmeniz gerekecektir. Bu ad\u0131m ad\u0131m k\u0131lavuz, temel entegrasyonu sa\u011flamak i\u00e7in yeterlidir. Daha karma\u015f\u0131k senaryolar i\u00e7in bu temel \u00fczerine in\u015fa edebilirsiniz.<\/p>\n<h3>G\u00f6rsel \u00d6zelle\u015ftirme ve Tema Olu\u015fturma<\/h3>\n<p>Godot 4.7'deki VirtualJoystick'in sundu\u011fu en g\u00fc\u00e7l\u00fc y\u00f6nlerinden biri, g\u00f6rsel \u00f6zelle\u015ftirme se\u00e7eneklerinin zenginli\u011fidir. Bu, oyununuzun genel esteti\u011fiyle m\u00fckemmel bir uyum sa\u011flayacak, kullan\u0131c\u0131lar i\u00e7in hem i\u015flevsel hem de g\u00f6rsel olarak \u00e7ekici kontrol mekanizmalar\u0131 tasarlaman\u0131za olanak tan\u0131r. Sadece renkleri de\u011fi\u015ftirmekle kalmaz, ayn\u0131 zamanda joystick'in farkl\u0131 durumlar\u0131 i\u00e7in \u00f6zel g\u00f6rseller de atayabilirsiniz.<\/p>\n<p>Temel \u00f6zelle\u015ftirmeler Inspector panelinden yap\u0131labilir. <code>modulate<\/code> \u00f6zelli\u011fi ile joystick'in ana rengini ve \u015feffafl\u0131\u011f\u0131n\u0131 ayarlayabilirsiniz. Ancak, daha geli\u015fmi\u015f bir g\u00f6rsel tema olu\u015fturmak istedi\u011finizde, <code>texture<\/code> \u00f6zelliklerini kullanman\u0131z gerekecektir. VirtualJoystick, genellikle iki ana g\u00f6rsel \u00f6\u011feye sahiptir:<\/p>\n<p>*   <strong><code>background_texture<\/code><\/strong>: Joystick'in arkas\u0131ndaki sabit dairesel alan\u0131n dokusunu (texture) belirler. Bu, joystick'in temel \u00e7er\u00e7evesi olarak d\u00fc\u015f\u00fcn\u00fclebilir.<br \/>\n*   <strong><code>handle_texture<\/code><\/strong>: Oyuncunun parma\u011f\u0131yla hareket ettirdi\u011fi, joystick'in top veya kol k\u0131sm\u0131n\u0131n dokusunu belirler.<\/p>\n<p>Bu dokular\u0131 kullanmak i\u00e7in, \u00f6ncelikle oyununuzun varl\u0131klar (assets) klas\u00f6r\u00fcne uygun g\u00f6rselleri (PNG, JPG gibi) aktarman\u0131z gerekir. Bu g\u00f6rseller, oyununuzun sanat tarz\u0131na uygun olmal\u0131d\u0131r. \u00d6rne\u011fin, bir bilim kurgu oyunu i\u00e7in metalik veya neon efektli dokular kullanabilirsiniz. Klasik bir arcade oyunu i\u00e7in ise piksel sanat tarz\u0131nda dokular tercih edilebilir.<\/p>\n<p>Bu dokular\u0131 VirtualJoystick d\u00fc\u011f\u00fcm\u00fcn\u00fcn Inspector panelindeki ilgili alanlara s\u00fcr\u00fckleyip b\u0131rakarak veya dosya se\u00e7iciyi kullanarak atayabilirsiniz. Dokular\u0131 atad\u0131ktan sonra, <code>background_visible<\/code> ve <code>handle_visible<\/code> \u00f6zelliklerini kullanarak bu g\u00f6rsel \u00f6\u011felerin g\u00f6r\u00fcn\u00fcrl\u00fc\u011f\u00fcn\u00fc kontrol edebilirsiniz.<\/p>\n<p>Daha da ileri giderek, joystick'in farkl\u0131 etkile\u015fim durumlar\u0131 i\u00e7in ayr\u0131 dokular belirlemek m\u00fcmk\u00fcnd\u00fcr. \u00d6rne\u011fin, joystick'in bas\u0131lmad\u0131\u011f\u0131 (idle), bas\u0131ld\u0131\u011f\u0131 (pressed) ve hareket ettirildi\u011fi (dragged) durumlar i\u00e7in farkl\u0131 g\u00f6rseller tan\u0131mlayabilirsiniz. Bu, kullan\u0131c\u0131ya daha iyi g\u00f6rsel geri bildirim sa\u011flar ve kontrol\u00fcn nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 daha net anlamas\u0131na yard\u0131mc\u0131 olur. Bu t\u00fcr geli\u015fmi\u015f \u00f6zelle\u015ftirmeler genellikle betik arac\u0131l\u0131\u011f\u0131yla yap\u0131l\u0131r.<\/p>\n<p>GDScript ile bir \u00f6rnek:<\/p>\n<pre><code class=\"language-gdscript\"># \u00d6rnek betik, joystick'in durumlar\u0131na g\u00f6re dokular\u0131 de\u011fi\u015ftirir.\n\nextends Control # VirtualJoystick'in temel s\u0131n\u0131f\u0131 Control'd\u00fcr.\n\n@onready var joystick_node = $PlayerMovementJoystick # Sahnenizdeki VirtualJoystick d\u00fc\u011f\u00fcm\u00fcn\u00fcn yolu\n\nvar idle_texture = preload(\"res:\/\/assets\/joystick_background_idle.png\")\nvar pressed_texture = preload(\"res:\/\/assets\/joystick_background_pressed.png\")\nvar handle_texture_default = preload(\"res:\/\/assets\/joystick_handle_default.png\")\nvar handle_texture_active = preload(\"res:\/\/assets\/joystick_handle_active.png\")\n\nfunc _ready():\n\t# Ba\u015flang\u0131\u00e7 dokular\u0131n\u0131 ayarla\n\tjoystick_node.background_texture = idle_texture\n\tjoystick_node.handle_texture = handle_texture_default\n\n\t# Sinyalleri ba\u011fla\n\tjoystick_node.connect(\"input_started\", Callable(self, \"_on_joystick_input_started\"))\n\tjoystick_node.connect(\"input_ended\", Callable(self, \"_on_joystick_input_ended\"))\n\tjoystick_node.connect(\"input_dragged\", Callable(self, \"_on_joystick_input_dragged\"))\n\nfunc _on_joystick_input_started():\n\tjoystick_node.background_texture = pressed_texture\n\tjoystick_node.handle_texture = handle_texture_active\n\nfunc _on_joystick_input_ended():\n\tjoystick_node.background_texture = idle_texture\n\tjoystick_node.handle_texture = handle_texture_default\n\nfunc _on_joystick_input_dragged():\n\t# S\u00fcr\u00fckleme s\u0131ras\u0131nda handle dokusunu aktif tutabiliriz,\n\t# veya ba\u015fka bir \u00f6zel durum i\u00e7in doku de\u011fi\u015ftirebiliriz.\n\tjoystick_node.handle_texture = handle_texture_active<\/pre>\n<p><\/code><\/p>\n<p>Bu kod \u00f6rne\u011finde, <code>_ready<\/code> fonksiyonunda joystick'in ba\u015flang\u0131\u00e7 dokular\u0131 ayarlan\u0131r ve ard\u0131ndan <code>input_started<\/code>, <code>input_ended<\/code>, <code>input_dragged<\/code> gibi sinyallere ba\u011flan\u0131l\u0131r. Bu sinyaller, oyuncu joystick ile etkile\u015fimde bulundu\u011funda tetiklenir ve bu sayede farkl\u0131 durumlar i\u00e7in farkl\u0131 dokular atanabilir. Bu t\u00fcr g\u00f6rsel \u00f6zelle\u015ftirmeler, oyununuza benzersiz bir kimlik kazand\u0131rman\u0131za yard\u0131mc\u0131 olur ve oyuncular\u0131n oyununuzla daha derin bir ba\u011f kurmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Vaka Analizi: Bir Platform Oyunu \u0130\u00e7in Sanal Joystick Uygulamas\u0131<\/h3>\n<p>Ger\u00e7ek d\u00fcnya senaryolar\u0131, bir \u00f6zelli\u011fin de\u011ferini en iyi \u015fekilde ortaya koyar. Diyelim ki, oyuncunun hassas hareketler gerektiren bir platform oyunu geli\u015ftiriyorsunuz. Karakterin z\u0131plamas\u0131, duvarlardan sekmesi ve dar platformlarda dengesini sa\u011flamas\u0131 gerekiyor. Bu t\u00fcr bir oyunda, sanal joystick'in tepkiselli\u011fi ve hassasiyeti hayati \u00f6nem ta\u015f\u0131r. Geleneksel joystick'ler, bu ince hareketleri kontrol etmekte zorlanabilir ve oyuncular\u0131n hayal k\u0131r\u0131kl\u0131\u011f\u0131na u\u011framas\u0131na neden olabilir. \u0130\u015fte Godot 4.7'nin VirtualJoystick'i burada devreye giriyor.<\/p>\n<p>Oyunda, karakterin hareketini kontrol etmek i\u00e7in VirtualJoystick'i kullanmaya karar verdik. \u00d6ncelikle, sahneye bir VirtualJoystick d\u00fc\u011f\u00fcm\u00fc ekledik. Ekran\u0131n sol alt k\u00f6\u015fesine yerle\u015ftirdik ve <code>size<\/code> \u00f6zelli\u011fini, oyuncunun parma\u011f\u0131n\u0131 rahat\u00e7a hareket ettirebilece\u011fi geni\u015f bir alana ayarlad\u0131k. <code>deadzone<\/code> de\u011ferini k\u00fc\u00e7\u00fck tuttuk, \u00e7\u00fcnk\u00fc platform oyunlar\u0131nda karakterin hafif bir hareketi bile \u00f6nemlidir. <code>max_input_distance<\/code> de\u011ferini ise orta d\u00fczeyde ayarlad\u0131k; bu, oyuncunun joystick'i \u00e7ok fazla hareket ettirmeden hassas y\u00f6nlendirmeler yapabilmesini sa\u011flar.<\/p>\n<p>G\u00f6rsel olarak, oyunumuzun retro-f\u00fct\u00fcristik temas\u0131na uygun, \u015feffaf bir arka plana ve parlak mavi bir topa sahip bir joystick tasarlad\u0131k. <code>background_texture<\/code> olarak oyunun ana men\u00fcs\u00fcndeki dairesel grafiklerden birini kulland\u0131k ve <code>handle_texture<\/code> olarak da karakterin z\u0131plama animasyonundaki parlak enerji k\u00fcresini temsil eden bir g\u00f6rsel atad\u0131k. Bu, hem g\u00f6rsel olarak b\u00fct\u00fcnl\u00fck sa\u011flad\u0131 hem de oyuncuya kontrol\u00fcn nerede oldu\u011funu net bir \u015fekilde g\u00f6sterdi.<\/p>\n<p>Betik taraf\u0131nda, karakterin <code>CharacterBody2D<\/code> s\u0131n\u0131f\u0131ndan t\u00fcretildi\u011fini varsayal\u0131m. <code>_process<\/code> fonksiyonunda, VirtualJoystick'ten gelen girdiyi <code>get_input_vector()<\/code> ile ald\u0131k. Bu vekt\u00f6r, karakterin <code>velocity<\/code> \u00f6zelli\u011fini do\u011frudan etkiledi. Ancak, platform oyunlar\u0131nda sadece hareket de\u011fil, z\u0131plama da \u00f6nemlidir. Bu nedenle, ek bir \"Jump Button\" (Z\u0131plama Butonu) da ekledik ve VirtualJoystick'in yan\u0131nda konumland\u0131rd\u0131k. Z\u0131plama butonu bas\u0131ld\u0131\u011f\u0131nda, karakterin <code>velocity.y<\/code> de\u011ferini negatif bir y\u00f6nde de\u011fi\u015ftirerek z\u0131plama eylemini tetikledik.<\/p>\n<p>Hassasiyet konusunda, VirtualJoystick'in <code>get_input_vector()<\/code> fonksiyonu bize bir <code>Vector2<\/code> d\u00f6nd\u00fcr\u00fcr. Bu vekt\u00f6r\u00fcn uzunlu\u011fu (magnitude), joystick'in merkezinden ne kadar uza\u011fa \u00e7ekildi\u011fi ile orant\u0131l\u0131d\u0131r. Bu, oyuncunun ne kadar h\u0131zl\u0131 hareket edece\u011fini belirlemek i\u00e7in kullan\u0131labilir. \u00d6rne\u011fin, joystick'in merkezine yak\u0131n bir yerde tutuldu\u011funda daha yava\u015f hareket ederken, kenarlara do\u011fru \u00e7ekildi\u011finde daha h\u0131zl\u0131 hareket edecektir. Bu dinamik h\u0131z kontrol\u00fc, platform oyunlar\u0131nda ince ayar yapma imkan\u0131 sunar.<\/p>\n<p>Duvarlardan sekme gibi \u00f6zel hareketler i\u00e7in, karakterin beti\u011finde bir <code>is_on_wall()<\/code> fonksiyonu kulland\u0131k. E\u011fer karakter duvara temas ediyorsa ve oyuncu joystick'i do\u011fru y\u00f6ne do\u011fru itiyorsa, karakterin duvar \u00fczerinde kaymas\u0131n\u0131 veya sekmesini sa\u011flad\u0131k. Bu, VirtualJoystick'ten gelen y\u00f6n bilgisini kullanarak ger\u00e7ekle\u015ftirildi.<\/p>\n<p>Bu vaka analizinde g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi, Godot 4.7'nin VirtualJoystick'i, sadece basit bir hareket kontrol\u00fc sa\u011flamakla kalmaz, ayn\u0131 zamanda oyunun mekaniklerine derinlemesine entegre edilebilir. G\u00f6rsel \u00f6zelle\u015ftirme, oyuncular i\u00e7in daha s\u00fcr\u00fckleyici bir deneyim sunarken, hassas kontrol yetenekleri de platform oyunlar\u0131 gibi belirli t\u00fcrlerdeki oyunlar\u0131n oynanabilirli\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r. Geli\u015ftiriciler, bu \u00f6zelli\u011fi kullanarak, dokunmatik ekranlarda bile PC veya konsol seviyesinde bir kontrol deneyimi sunabilirler.<\/p>\n<h3>Geli\u015fmi\u015f Kullan\u0131m ve \u0130pu\u00e7lar\u0131<\/h3>\n<p>Godot 4.7'deki VirtualJoystick, temel kullan\u0131m\u0131n\u0131n \u00f6tesinde, daha karma\u015f\u0131k ve \u00f6zelle\u015ftirilmi\u015f senaryolar i\u00e7in de olduk\u00e7a esnektir. Deneyimli geli\u015ftiriciler, bu \u00f6zelli\u011fi daha ileri seviyede kullanarak oyunlar\u0131n\u0131n kontrol mekanizmalar\u0131n\u0131 daha da optimize edebilirler. \u0130\u015fte size birka\u00e7 geli\u015fmi\u015f kullan\u0131m \u00f6nerisi ve ipucu:<\/p>\n<p><strong>1. Birden Fazla Joystick Kullan\u0131m\u0131:<\/strong><br \/>\nBir\u00e7ok oyun, hareket i\u00e7in bir joystick ve kamera kontrol\u00fc veya \u00f6zel yetenekler i\u00e7in ikinci bir joystick gerektirir. Godot 4.7'de birden fazla VirtualJoystick d\u00fc\u011f\u00fcm\u00fcn\u00fc sahnenize ekleyerek bu ihtiyac\u0131 kolayca kar\u015f\u0131layabilirsiniz. Her bir joystick'e benzersiz bir <code>input_axis_name<\/code> vererek, oyun mant\u0131\u011f\u0131n\u0131zda bunlar\u0131 ayr\u0131 ayr\u0131 y\u00f6netebilirsiniz. \u00d6rne\u011fin, bir joystick'e \"move_x\", \"move_y\" ve di\u011ferine \"camera_x\", \"camera_y\" gibi isimler verebilirsiniz. Bu, \u00f6zellikle \u00e7ift \u00e7ubuklu ni\u015fanc\u0131 (twin-stick shooter) oyunlar\u0131 i\u00e7in idealdir.<\/p>\n<p><strong>2. Joystick Girdilerini Normalle\u015ftirme ve \u00d6l\u00e7eklendirme:<\/strong><br \/>\n<code>get_input_vector()<\/code> fonksiyonu, joystick'in y\u00f6n\u00fcn\u00fc bir <code>Vector2<\/code> olarak d\u00f6nd\u00fcr\u00fcr. Bu vekt\u00f6r\u00fcn uzunlu\u011fu, joystick'in merkezden ne kadar uzakta oldu\u011funa ba\u011fl\u0131 olarak 0 ile 1 aras\u0131nda de\u011fi\u015fir (e\u011fer <code>max_input_distance<\/code> 1'e ayarlanm\u0131\u015fsa). Oyununuzun gerektirdi\u011fi kesin h\u0131z kontrol\u00fc i\u00e7in bu vekt\u00f6r\u00fc daha da i\u015fleyebilirsiniz. \u00d6rne\u011fin, hareket h\u0131z\u0131n\u0131 belirli bir de\u011fere sabitlemek istiyorsan\u0131z, <code>joystick_input.normalized() * movement_speed<\/code> gibi bir ifade kullanabilirsiniz. Bu, joystick'in ne kadar uza\u011fa \u00e7ekildi\u011finden ba\u011f\u0131ms\u0131z olarak sabit bir h\u0131z sa\u011flar.<\/p>\n<p><strong>3. Dokunmatik Girdileri Ak\u0131ll\u0131ca Y\u00f6netme:<\/strong><br \/>\nGodot'un dokunmatik olaylar\u0131n\u0131 y\u00f6netme \u015fekli, VirtualJoystick ile entegre oldu\u011funda daha da g\u00fc\u00e7l\u00fc hale gelir. <code>_input(event)<\/code> fonksiyonunda, sadece joystick'in kendi sinyallerini dinlemekle kalmaz, ayn\u0131 zamanda oyuncunun parma\u011f\u0131n\u0131n ekran \u00fczerindeki genel hareketlerini de takip edebilirsiniz. Bu, \u00f6zellikle joystick'in olmad\u0131\u011f\u0131 durumlarda veya oyuncunun ekran\u0131n ba\u015fka bir yerinde bir eylem tetiklemesini istedi\u011finizde faydal\u0131 olabilir. \u00d6rne\u011fin, bir dokunma ile bir men\u00fc a\u00e7\u0131lmas\u0131n\u0131 sa\u011flayabilirsiniz. VirtualJoystick, dokunmatik olaylar\u0131 otomatik olarak i\u015fledi\u011fi i\u00e7in, kendi <code>_input<\/code> fonksiyonunuzda joystick ile ilgili olaylar\u0131 tekrar i\u015flemekten ka\u00e7\u0131nmal\u0131s\u0131n\u0131z.<\/p>\n<p><strong>4. Duyarl\u0131 Tasar\u0131m ve Farkl\u0131 Ekran Boyutlar\u0131:<\/strong><br \/>\nMobil oyunlarda farkl\u0131 ekran boyutlar\u0131 ve en boy oranlar\u0131 yayg\u0131nd\u0131r. VirtualJoystick'i yerle\u015ftirirken, <code>Anchors<\/code> ve <code>Offsets<\/code> \u00f6zelliklerini kullanarak onu ekran\u0131n belirli bir k\u00f6\u015fesine veya kenar\u0131na sabitleyebilirsiniz. Bu, cihaz d\u00f6nd\u00fcr\u00fcld\u00fc\u011f\u00fcnde veya farkl\u0131 bir cihazda oynand\u0131\u011f\u0131nda joystick'in konumunun otomatik olarak ayarlanmas\u0131n\u0131 sa\u011flar. \u00d6rne\u011fin, joystick'i sol alt k\u00f6\u015feye sabitlemek i\u00e7in <code>Anchor Preset<\/code> olarak \"Bottom Left\" se\u00e7ene\u011fini kullanabilirsiniz.<\/p>\n<p><strong>5. \u00d6zel G\u00f6rsel Geri Bildirimler ve Animasyonlar:<\/strong><br \/>\nSadece doku de\u011fi\u015ftirmek yerine, daha dinamik g\u00f6rsel geri bildirimler de ekleyebilirsiniz. \u00d6rne\u011fin, oyuncu joystick'i hareket ettirdi\u011finde, joystick'in topunun hafif\u00e7e \"titremesini\" veya \"parlamas\u0131n\u0131\" sa\u011flayabilirsiniz. Bu t\u00fcr efektler, animasyonlar veya shader'lar arac\u0131l\u0131\u011f\u0131yla eklenebilir. Bu, kullan\u0131c\u0131 deneyimini daha zengin hale getirir ve oyunun daha canl\u0131 hissetmesini sa\u011flar.<\/p>\n<p><strong>6. Performans Optimizasyonu:<\/strong><br \/>\nE\u011fer oyununuzda \u00e7ok say\u0131da VirtualJoystick kullan\u0131yorsan\u0131z veya \u00e7ok karma\u015f\u0131k g\u00f6rsel efektler uyguluyorsan\u0131z, performans d\u00fc\u015f\u00fc\u015flerini \u00f6nlemek \u00f6nemlidir. Gereksiz yere g\u00fcncellenen joystick'ler veya a\u015f\u0131r\u0131 detayl\u0131 dokular performans\u0131 etkileyebilir. <code>_process<\/code> fonksiyonundaki mant\u0131\u011f\u0131n\u0131z\u0131 optimize edin ve sadece gerekli oldu\u011funda g\u00f6rsel g\u00fcncellemeler yap\u0131n. Ayr\u0131ca, dokular\u0131n boyutunu ve \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fcn\u00fc oyununuzun ihtiya\u00e7lar\u0131na g\u00f6re ayarlay\u0131n.<\/p>\n<p><strong>7. Eri\u015filebilirlik Odakl\u0131 Ayarlamalar:<\/strong><br \/>\nOyununuzun daha geni\u015f bir kitleye ula\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in eri\u015filebilirlik se\u00e7eneklerini g\u00f6z \u00f6n\u00fcnde bulundurun. VirtualJoystick'in boyutunu, hassasiyetini ve renk kontrast\u0131n\u0131 ayarlama se\u00e7enekleri sunmak, farkl\u0131 ihtiya\u00e7lara sahip oyuncular i\u00e7in faydal\u0131 olacakt\u0131r. \u00d6rne\u011fin, daha b\u00fcy\u00fck bir <code>deadzone<\/code> veya daha y\u00fcksek bir <code>max_input_distance<\/code> se\u00e7ene\u011fi, motor becerilerinde zorluk ya\u015fayan oyuncular i\u00e7in oyunu daha oynanabilir hale getirebilir.<\/p>\n<p>Bu geli\u015fmi\u015f ipu\u00e7lar\u0131 ve teknikler, Godot 4.7'deki VirtualJoystick'i kullanarak daha sofistike ve kullan\u0131c\u0131 dostu kontrol sistemleri olu\u015fturman\u0131za yard\u0131mc\u0131 olacakt\u0131r. Bu \u00f6zellik, mobil oyun geli\u015ftiricilerine daha \u00f6nce hi\u00e7 olmad\u0131\u011f\u0131 kadar esneklik ve g\u00fc\u00e7 sunuyor.<\/p>\n<h3>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<p>Godot Engine'in 4.7 s\u00fcr\u00fcm\u00fcnde tan\u0131t\u0131lan VirtualJoystick \u00f6zelli\u011fi, mobil oyun geli\u015ftirme alan\u0131nda \u00f6nemli bir kilometre ta\u015f\u0131n\u0131 temsil ediyor. Geli\u015ftiricilere, s\u0131f\u0131rdan karma\u015f\u0131k kodlama s\u00fcre\u00e7lerine girmeden, y\u00fcksek d\u00fczeyde \u00f6zelle\u015ftirilebilir ve performansl\u0131 sanal joystick'ler olu\u015fturma imkan\u0131 sunarak, mobil oyun deneyimini bir \u00fcst seviyeye ta\u015f\u0131yor. Bu makalede, VirtualJoystick'in temel kavramlar\u0131ndan, ad\u0131m ad\u0131m entegrasyonuna, g\u00f6rsel \u00f6zelle\u015ftirme se\u00e7eneklerinden ger\u00e7ek d\u00fcnya vaka analizlerine ve geli\u015fmi\u015f kullan\u0131m ipu\u00e7lar\u0131na kadar bir\u00e7ok konuyu ele ald\u0131k.<\/p>\n<p>Bu yeni \u00f6zellik sayesinde, geli\u015ftiriciler art\u0131k daha fazla zamanlar\u0131n\u0131 oyun mant\u0131\u011f\u0131na, hikayeye ve sanat tasar\u0131m\u0131na ay\u0131rabilirken, kontrol mekanizmalar\u0131n\u0131n teknik detaylar\u0131yla daha az u\u011fra\u015fmak zorunda kalacaklar. Y\u00fcksek d\u00fczeyde \u00f6zelle\u015ftirilebilirlik, oyunlar\u0131n g\u00f6rsel kimlikleriyle uyumlu, sezgisel ve estetik a\u00e7\u0131dan ho\u015f kontrol panelleri olu\u015fturmay\u0131 m\u00fcmk\u00fcn k\u0131l\u0131yor. Performans optimizasyonu ve kullan\u0131m kolayl\u0131\u011f\u0131 ise, hem geli\u015ftiricilerin i\u015f ak\u0131\u015f\u0131n\u0131 h\u0131zland\u0131r\u0131yor hem de oyunculara ak\u0131c\u0131 ve tepkisel bir oyun deneyimi sunuyor.<\/p>\n<p>Sonu\u00e7 olarak, Godot 4.7'deki VirtualJoystick, mobil oyun geli\u015ftiricileri i\u00e7in g\u00fc\u00e7l\u00fc, esnek ve kullan\u0131m\u0131 kolay bir ara\u00e7t\u0131r. Bu \u00f6zellik, dokunmatik ekranlarda bile konsol kalitesinde bir kontrol deneyimi sunma potansiyeline sahiptir ve gelecekteki mobil oyunlar\u0131n kalitesini art\u0131rmada \u00f6nemli bir rol oynayacakt\u0131r.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p>*   <strong>Godot 4.7'deki VirtualJoystick'i kullanmak i\u00e7in herhangi bir ek eklentiye ihtiyac\u0131m var m\u0131?<\/strong><br \/>\n    Hay\u0131r, VirtualJoystick Godot Engine'in 4.7 s\u00fcr\u00fcm\u00fcyle birlikte yerle\u015fik olarak gelir. Herhangi bir ek eklenti veya mod\u00fcl y\u00fcklemenize gerek yoktur.<\/p>\n<p>*   <strong>VirtualJoystick'in dokunmatik girdileri nas\u0131l i\u015fledi\u011fini daha detayl\u0131 \u00f6\u011frenebilir miyim?<\/strong><br \/>\n    VirtualJoystick, dahili olarak dokunmatik olaylar\u0131 y\u00f6netir. Oyuncu ekrana dokundu\u011funda, VirtualJoystick bu dokunmay\u0131 alg\u0131lar ve oyuncunun parma\u011f\u0131n\u0131n hareketine g\u00f6re bir girdi vekt\u00f6r\u00fc olu\u015fturur. Bu girdi vekt\u00f6r\u00fc, <code>get_input_vector()<\/code> fonksiyonu arac\u0131l\u0131\u011f\u0131yla betiklerinize aktar\u0131l\u0131r. Ayr\u0131ca, <code>input_started<\/code>, <code>input_ended<\/code> ve <code>input_dragged<\/code> gibi sinyaller arac\u0131l\u0131\u011f\u0131yla da etkile\u015fim anlar\u0131n\u0131 yakalayabilirsiniz.<\/p>\n<p>*   <strong>Farkl\u0131 oyun t\u00fcrleri i\u00e7in VirtualJoystick'i nas\u0131l optimize edebilirim?<\/strong><br \/>\n    Oyun t\u00fcr\u00fcn\u00fcze ba\u011fl\u0131 olarak, VirtualJoystick'in <code>deadzone<\/code>, <code>max_input_distance<\/code> ve <code>snap_to_center<\/code> gibi parametrelerini ayarlayarak hassasiyeti optimize edebilirsiniz. Platform oyunlar\u0131 i\u00e7in daha d\u00fc\u015f\u00fck bir <code>deadzone<\/code> ve daha y\u00fcksek bir <code>max_input_distance<\/code> faydal\u0131 olabilirken, ni\u015fanc\u0131 oyunlar\u0131 i\u00e7in tam tersi ayarlar tercih edilebilir. G\u00f6rsel \u00f6zelle\u015ftirmeler de oyunun temas\u0131na uygun hale getirilmelidir.<\/p>\n<p>*   <strong>VirtualJoystick'in birden fazla \u00f6rne\u011fini ayn\u0131 anda kullanabilir miyim?<\/strong><br \/>\n    Evet, sahnenize birden fazla VirtualJoystick d\u00fc\u011f\u00fcm\u00fc ekleyebilir ve her birine farkl\u0131 <code>input_axis_name<\/code>'ler atayarak y\u00f6netebilirsiniz. Bu, \u00e7ift \u00e7ubuklu ni\u015fanc\u0131 oyunlar\u0131 gibi birden fazla kontrol gerektiren oyunlar i\u00e7in idealdir.<\/p>\n<p>*   <strong>VirtualJoystick'in performans\u0131n\u0131 nas\u0131l art\u0131rabilirim?<\/strong><br \/>\n    G\u00f6rsel efektleri ve dokular\u0131 optimize ederek, gereksiz yere g\u00fcncellemelerden ka\u00e7\u0131narak ve betik mant\u0131\u011f\u0131n\u0131 verimli hale getirerek performans\u0131 art\u0131rabilirsiniz. Ayr\u0131ca, dokular\u0131n boyutunu ve \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fcn\u00fc oyununuzun ihtiya\u00e7lar\u0131na g\u00f6re ayarlay\u0131n.<\/p>\n<p>#GodotEngine #VirtualJoystick #MobilGeli\u015ftirme #OyunGeli\u015ftirme #DokunmatikKontroller<\/p>\n","protected":false},"excerpt":{"rendered":"Godot 4.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-41529","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Godot 4.7: Dokunmatik Ekranlar \u0130\u00e7in Neredeyse Haz\u0131r Sanal Joystick - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Godot 4.7: Dokunmatik Ekranlar \u0130\u00e7in Neredeyse Haz\u0131r Sanal Joystick\" \/>\n<meta property=\"og:description\" content=\"Godot 4.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-01T18:00:48+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Godot 4.7: Dokunmatik Ekranlar \u0130\u00e7in Neredeyse Haz\u0131r Sanal Joystick\",\"datePublished\":\"2026-05-01T18:00:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/\"},\"wordCount\":3744,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/\",\"name\":\"Godot 4.7: Dokunmatik Ekranlar \u0130\u00e7in Neredeyse Haz\u0131r Sanal Joystick - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-05-01T18:00:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Godot 4.7: Dokunmatik Ekranlar \u0130\u00e7in Neredeyse Haz\u0131r Sanal Joystick\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Godot 4.7: Dokunmatik Ekranlar \u0130\u00e7in Neredeyse Haz\u0131r Sanal Joystick - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/","og_locale":"tr_TR","og_type":"article","og_title":"Godot 4.7: Dokunmatik Ekranlar \u0130\u00e7in Neredeyse Haz\u0131r Sanal Joystick","og_description":"Godot 4.","og_url":"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-05-01T18:00:48+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Godot 4.7: Dokunmatik Ekranlar \u0130\u00e7in Neredeyse Haz\u0131r Sanal Joystick","datePublished":"2026-05-01T18:00:48+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/"},"wordCount":3744,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/","url":"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/","name":"Godot 4.7: Dokunmatik Ekranlar \u0130\u00e7in Neredeyse Haz\u0131r Sanal Joystick - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-05-01T18:00:48+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/godot-4-7-dokunmatik-ekranlar-icin-neredeyse-hazir-sanal-joystick\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Godot 4.7: Dokunmatik Ekranlar \u0130\u00e7in Neredeyse Haz\u0131r Sanal Joystick"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41529","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=41529"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41529\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=41529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=41529"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=41529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}