{"id":1852,"date":"2020-05-24T21:34:55","date_gmt":"2020-05-24T21:34:55","guid":{"rendered":"https:\/\/www.yazilimperver.com\/?p=1852"},"modified":"2020-05-24T21:36:15","modified_gmt":"2020-05-24T21:36:15","slug":"godot-yilan-klonu-3-yilan-ve-alt-sahneler","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/","title":{"rendered":"Godot Y\u0131lan Klonu 3 \u2013 Y\u0131lan ve alt sahneler"},"content":{"rendered":"<p>Evet arkada\u015flar Godot oyunumuza kald\u0131\u011f\u0131m\u0131z yerden devam ediyoruz. Art\u0131k biraz daha h\u0131zlanabiliriz. A\u015fa\u011f\u0131daki yaz\u0131lar\u0131 okumad\u0131ysan\u0131z, l\u00fctfen \u00f6nce onlar\u0131 okuyunuz. Godot ili\u015fkin temel bilgileri orada bulabilirisiniz.<\/p>\n<p><strong><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2020\/03\/24\/godot-yilan-klonu-1-dizin-yapisi-ve-git-sayfasi\/\">Godot Y\u0131lan Klonu 1 &#8211; Dizin Yap\u0131s\u0131 ve Git Sayfas\u0131<\/a><\/span><\/strong><\/p>\n<p><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2020\/04\/22\/godot-yilan-klonu-2-ayarlar-ve-temel-sahneler\/\">Godot Y\u0131lan Klonu 2 \u2013 Ayarlar ve Temel Sahneler<\/a><\/strong><\/span><\/p>\n<p>Ayr\u0131ca bu yaz\u0131m ile yapm\u0131\u015f oldu\u011fum de\u011fi\u015fikliklere a\u015fa\u011f\u0131daki respository&#8217;den ula\u015fabilirsiniz:<\/p>\n<p><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/github.com\/yazilimperver\/BegumSnakeRider\">https:\/\/github.com\/yazilimperver\/BegumSnakeRider<\/a><\/strong><\/span><\/p>\n<p>Bu yaz\u0131mda geli\u015ftirece\u011fimiz sahneler \u015fu \u015fekilde:<\/p>\n<ul>\n<li><strong>Ba\u015f (&#8220;Head&#8221;) sahnesi:<\/strong> Y\u0131lan sahnesi i\u00e7erisinde, temel hareketleri kontrol eden sahne,<\/li>\n<li><strong>Kuyruk (&#8220;Tail&#8221;) sahnesi:<\/strong> Y\u0131lan karakterimizin v\u00fccut par\u00e7alar\u0131n\u0131 olu\u015fturan sahne,<\/li>\n<li><strong>Meyve (&#8220;Food&#8221;) sahnesi:<\/strong> Oyun i\u00e7erisinde y\u0131lan karakterimizin uzamas\u0131na yard\u0131m olacak olan sahne,<\/li>\n<li><strong>Y\u0131lan (&#8220;Snake&#8221;) sahnesi:<\/strong> Oyun \u00e7izim ve mekaniklerinden sorumlu sahne.<\/li>\n<\/ul>\n<p>Bu sahneleri scene dizini alt\u0131na (ilk yaz\u0131da detaylar\u0131 bulabilirsiniz) ve ilgili betikleri de scripts dizini alt\u0131na olu\u015fturaca\u011f\u0131z. A\u015fa\u011f\u0131da bu yaz\u0131 sonunda dizin yap\u0131m\u0131z\u0131n alaca\u011f\u0131 \u015fekli g\u00f6rebilirsiniz:<\/p>\n<p id=\"vNgXMqr\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1853 aligncenter\" src=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae34b5729b.png\" alt=\"\" width=\"165\" height=\"981\" srcset=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae34b5729b.png 195w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae34b5729b-172x1024.png 172w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae34b5729b-150x892.png 150w\" sizes=\"auto, (max-width: 165px) 100vw, 165px\" \/><\/p>\n<h2><strong><span style=\"color: #0000ff;\">Ba\u015f (&#8220;Head&#8221;) Sahnesi<\/span><\/strong><\/h2>\n<p>Hemen ba\u015f sahnemize ge\u00e7elim. Bu sahnemiz basit\u00e7e y\u0131lan\u0131m\u0131z\u0131n ba\u015f\u0131n\u0131 temsil edecek ve ayr\u0131ca hareket k\u0131s\u0131mlar\u0131n\u0131 da buradan y\u00f6netece\u011fiz. Benzer \u015fekilde yiyecekleri yeme veya \u00e7arpma kontrolleri de bu sahne i\u00e7erisinde olacak. Sahne a\u015fa\u011f\u0131daki \u00f6\u011feleri i\u00e7eriyor olacak:<\/p>\n<p id=\"WGmTwGt\"><img loading=\"lazy\" decoding=\"async\" width=\"199\" height=\"149\" class=\"size-full wp-image-1857 aligncenter\" src=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae4f890d63.png\" alt=\"\" srcset=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae4f890d63.png 199w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae4f890d63-150x112.png 150w\" sizes=\"auto, (max-width: 199px) 100vw, 199px\" \/><\/p>\n<ul>\n<li><strong>Head:<\/strong> Area2D Nesnesi. Bu nesne ile \u00e7arpma kontrollerini kolay bir \u015fekilde yapaca\u011f\u0131z. Bunun i\u00e7inde sa\u011fdaki Node panelini a\u00e7\u0131p &#8220;<em>bodyEntered<\/em>&#8221; sinyalini, ba\u015f i\u00e7in olu\u015fturdu\u011fumuz script i\u00e7erisindeki fonksiyona (<em>onHead_body_entered<\/em>) ba\u011flayaca\u011f\u0131z.<\/li>\n<li><strong>Sprite:<\/strong> Bu nesne ile y\u0131lan ba\u015f\u0131m\u0131za bir g\u00f6r\u00fcn\u00fcm kazand\u0131raca\u011f\u0131z. \u015eimdilik bu ama\u00e7la &#8220;<em>assets\\images\\headItem.png<\/em>&#8221; resmini kullanaca\u011f\u0131z. Dilerseniz farkl\u0131 bir imaj ile de\u011fi\u015ftirebilirsiniz ama boyutunun ayn\u0131 olmas\u0131na \u015fimdilik dikkat edin.<\/li>\n<li><strong>CollisionShape2D:<\/strong> Bu da asl\u0131nda ba\u015f nesnemize ili\u015fkin \u00e7arpma alan\u0131n\u0131 tan\u0131mlamak i\u00e7in kullanaca\u011f\u0131z. Burada Shape k\u0131sm\u0131ndan <em>RectangleShape2D<\/em> olu\u015fturaca\u011f\u0131z. Daha sonra bu alan\u0131n \u00fczerinde bir kere t\u0131klay\u0131p, dikd\u00f6rtgenin \u00f6zelliklerini a\u00e7al\u0131m ve oradan da <em>Extents<\/em> de\u011ferlerini 15 yapal\u0131m (bu de\u011fer nereden geliyor diye soracak olursan\u0131z ki olsan\u0131z iyi olur. Bunlar ba\u015f i\u00e7in kullanaca\u011f\u0131m\u0131z resmin boyut [30&#215;30] bilgilerinden geliyor). Bunu daha sonra, yan\u0131ndaki g\u00f6ze t\u0131klayarak gizleyebilirsiniz.<\/li>\n<li><strong>Tween:<\/strong> Bu da animasyon i\u00e7in kullan\u0131lan bir node. Bunu \u00f6lme animasyonu i\u00e7in kullanaca\u011f\u0131z.<\/li>\n<\/ul>\n<p>Evet \u015fimdi gelelim, ba\u015f node&#8217;umuza hayat verecek olan beti\u011fi yazmaya. A\u015fa\u011f\u0131da bu beti\u011fi bulabilirsiniz.<\/p>\n<pre class=\"minimize:true lang:python decode:true\">extends Area2D\r\n\r\n# Bu script araciligiyla yayinlayacagim olaylar\r\nsignal foodCollected # Meyve yedik\r\nsignal obstacleHit # Duvar ya da engellere carptik\r\nsignal headMoved(prevHeadPos) # Bas hareketini bir onceki konum ile iletelim. Mevcut konum zaten position'dan temin edilebilir\r\n\r\n# Kullandigimiz bazi sabitler\r\nconst DIRECTION_RIGHT = Vector2(1,0)\r\nconst DIRECTION_LEFT  = Vector2(-1,0)\r\nconst DIRECTION_UP    = Vector2(0,-1)\r\nconst DIRECTION_DOWN  = Vector2(0,1)\r\nconst DIRECTION_NONE  = Vector2(0,0)\r\n\r\n# Hareket ile ilgili bazi sabitler\r\nvar spriteSize\r\nvar currDir = DIRECTION_NONE\r\nvar prevDir = DIRECTION_NONE\r\n\r\nvar canChangeDir = true\r\n\r\n# Sahne ile yuklenen bazi sabitler\r\nonready var sprite = $Sprite\r\nonready var tween = $Tween\r\n\r\n# Her oyun dongu devrinde cagrilecek olan fonksiyonumuz\r\nfunc _ready():\r\n\tcanChangeDir = true\r\n\tspriteSize = sprite.texture.get_size() * sprite.transform.get_scale()\r\n\tconfigTween()\r\n\r\n# Animasyon fonksiyonu. y\u0131lan\u0131m\u0131z \u00f6ld\u00fc\u011f\u00fc zaman cagrilacak\r\nfunc configTween():\r\n\ttween.interpolate_property(self, \"modulate\", Color(1,1,1,1), Color(1,1,1,0),\r\n\t\t\t0.2, Tween.TRANS_LINEAR, Tween.EASE_IN_OUT)\t\r\n\ttween.connect(\"tween_completed\", self, \"destroy_self\")\r\n\t\r\n# Yilanin basinin hareketinden sorumlu fonksiyon \r\nfunc move(direction):\r\n\ttranslate(direction * spriteSize)\r\n\t\t\r\n# Mevcut durumda harekete devam. Bunu bir sayac araciligiyle ust sahnelerden cagiracagiz\r\nfunc onMoveTimer_timeout():\r\n\t# mevcut konumu bir saklayalim\r\n\tvar prevHeadPos = position\r\n\t\r\n\t# simdi sprite'i hareket ettirelim\r\n\tmove(currDir)\r\n\tprevDir = currDir\r\n\t\r\n\tif currDir != DIRECTION_NONE and prevDir != DIRECTION_NONE:\r\n\t\temit_signal(\"headMoved\", prevHeadPos)\r\n\r\n# Mevcut Area2D tipindeki Head node'muz bir sey ile kesistiginde cagrilan fonksiyondur\r\n# bunun icin elbette ilgili sinyali Node sekmesinden bu fonksiyona baglamaliyiz.\r\n# solda yesil bir sembol gormemiz gerekiyor\r\nfunc onHead_body_entered(body):\r\n\tif body.is_in_group(\"Food\"): # meyve\r\n\t\temit_signal(\"foodCollected\")\r\n\t\t\r\n\t\t# meyveyi silelim\r\n\t\tbody.queue_free()\r\n\t\tprint(\"[DEBUG] Food collected\")\t\r\n\telif body.is_in_group(\"Obstacle\"): # engel'e mi carptik. Bu isim gruplardan geliyor.\r\n\t\temit_signal(\"obstacleHit\")\r\n\t\ttween.start()\r\n\t\r\n# Yilanimizin basini ceviriyoruz\r\nfunc changeDirection(request):\r\n\tif canChangeDir == true:\r\n\t\tif request == \"left\" and prevDir != DIRECTION_RIGHT:\r\n\t\t\tcurrDir = DIRECTION_LEFT\r\n\t\t\tsprite.rotation = deg2rad(180.0)\r\n\t\telif request == \"right\" and prevDir != DIRECTION_LEFT:\r\n\t\t\tcurrDir = DIRECTION_RIGHT\r\n\t\t\tsprite.rotation = deg2rad(0.0)\r\n\t\telif request == \"up\" and prevDir != DIRECTION_DOWN:\r\n\t\t\tcurrDir = DIRECTION_UP\t\t\t\r\n\t\t\tsprite.rotation = deg2rad(-90.0)\r\n\t\telif request == \"down\" and prevDir != DIRECTION_UP:\r\n\t\t\tcurrDir = DIRECTION_DOWN\t\t\t\r\n\t\t\tsprite.rotation = deg2rad(90.0)\r\n<\/pre>\n<p>Buradaki metotlara ili\u015fkin a\u00e7\u0131klamalar\u0131, betik i\u00e7erisine ekliyorum, anla\u015f\u0131lmayan bir nokta olursa l\u00fctfen yorumlar k\u0131sm\u0131nda sorun. Beti\u011fin ba\u015f\u0131nda olan <em>signal<\/em> anahtar kelimesi ile belirtilmi\u015f sat\u0131rlar, bu sahneden di\u011fer sahnelere sunulan sinyalleri ifade etmektedir (yukar\u0131daki <em>bodyEntered<\/em> gibi, QT deki sinyal\/slotlar gibi). Bunlar arac\u0131l\u0131\u011f\u0131 ile \u00fcst sahneler ile haberle\u015fmeyi\/etkile\u015fimi kolay bir \u015fekilde halledebilece\u011fiz. Bu sinyalleri betik i\u00e7erisinde ca\u011f\u0131rmak i\u00e7in <em><strong>emit_signal(&#8220;sinyal\u0130smi&#8221;)<\/strong> <\/em>ni kullan\u0131yoruz.<\/p>\n<p>Burada bilmemiz gereken bir di\u011fer konu, genel olarak y\u0131lan\u0131m\u0131z nas\u0131l hareket ettirdi\u011fimize ili\u015fkin mant\u0131k:<\/p>\n<ul>\n<li>Y\u0131lan i\u00e7in harekette kullanmak \u00fczere bir y\u00f6n de\u011fi\u015fkenimiz var ki, bu da <em>changeDirection<\/em> ile belirleniyor. Bu fonksiyon da, kullan\u0131c\u0131 \u00fcst saheneler taraf\u0131ndan ca\u011fr\u0131l\u0131yor olacak ve mevcut y\u0131lan y\u00f6n\u00fcne g\u00f6re y\u0131lana y\u00f6n verecek.<\/li>\n<li>Daha sonra, bu y\u00f6ne g\u00f6re her hareket sayac\u0131m\u0131z doldu\u011funda, <em>onMoveTimer_timeout<\/em> metodumuz arac\u0131l\u0131\u011f\u0131 ile y\u0131lan\u0131m\u0131z\u0131n kelleyi \u015ferifesini, kuyruklar\u0131m\u0131z ile hareket ettirece\u011fiz. Burada yine bu fonksiyon d\u0131\u015far\u0131dan \u00e7a\u011fr\u0131l\u0131yor olacak (dikkatiniz celbetti mi bilemiyorum ama bu tarz fonksiyonlar\u0131n ca\u011fr\u0131lmas\u0131n\u0131n kontrol\u00fcn\u00fc hep d\u0131\u015far\u0131ya verdi\u011fimi fark etmi\u015fsinizdir. Bu sayede oyun kontrolleri daha basit ve daha kontroll\u00fc oldu\u011funa inan\u0131yorum).<\/li>\n<li>Son olarak her bir hareket hesapland\u0131ktan sonra, \u00fcst sahneyi <em>headMoved<\/em> sinyali ve yeni konum ile bilgilendiriyoruz.<\/li>\n<li>Ba\u015f ki, yukar\u0131da da bahsetti\u011fimiz \u00fczere <em>Area2D<\/em> nesnesi olarak tan\u0131mlad\u0131k, herhangi bir ba\u015fka nesnenin \u00fczerine geldi\u011finde <em>onHead_body_entered<\/em> \u00e7a\u011fr\u0131l\u0131yor olacak. Burada e\u011fer, \u00fcst \u00fcste gelinen nesne:\n<ul>\n<li>Meyve ise, ki bunu atanan &#8220;Food&#8221; grup ismi \u00fczerinden anlayaca\u011f\u0131z, <em>foodCollected<\/em> sinyali yay\u0131nlanacak,<\/li>\n<li>Engel ise, ki bunu da atana &#8220;Obstacle&#8221; grup ismi \u00fczerinden anlayaca\u011f\u0131z ve obstacleHit sinyali yay\u0131nlanacak ve \u00e7arpma animasyonu ba\u015flat\u0131lacak.<\/li>\n<\/ul>\n<\/li>\n<li>Y\u0131lan\u0131n ba\u015f\u0131 ve oyunumuzun temel ko\u015fum mant\u0131\u011f\u0131n\u0131 g\u00f6rm\u00fc\u015f olduk. \u015eimdi di\u011fer sahnelere bir g\u00f6z ataca\u011f\u0131z ama \u00f6nceesinde bu sahnemizi y\u0131lan sahnemize ekleyelim:\n<ul>\n<li>\u00d6nce y\u0131lan sahnemizi a\u00e7al\u0131m,<\/li>\n<li>Y\u0131lan k\u00f6k d\u00fc\u011f\u00fcm\u00fcne gidelim ve sa\u011f t\u0131klayarak, \u00e7\u0131kan men\u00fcden &#8220;Instance Child Scene&#8221;&#8216;\u0131 se\u00e7elim,<\/li>\n<li>\u00c7\u0131kan pencereden de yeni olu\u015fturdu\u011fumuz ba\u015f sahnesine ekliyoruz.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2><span style=\"color: #0000ff;\"><strong>Kuyruk (&#8220;Tail&#8221;) Sahnesi<\/strong><\/span><\/h2>\n<p>\u015eimdi kuyruk sahnemize ge\u00e7elim. Bu sahnemiz basit\u00e7e y\u0131lan\u0131m\u0131z\u0131n kuyru\u011fundaki elemanlar\u0131 temsil edecek ve ba\u015f sahnesine \u00e7ok benzer bir yap\u0131da:<\/p>\n<p id=\"rlxXmFD\"><img loading=\"lazy\" decoding=\"async\" width=\"195\" height=\"139\" class=\"size-full wp-image-1858 aligncenter\" src=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae60739c08.png\" alt=\"\" srcset=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae60739c08.png 195w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae60739c08-150x107.png 150w\" sizes=\"auto, (max-width: 195px) 100vw, 195px\" \/><\/p>\n<ul>\n<li><strong>Tail:<\/strong> Static2DBody Nesnesi. Bu nesne ile kuyru\u011fa fiziksel bir kabiliyet kazand\u0131rm\u0131\u015f olduk,<\/li>\n<li><strong>Sprite:<\/strong> Bu nesne ile y\u0131lan g\u00f6vdemize de bir g\u00f6r\u00fcn\u00fcm kazand\u0131raca\u011f\u0131z. \u015eimdilik bu ama\u00e7la &#8220;<em>assets\\images\\blueItem.png<\/em>&#8221; resmini kullanaca\u011f\u0131z,<\/li>\n<li><strong>CollisionShape2D:<\/strong> Bu da kuyruk nesnemize ili\u015fkin \u00e7arpma alan\u0131n\u0131 tan\u0131mlamak i\u00e7in kullanaca\u011f\u0131z ve ba\u015f ile ayn\u0131 \u015fekilde olu\u015fturaca\u011f\u0131z. Bunu da daha sonra, yan\u0131ndaki g\u00f6ze t\u0131klayarak gizleyebilirsiniz,<\/li>\n<li><strong>Tween:<\/strong> Bu da animasyon i\u00e7in kullan\u0131lan bir node. Bunu \u00f6lme animasyonu i\u00e7in kullanaca\u011f\u0131z.<\/li>\n<\/ul>\n<p>Kuyruk sahnemize ili\u015fkin beti\u011fimiz de a\u015fa\u011f\u0131daki gibi:<\/p>\n<pre class=\"minimize:true lang:python decode:true \">extends StaticBody2D\r\n\r\nonready var tween = $Tween\r\n\r\n# Animasyon ile ilgili ayarlamalar\u0131 yapal\u0131m\r\nfunc _ready():\r\n\tconfigTween()\r\n\r\nfunc configTween():\r\n\ttween.interpolate_property(self, \"modulate\", Color(1,1,1,1), Color(1,1,1,0),\r\n\t\t\t0.2, Tween.TRANS_LINEAR, Tween.EASE_IN_OUT)\r\n\t\r\n\ttween.connect(\"tween_completed\", self, \"destroy_self\")\r\n\r\n# \u00d6l\u00fcm animasyonunu ba\u015flatal\u0131m\r\nfunc runTween():\r\n\ttween.start()\r\n\r\n# Kuyruk yok olunca ca\u011f\u0131raca\u011f\u0131z\r\nfunc destroy_self(object, node):\r\n\tobject.queue_free()<\/pre>\n<p>\u00c7ok daha basit bir betik. Farkl\u0131 olarak <em>destroy_self<\/em> fonskiyonunu g\u00f6r\u00fcyorsunuz ki, bu da sahne ile i\u015fimiz bitince yapmam\u0131z gereken bir i\u015f. Bu sahnemizi direk y\u0131lan sahnemize, sahne a\u011fac\u0131 \u00fczerinden eklemeyece\u011fiz. Sizce nas\u0131l kullanaca\u011f\u0131z? Do\u011fru tahmin ettiniz, y\u0131lan sahnesi i\u00e7erisinde y\u0131lan\u0131m\u0131z\u0131n meyve yedi\u011fini anlad\u0131\u011f\u0131m\u0131z anda betik i\u00e7erisinde olu\u015fturaca\u011f\u0131z.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Meyve (&#8220;Food&#8221;) Sahnesi<\/strong><\/span><\/h2>\n<p>\u015eimdi bir de meyve sahnemizi olu\u015ftural\u0131m. Bu sahne de kuyru\u011fa benziyor ve herhangi bir betik i\u00e7ermiyor.<\/p>\n<p id=\"mQVrWmZ\"><img loading=\"lazy\" decoding=\"async\" width=\"195\" height=\"129\" class=\"size-full wp-image-1859 aligncenter\" src=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae681007a6.png\" alt=\"\" srcset=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae681007a6.png 195w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae681007a6-150x99.png 150w\" sizes=\"auto, (max-width: 195px) 100vw, 195px\" \/><\/p>\n<ul>\n<li><strong>Food<\/strong>: Static2DBody Nesnesi. Bu nesne ile meyvelere fiziksel bir kabiliyet kazand\u0131rm\u0131\u015f olduk.<\/li>\n<li><strong>Sprite<\/strong>: Bu nesne ile meyve nesnelerimize bir g\u00f6r\u00fcn\u00fcm kazand\u0131raca\u011f\u0131z. \u015eimdilik bu ama\u00e7la <em>&#8220;assets\\images\\fruitItem.png&#8221;<\/em> resmini kullanaca\u011f\u0131z.<\/li>\n<li><strong>CollisionShape2D<\/strong>: Bu da meyve nesnemize ili\u015fkin \u00e7arpma alan\u0131n\u0131 tan\u0131mlamak i\u00e7in kullanaca\u011f\u0131z ve ba\u015f ile ayn\u0131 \u015fekilde olu\u015fturaca\u011f\u0131z. Bunu da daha sonra, yan\u0131ndaki g\u00f6ze t\u0131klayarak gizleyebilirsiniz.<\/li>\n<\/ul>\n<p>Son olarak, engelden farkl\u0131 olarak \u00e7arpma s\u0131ras\u0131nda bunun meyve oldu\u011funu anlamak i\u00e7in gruplama \u00f6zelli\u011fini kullanaca\u011f\u0131z. Bu ama\u00e7la, yine &#8220;node panel&#8221;&#8216;ini a\u00e7\u0131yoruz ve &#8220;Manage Group&#8221;s alt\u0131na &#8220;Food&#8221; yaz\u0131p Add&#8217;e t\u0131kl\u0131yoruz. Bu sahneye ili\u015fkin i\u015fimiz de bu kadar.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Y\u0131lan (&#8220;Snake&#8221;) Sahnesi<\/strong><\/span><\/h2>\n<p>\u015eimdi gelelim y\u0131lan sahnemize. Daha \u00f6nceki yaz\u0131lar\u0131mda da bahsetti\u011fim gibi, Godot i\u00e7erisinde oyun bile\u015fenlerinizi i\u00e7 i\u00e7e ge\u00e7mi\u015f sahnelerden olu\u015fturuyorsunuz. Y\u0131lan sahnemiz de asl\u0131nda bizim oyun sahnemizin bir par\u00e7as\u0131 olacak ve o da kendi i\u00e7erisinde bir tak\u0131m sahneler i\u00e7eriyor olacak. Hemen bir bakal\u0131m:<\/p>\n<p id=\"YYiMFPA\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1855 aligncenter\" src=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae3ee13f0b.png\" alt=\"\" width=\"199\" height=\"205\" srcset=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae3ee13f0b.png 253w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae3ee13f0b-150x154.png 150w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae3ee13f0b-200x206.png 200w\" sizes=\"auto, (max-width: 199px) 100vw, 199px\" \/><\/p>\n<ul>\n<li><strong>TailContainer:<\/strong> Y\u0131lan\u0131m\u0131z b\u00fcy\u00fcd\u00fck\u00e7e, kuyruk par\u00e7alar\u0131n\u0131 bunun i\u00e7erisine koyaca\u011f\u0131z,<\/li>\n<li><strong>SnakeHead:<\/strong> Y\u0131lan ba\u015f\u0131n\u0131 ifade eden g\u00f6m\u00fcl\u00fc sahnemiz. Bunun detaylar\u0131 a\u015fa\u011f\u0131da anlataca\u011f\u0131m,<\/li>\n<li><strong>MoveTimer:<\/strong> Y\u0131lan\u0131n hareketi i\u00e7in kullanaca\u011f\u0131z,<\/li>\n<li><strong>[Eat|Hit]Sound:<\/strong> Meyve yeme ve duvar\/engellere \u00e7arpma seslerimiz,<\/li>\n<li><strong>InitialPosition:<\/strong> Y\u0131lan\u0131m\u0131z\u0131n harekete ba\u015flayaca\u011f\u0131 ilk konum.<\/li>\n<\/ul>\n<p>\u015eimdi art\u0131k y\u0131lan sahne beti\u011fine bir g\u00f6z atman\u0131n zaman\u0131 geldi.<br \/>\n\u00d6ncelikli olarak olu\u015fturdu\u011fumuz MoveTimer sayac\u0131n\u0131n &#8220;timeout&#8221; sinyalini ba\u015f sahnesindeki <em>onMoveTimer_timeout<\/em> fonksiyonu ile ba\u011fl\u0131yoruz. Bu sayede, y\u0131lan ba\u015f\u0131 saya\u00e7 ile tetiklenerek, hareket mekani\u011fini \u00e7al\u0131\u015ft\u0131racak.<\/p>\n<p>Daha sonra yapaca\u011f\u0131m\u0131z \u015fey, klavye arac\u0131l\u0131\u011f\u0131 ile girdileri almak olacak (ileride belki farkl\u0131 girdileri de kullan\u0131r\u0131z \ud83d\ude09 ). Bunun i\u00e7in \u00f6ncelikle &#8220;<em>Project-&gt;Project Settings<\/em>&#8221; alt\u0131ndaki &#8220;Input Map&#8221; sekmesine gidiyoruz. Burada bir k\u0131s\u0131m girdi e\u015fle\u015ftirmeleri yapaca\u011f\u0131z. Bu ayarlar ile uygulama i\u00e7erisinde, &#8220;<em>ui_xxx<\/em>&#8221; ile ba\u015flayan olaylara, \u00e7e\u015fitli klavye\/fare\/dokunmatik girdileri atayabiliyoruz. Oyunumuz i\u00e7in \u015fimdilik a\u015fa\u011f\u0131daki e\u015flemeleri yapmam\u0131z yeterli:<\/p>\n<ul>\n<li><strong>ui_up:<\/strong> Up (keyboard)<\/li>\n<li><strong>ui_down:<\/strong> Down (keyboard)<\/li>\n<li><strong>ui_left:<\/strong> Left (keyboard)<\/li>\n<li><strong>ui_right:<\/strong> Right (keyboard)<\/li>\n<\/ul>\n<p>Bu ayarlamalar\u0131 yapt\u0131ktan sonra, uygulama i\u00e7erisinden bu tu\u015flara bas\u0131lma bilgilerini alabilece\u011fiz. Bunun i\u00e7in de <em>_input<\/em> fonksiyonu kullan\u0131lmakta. Bu fonksiyon ile ba\u015f sahnesi, girdilerden haberdar edilecek.<\/p>\n<p>\u015eimdi s\u0131rayla \u00f6nemli bir ka\u00e7 fonksiyonlarda neler yapt\u0131\u011f\u0131m\u0131za bakal\u0131m. Di\u011fer fonksiyonlara ili\u015fkin a\u00e7\u0131klamalara betik i\u00e7erisinden ula\u015fabilirsiniz.<\/p>\n<ul>\n<li><strong>_ready fonksiyonu<\/strong>: \u00d6ncelikle sinyallerin birbirleri ile ili\u015fkilendirilmesi, ba\u015f\u0131n ilk pozisyona al\u0131nmas\u0131, g\u00f6vde bile\u015fenlerinin olu\u015fturulmas\u0131 ve nihai olarak sayac\u0131n ba\u015flat\u0131lmas\u0131n\u0131 ger\u00e7ekle\u015ftirir.<\/li>\n<li><strong>setupSignals fonksiyonu<\/strong>: Tan\u0131mlam\u0131\u015f oldu\u011fumuz sinyalleri ilgili fonksiyonlar ile ba\u011fland\u0131\u011f\u0131 fonksiyon buras\u0131. Bunlar s\u0131rayla y\u0131lan ile ba\u015f (<em>inputReceived<\/em>) ve ba\u015f ile y\u0131lan sahnelerindeki fonksiyonlar (obstacleHit, headMoved, foodCollected) ile ba\u011fl\u0131yoruz.<\/li>\n<li><strong>moveTail fonksiyonu:<\/strong> Ba\u015f pozisyonu de\u011fi\u015fti\u011finde, en arkadaki g\u00f6vde par\u00e7as\u0131n\u0131 \u00e7\u0131kar\u0131p, ba\u015f konumuna yeni bir g\u00f6vde par\u00e7as\u0131 ekliyoruz. E\u011fer meyve yenilmi\u015f ise, g\u00f6vdeyi bir birim uzat\u0131yoruz.<\/li>\n<\/ul>\n<p>Evet arkada\u015flar bu ad\u0131mlar ile birlikte art\u0131k y\u0131lan oyunumuzu ete kemi\u011fe b\u00fcr\u00fcnd\u00fcrm\u00fc\u015f olduk. Yapaca\u011f\u0131m\u0131z son \u015fey, engelleri tan\u0131mlamak olacak. Meyve sahnesinde oldu\u011fu gibi, background sahnemizi a\u00e7\u0131yoruz. Daha sonra, b\u00fct\u00fcn Wall \u00e7ocuk d\u00fc\u011f\u00fcmleri i\u00e7in &#8220;node panel&#8221;&#8216;ini a\u00e7\u0131yoruz ve &#8220;Manage Group&#8221;s alt\u0131na &#8220;Obstacle&#8221; yaz\u0131p Add&#8217;e t\u0131kl\u0131yoruz.<\/p>\n<p>Art\u0131k F5 e basarak oyunumuzu ba\u015flatabiliriz. A\u015fa\u011f\u0131daki gibi oyun ekran\u0131m\u0131z\u0131 g\u00f6rmenizi bekliyorum. G\u00f6remezseniz, yorumlar k\u0131sm\u0131nda sizleri bekliyor olaca\u011f\u0131m \ud83d\ude42<\/p>\n<p id=\"qpaIhCK\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1860 aligncenter\" src=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae7d002919.png\" alt=\"\" width=\"551\" height=\"439\" srcset=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae7d002919.png 802w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae7d002919-300x239.png 300w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae7d002919-768x612.png 768w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae7d002919-500x398.png 500w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae7d002919-150x120.png 150w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae7d002919-400x319.png 400w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae7d002919-800x637.png 800w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2020\/05\/img_5ecae7d002919-200x159.png 200w\" sizes=\"auto, (max-width: 551px) 100vw, 551px\" \/><\/p>\n<p>Uygulamay\u0131 daha iyi tan\u0131yabilmek i\u00e7in, muhakkak yukar\u0131daki ad\u0131mlar\u0131n \u00fczerine eklemeler yaparak, uyarlamalar yap\u0131n. Bir sonraki yaz\u0131da, meyvelere can verece\u011fiz, oyun alan\u0131 ile ilgili s\u0131k\u0131nt\u0131y\u0131 giderece\u011fiz (acaba ne???), oyunumuzu android&#8217;te \u00e7al\u0131\u015fabilecek hale getirece\u011fiz. O zamana kadar kendinize iyi bak\u0131n. \u0130yi e\u011flenceler.<\/p>","protected":false},"excerpt":{"rendered":"<p>Evet arkada\u015flar Godot oyunumuza kald\u0131\u011f\u0131m\u0131z yerden devam ediyoruz. Art\u0131k biraz daha h\u0131zlanabiliriz. A\u015fa\u011f\u0131daki yaz\u0131lar\u0131 okumad\u0131ysan\u0131z, l\u00fctfen \u00f6nce onlar\u0131 okuyunuz. Godot ili\u015fkin temel bilgileri orada bulabilirisiniz. Godot Y\u0131lan Klonu 1 &#8211; Dizin Yap\u0131s\u0131 ve Git Sayfas\u0131 Godot Y\u0131lan Klonu 2 \u2013 Ayarlar ve Temel Sahneler Ayr\u0131ca bu yaz\u0131m ile yapm\u0131\u015f oldu\u011fum de\u011fi\u015fikliklere a\u015fa\u011f\u0131daki respository&#8217;den ula\u015fabilirsiniz: https:\/\/github.com\/yazilimperver\/BegumSnakeRider&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/\">Continue reading <span class=\"meta-nav\">&#8594;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":1518,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[173,25],"tags":[721,718,52,697,622,722,737,696,717,719,720,715,716],"class_list":["post-1852","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oyun","category-oyun-gelistirme","tag-auto-load","tag-dugum","tag-game-development","tag-git-hub","tag-godot","tag-godot-settings","tag-input-map","tag-post-series","tag-sahne","tag-scene-instancing","tag-scenes","tag-snake-game","tag-yilan-oyunu"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Godot Y\u0131lan Klonu 3 \u2013 Y\u0131lan ve alt sahneler - Yaz\u0131l\u0131mperver&#039;in 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:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[:tr]Godot Y\u0131lan Klonu 3 \u2013 Y\u0131lan ve alt sahneler[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"Evet arkada\u015flar Godot oyunumuza kald\u0131\u011f\u0131m\u0131z yerden devam ediyoruz. Art\u0131k biraz daha h\u0131zlanabiliriz. A\u015fa\u011f\u0131daki yaz\u0131lar\u0131 okumad\u0131ysan\u0131z, l\u00fctfen \u00f6nce onlar\u0131 okuyunuz. Godot ili\u015fkin temel bilgileri orada bulabilirisiniz. Godot Y\u0131lan Klonu 1 &#8211; Dizin Yap\u0131s\u0131 ve Git Sayfas\u0131 Godot Y\u0131lan Klonu 2 \u2013 Ayarlar ve Temel Sahneler Ayr\u0131ca bu yaz\u0131m ile yapm\u0131\u015f oldu\u011fum de\u011fi\u015fikliklere a\u015fa\u011f\u0131daki respository&#8217;den ula\u015fabilirsiniz: https:\/\/github.com\/yazilimperver\/BegumSnakeRider... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-24T21:34:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-05-24T21:36:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/11\/logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"68\" \/>\n\t<meta property=\"og:image:height\" content=\"67\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"yaz\u0131l\u0131mperver\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"yaz\u0131l\u0131mperver\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"Godot Y\u0131lan Klonu 3 \u2013 Y\u0131lan ve alt sahneler\",\"datePublished\":\"2020-05-24T21:34:55+00:00\",\"dateModified\":\"2020-05-24T21:36:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/\"},\"wordCount\":1797,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"auto load\",\"d\u00fc\u011f\u00fcm\",\"Game Development\",\"git hub\",\"godot\",\"godot settings\",\"input map\",\"post series\",\"sahne\",\"scene instancing\",\"scenes\",\"snake game\",\"y\u0131lan oyunu\"],\"articleSection\":[\"Oyun\",\"Oyun Geli\u015ftirme\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/\",\"name\":\"[:tr]Godot Y\u0131lan Klonu 3 \u2013 Y\u0131lan ve alt sahneler[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2020-05-24T21:34:55+00:00\",\"dateModified\":\"2020-05-24T21:36:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Godot Y\u0131lan Klonu 3 \u2013 Y\u0131lan ve alt sahneler\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.yazilimperver.com\/#website\",\"url\":\"https:\/\/www.yazilimperver.com\/\",\"name\":\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"description\":\"Payla\u015fmak g\u00fczeldir.\",\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.yazilimperver.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\",\"name\":\"yaz\u0131l\u0131mperver\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"contentUrl\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"caption\":\"yaz\u0131l\u0131mperver\"},\"logo\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[:tr]Godot Y\u0131lan Klonu 3 \u2013 Y\u0131lan ve alt sahneler[:] - Yaz\u0131l\u0131mperver&#039;in 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:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/","og_locale":"tr_TR","og_type":"article","og_title":"[:tr]Godot Y\u0131lan Klonu 3 \u2013 Y\u0131lan ve alt sahneler[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"Evet arkada\u015flar Godot oyunumuza kald\u0131\u011f\u0131m\u0131z yerden devam ediyoruz. Art\u0131k biraz daha h\u0131zlanabiliriz. A\u015fa\u011f\u0131daki yaz\u0131lar\u0131 okumad\u0131ysan\u0131z, l\u00fctfen \u00f6nce onlar\u0131 okuyunuz. Godot ili\u015fkin temel bilgileri orada bulabilirisiniz. Godot Y\u0131lan Klonu 1 &#8211; Dizin Yap\u0131s\u0131 ve Git Sayfas\u0131 Godot Y\u0131lan Klonu 2 \u2013 Ayarlar ve Temel Sahneler Ayr\u0131ca bu yaz\u0131m ile yapm\u0131\u015f oldu\u011fum de\u011fi\u015fikliklere a\u015fa\u011f\u0131daki respository&#8217;den ula\u015fabilirsiniz: https:\/\/github.com\/yazilimperver\/BegumSnakeRider... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2020-05-24T21:34:55+00:00","article_modified_time":"2020-05-24T21:36:15+00:00","og_image":[{"width":68,"height":67,"url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/11\/logo.jpg","type":"image\/jpeg"}],"author":"yaz\u0131l\u0131mperver","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"yaz\u0131l\u0131mperver","Tahmini okuma s\u00fcresi":"11 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"Godot Y\u0131lan Klonu 3 \u2013 Y\u0131lan ve alt sahneler","datePublished":"2020-05-24T21:34:55+00:00","dateModified":"2020-05-24T21:36:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/"},"wordCount":1797,"commentCount":0,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["auto load","d\u00fc\u011f\u00fcm","Game Development","git hub","godot","godot settings","input map","post series","sahne","scene instancing","scenes","snake game","y\u0131lan oyunu"],"articleSection":["Oyun","Oyun Geli\u015ftirme"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/","name":"[:tr]Godot Y\u0131lan Klonu 3 \u2013 Y\u0131lan ve alt sahneler[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2020-05-24T21:34:55+00:00","dateModified":"2020-05-24T21:36:15+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/05\/24\/godot-yilan-klonu-3-yilan-ve-alt-sahneler\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"Godot Y\u0131lan Klonu 3 \u2013 Y\u0131lan ve alt sahneler"}]},{"@type":"WebSite","@id":"https:\/\/www.yazilimperver.com\/#website","url":"https:\/\/www.yazilimperver.com\/","name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","description":"Payla\u015fmak g\u00fczeldir.","publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.yazilimperver.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb","name":"yaz\u0131l\u0131mperver","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/","url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","contentUrl":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","caption":"yaz\u0131l\u0131mperver"},"logo":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/1852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/comments?post=1852"}],"version-history":[{"count":2,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/1852\/revisions"}],"predecessor-version":[{"id":1862,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/1852\/revisions\/1862"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media\/1518"}],"wp:attachment":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media?parent=1852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=1852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=1852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}