User prompt
Please fix the bug: 'Timeout.tick error: flyinEnemyGraphics is not defined' in or related to this line: 'flyinEnemy.y = -flyinEnemyGraphics.height / 2;' Line Number: 151
User prompt
başka bir yöntem kullanarak flyinenemyi ekranın üstünden spawnlat
User prompt
Sorunu çözmek için iki kontrol yapalım: Anchor Ayarı: Eğer flyin enemy asset’in anchor noktası 0.5 olarak ayarlanmışsa, y koordinatını ayarladığınızda asset’in orta noktası belirlediğiniz değere denk gelir. Yani, js Kopyala Düzenle flyinEnemy.y = 2732 / 2 - 400; ifadesi, asset’in ortasını 1366 - 400 = 966 yapar. Eğer asset’in üst kısmının 966 olmasını istiyorsanız, anchorY’yi 0 olarak ayarlamalısınız. Spawn Konumunun Doğru Ayarlandığından Emin Olun: Eğer flyin enemy’nin ekranın en sağında ve üst kısmı 400 pixel yukarıda (örneğin ekranın ortasının 400 pixel yukarısı) görünmesini istiyorsanız, spawn fonksiyonunuzda y koordinatını doğru belirlediğinizden emin olun. Aşağıda iki seçenek var: Seçenek 1: Asset’in Orta Noktasını 400 Pixel Yukarı Kaydırmak Eğer asset’in orta noktası 400 pixel yukarıda olmalıysa, mevcut kodunuz doğru: js Kopyala Düzenle flyinEnemy.y = (2732 / 2) - 400; // Orta nokta: 1366 - 400 = 966 Bu durumda asset’in merkezinin 966 olacağını unutmayın. Seçenek 2: Asset’in Üst Kısmı 400 Pixel Yukarıda Görünsün Eğer asset’in üst kısmının 400 pixel yukarıda (örneğin ekranın üst kısmına daha yakın) görünmesini istiyorsanız, asset’in anchorY değerini 0 yaparak yukarıdaki ayarı uygulayabilirsiniz: js Kopyala Düzenle var FlyinEnemy = Container.expand(function () { var self = Container.call(this); // Anchor ayarını üst kısım için değiştirdik var flyinEnemyGraphics = self.attachAsset('flyin_enemy', { anchorX: 0.5, anchorY: 0 // Üst kısım referans alınır }); self.speed = 5; self.update = function () { self.x -= self.speed; if (self.x < -50) { self.destroy(); } }; }); Spawn fonksiyonunda da: js Kopyala Düzenle function spawnFlyinEnemy() { var delay = Math.random() * 1500 + 1500; // 1500-3000 ms arası gecikme LK.setTimeout(function () { var flyinEnemy = new FlyinEnemy(); flyinEnemy.x = 2048; // Asset'in üst kısmı, y değeri belirlediğimiz konumda olsun flyinEnemy.y = (2732 / 2) - 400; game.addChild(flyinEnemy); spawnFlyinEnemy(); }, delay); } Bu ayarlarla, flyin enemy spawn edildiğinde asset’in üst kısmı (anchorY=0) 1366 - 400 = 966 piksele yerleşecektir. Böylece asset, ekranın üst kısmına daha yakın görünecektir. Hangi yöntemi kullanacağınız, oyunda nasıl bir görünüm elde etmek istediğinize bağlı. Eğer hâlâ sorun devam ediyorsa, spawn işlemi sırasında y koordinatını kontrol etmek için console.log ekleyerek değerin doğru ayarlandığından emin olabilirsiniz: js Kopyala Düzenle console.log("Flyin enemy spawn y: " + flyinEnemy.y); Bu adımlarla istediğiniz pozisyonlamayı sağlamanız gerekir.
User prompt
400 pixel yukarı çıkar flyin enemy i
User prompt
flyin enemy 500 pixel yukarıdan spawn olmaya başlasın
User prompt
flyin enemy 300 pixel yukarıda spawn olsun
User prompt
Aşağıdaki fonksiyon, 1.5 ile 3 saniye (1500 ms – 3000 ms) arasında rastgele bir gecikmeyle uçan düşman (flyin enemy) spawn edecektir. Oyunun başında bu fonksiyonu bir kez çağırman yeterli; sonrasında her spawn’dan sonra kendi kendini tekrar çağırarak sürekli olarak uçan düşman üretir: js Kopyala Düzenle function spawnFlyinEnemy() { // 1.5 - 3 saniye (1500-3000 ms) arasında rastgele gecikme var delay = Math.random() * 1500 + 1500; // 0-1500 arası + 1500 = 1500-3000 LK.setTimeout(function () { var flyinEnemy = new FlyinEnemy(); // Örneğin ekranın en sağında spawn (x = 2048) flyinEnemy.x = 2048; // Normal düşmanın y konumundan 200 piksel yukarı (örnek) flyinEnemy.y = (2732 / 2) - 200; game.addChild(flyinEnemy); // Bir sonraki spawn’ı yine 1.5-3 saniye arası rastgele gecikmeyle çağır spawnFlyinEnemy(); }, delay); } // Oyun başlarken bir kez tetikle spawnFlyinEnemy(); Gecikme aralığı: var delay = Math.random() * 1500 + 1500; Bu ifade 1500 ms ile 3000 ms arasında rastgele bir değer üretir. Sürekli spawn mekanizması: Fonksiyon içinde kendini tekrar çağırarak her spawn’dan sonra yeni bir gecikmeyle sıradaki spawn’ı planlar.
User prompt
Aşağıdaki adımları izleyerek flyin enemy’lerin 1 ile 2 saniye arasında rastgele gecikmeyle spawn olmasını sağlayabilirsin: Önce, game.update içindeki uçan düşman (flyin enemy) spawn kodunu kaldır Mevcut kodunda genellikle şöyle bir kısım vardır (ya da benzeri): js Kopyala Düzenle // Spawn flying enemies at random intervals if (Math.random() < 0.01) { var flyinEnemy = new FlyinEnemy(); // ... game.addChild(flyinEnemy); } Bu satırları tamamen kaldır (veya yorum satırı yap). Aksi halde hem bu kod hem de aşağıda vereceğimiz fonksiyon çifte spawn’a sebep olur. Aşağıdaki fonksiyonu ekle ve oyunun başında bir kere çağır js Kopyala Düzenle function spawnFlyinEnemy() { // 1-2 saniye (1000-2000 ms) arasında rastgele gecikme var delay = Math.random() * 1000 + 1000; LK.setTimeout(function () { var flyinEnemy = new FlyinEnemy(); // Ekranın en sağında spawn (x = 2048) flyinEnemy.x = 2048; // Normal düşmanın olduğu orta noktadan 200 piksel yukarı: y = (2732/2) - 200 flyinEnemy.y = (2732 / 2) - 200; game.addChild(flyinEnemy); // Bir sonraki flyin enemy’yi yine 1-2 saniye arası rastgele gecikme ile çağır spawnFlyinEnemy(); }, delay); } // Oyun başlarken bir kere tetikle spawnFlyinEnemy(); Bu şekilde: Sadece bu fonksiyon uçan düşmanları kontrol eder ve her spawn işleminden sonra kendini tekrar çağırır. Gecikme değeri ( delay ) her seferinde 1000 ms (1 sn) ile 2000 ms (2 sn) arasında rastgele seçilir, böylece sürekli 0.0001 saniyede bir spawn olma sorunu ortadan kalkar. Uçan düşman, Enemy ile aynı hız (speed = 5) ayarına sahip olduğu için aynı hızda sola doğru hareket eder.
User prompt
flyin enemy 200 pixel yukarıdan spawn olsun ve iki flying enemynin spawn olması arasındaki süre en az 1 saniye en çok 2 saniye
User prompt
Aşağıdaki kod parçası, her bir flyin enemy spawn edildikten sonra, sonraki spawn için 1 ila 2 saniye arasında rastgele bir gecikme ayarlayarak, flyin enemy’nin ekranın en sağında (x = 2048) ve normal spawn noktasından 200 piksel yukarıda (y = (2732 / 2) - 200) oluşturulmasını sağlar. Flyin enemy’nin hızı, Enemy sınıfı ile aynı (speed = 5) olacak şekilde ayarlanmıştır: js Kopyala Düzenle function spawnFlyinEnemy() { // 1-2 saniye (1000-2000ms) arasında rastgele gecikme hesapla var delay = Math.random() * 1000 + 1000; LK.setTimeout(function () { var flyinEnemy = new FlyinEnemy(); // Ekranın en sağında spawn: x = 2048 flyinEnemy.x = 2048; // Normal enemy spawn noktasından 200 piksel yukarıda: y = (2732/2) - 200 flyinEnemy.y = (2732 / 2) - 200; game.addChild(flyinEnemy); // Bir sonraki flyin enemy spawn için fonksiyonu tekrar çağır spawnFlyinEnemy(); }, delay); } // Flyin enemy spawn işlemini başlat spawnFlyinEnemy(); Bu yapı sayesinde: Her flyin enemy spawn edildikten sonra, sonraki spawn işlemi 1 ile 2 saniye arasında rastgele bir süre sonra gerçekleşir. Flyin enemy, ekranın en sağında oluşturulup (x = 2048) ve normal spawn noktasından 200 piksel yukarıda (y = (2732 / 2) - 200) konumlandırılır. Flyin enemy’nin speed değeri (5) ile diğer enemy’lerle aynı hızda sola doğru hareket edecektir. Bu kodu oyunun ilgili kısmına ekleyerek istenen davranışı elde edebilirsin.
User prompt
Aşağıdaki örnekte, flyin enemy’nin spawn zamanı 1 saniye ile 2 saniye arasında rastgele belirleniyor ve spawn lokasyonu, ekranın en sağında olup, y koordinatı (normal spawn noktasından) 200 pixel yukarıda olacak şekilde ayarlanıyor. Bu fonksiyonu oyun başladığında çağırarak sürekli spawn işlemini gerçekleştirebilirsin: js Kopyala Düzenle // Flyin enemy spawn fonksiyonu function spawnFlyinEnemy() { // 1-2 saniye arası rastgele delay hesapla (ms cinsinden) var delay = Math.random() * 1000 + 1000; // 1000ms ile 2000ms arası LK.setTimeout(function () { var flyinEnemy = new FlyinEnemy(); // Ekranın en sağında spawn: x = 2048 flyinEnemy.x = 2048; // Normal enemy spawn noktası (örneğin 2732/2) üzerinden 200 pixel yukarıda spawn olsun flyinEnemy.y = (2732 / 2) - 200; game.addChild(flyinEnemy); // Bir sonraki spawn için fonksiyonu tekrar çağır spawnFlyinEnemy(); }, delay); } // Oyun başlatıldığında flyin enemy spawn işlemini başlat spawnFlyinEnemy(); Bu yapı ile: Rastgele Spawn Zamanı: Flyin enemy, 1 saniye ile 2 saniye arasında rastgele aralıklarla spawnlanır. Spawn Lokasyonu: Flyin enemy ekranın en sağında (x = 2048) ve normal spawn noktasından 200 pixel yukarıda (y = (2732 / 2) - 200) oluşturulur. Hareket Hızı: Flyin enemy’nin speed değeri (5) sayesinde enemy ile aynı hızda sola doğru hareket eder. İhtiyacına göre delay aralığını veya spawn lokasyonunu değiştirebilirsin.
User prompt
Aşağıdaki örnekte, uçan düşmanın spawn lokasyonunu ekranın en sağında olacak şekilde ayarladık (x = 2048). Aynı zamanda, spawn lokasyonunun y koordinatından 300 piksel çıkararak (örneğin, normal enemy spawn noktası 2732/2 ise, onun 300 piksel üstünde spawn olacak) düşmanın enemy ile aynı hızda (speed = 5) sola doğru hareket etmesini sağladık: js Kopyala Düzenle if (Math.random() < 0.01) { var flyinEnemy = new FlyinEnemy(); // Ekranın en sağında spawn (x = 2048) flyinEnemy.x = 2048; // Normal enemy spawn noktası 2732/2 ise, 300 piksel yukarı spawn etmek için: flyinEnemy.y = (2732 / 2) - 300; game.addChild(flyinEnemy); } Bu değişiklikle: Spawn Noktası: FlyinEnemy ekranın en sağında (x = 2048) ve normal spawn noktasının 300 piksel üstünde (y = (2732/2) - 300) ortaya çıkacaktır. Hareket Hızı: FlyinEnemy’nin speed değeri 5 olarak ayarlandığından, enemy ile aynı hızda sola doğru hareket edecektir. İhtiyacına göre y koordinatını veya spawn olasılığını değiştirebilirsin.
User prompt
Aşağıdaki kod parçasında, uçan düşmanın (FlyinEnemy) spawn lokasyonunu ekranın en üstü (y = 0) ve yatayda ortasında (x = 2048/2) olacak şekilde ayarladık. Böylece düşman sola doğru hareket ederken enemy ile aynı hıza (speed = 5) sahip olacaktır: js Kopyala Düzenle // Spawn flying enemies at fixed top center location if (Math.random() < 0.01) { var flyinEnemy = new FlyinEnemy(); // Ekranın ortası için x = 2048/2, ekranın en üstü için y = 0 flyinEnemy.x = 2048 / 2; flyinEnemy.y = 0; game.addChild(flyinEnemy); } Bu düzenlemeyle: Spawn Lokasyonu: FlyinEnemy artık ekranın üst orta noktasında (x:1024, y:0) spawnlanacaktır. Hareket Hızı: FlyinEnemy’nin self.speed değeri 5 olarak ayarlandığından, enemy ile aynı sola doğru hareket hızına sahip olur. İhtiyacına göre spawn oranını ve diğer parametreleri değiştirebilirsin.
User prompt
spawn flyin enenmy of between the top of the screen and middle of the screen spawn them right of the screen and spawn flyinenemys random time duration 0.8 second to 1.5 second
User prompt
Aşağıdaki iki adımda istediğin davranışı sağlayabilirsin: Spawn Hızını Artırmak: Enemy’lerin daha sık çıkması için enemySpawnInterval değerini azaltabilirsin. Örneğin, rastgele aralık oluştururken kullanılan minimum değeri düşürmek (örneğin 30 gibi) daha sık spawn yapmanı sağlayacaktır. Aralarda Mesafe Bırakmak: Yeni bir enemy spawn etmeden önce, mevcut enemy’lerden hiçbirinin spawn noktasına (örneğin ekranın sağ tarafı) çok yakın olmadığını kontrol edebilirsin. Aşağıdaki kod parçasında, ekranın sağ tarafında (örneğin x > 1800) enemy varsa spawn işlemini erteleyip bekliyoruz. Aşağıdaki örnek, mevcut kodunda yapman gereken değişiklikleri göstermektedir: js Kopyala Düzenle enemySpawnCounter++; if (enemySpawnCounter >= enemySpawnInterval) { // Mevcut enemy’lerin spawn bölgesine yakın olup olmadığını kontrol et var canSpawn = true; for (var i = 0; i < enemies.length; i++) { if (enemies[i].x > 1800) { // 1800 değeri örnek; ihtiyaca göre ayarla canSpawn = false; break; } } if (canSpawn) { var enemy = new Enemy(); enemy.x = 2048; enemy.y = 2732 / 2; enemies.push(enemy); game.addChild(enemy); } enemySpawnCounter = 0; // Daha sık spawn etmek için aralığı azaltıyoruz enemySpawnInterval = Math.floor(Math.random() * 100) + 30; } Bu değişikliklerle: Daha fazla enemy spawnlanır çünkü enemySpawnInterval daha küçük değerlere ayarlanıyor. Aralarında mesafe korunur çünkü spawn noktasına yakın enemy varsa yeni enemy oluşturulmaz. Bu yöntemle oyunun daha zorlu hale gelirken, enemy’lerin iç içe spawnlanmasının önüne geçmiş olacaksın. İhtiyacına göre mesafe kontrolü ve interval değerlerini değiştirebilirsin.
User prompt
weapon 9 saniye sonra yok olsun
User prompt
increase the amount of enemy
User prompt
Aşağıdaki örnekte, global bir coin counter (coinCount) tanımlanıyor ve ekranın üst orta kısmına yerleştiriliyor. Oyuncu coin ile çarpıştığında counter değeri artırılıyor: js Kopyala Düzenle // Global coin counter değişkeni var coinCount = 0; // Ekranın üst orta kısmına coin counter ekleyelim var coinCounter = new Text2('0', { size: 100, fill: 0xFFFFFF }); LK.gui.top.addChild(coinCounter); coinCounter.x = 2048 / 2 - coinCounter.width / 2; // Ortalamak için coinCounter.y = 20; // Üst kısımda konumlandırın Ve coin ile oyuncu çarpıştığında, update döngünüzde şu şekilde counter'ı güncelleyin: js Kopyala Düzenle // Coin'lerin güncellenmesi ve oyuncu ile çarpışma kontrolü for (var m = coins.length - 1; m >= 0; m--) { var coin = coins[m]; coin.update(); if (player.intersects(coin)) { coinCount++; // Coin alındığında counter'ı artır coinCounter.setText(coinCount.toString()); coin.destroy(); coins.splice(m, 1); } } Bu şekilde coin alındığında ekranın üst orta kısmındaki counter artacak ve coin sayısı görüntülenecektir.
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'split')' in or related to this line: 'var currentCoinCount = parseInt(coinCounterText.text.split(': ')[1]);' Line Number: 222
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'split')' in or related to this line: 'var currentCoinCount = parseInt(coinCounterText.text.split(': ')[1]) || 0;' Line Number: 222
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'split')' in or related to this line: 'var currentCoinCount = parseInt(coinCounterText.text.split(': ')[1]) || 0;' Line Number: 222
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'split')' in or related to this line: 'var currentCoinCount = parseInt(coinCounterText.text.split(': ')[1]);' Line Number: 222
User prompt
move it to middle of the screen
User prompt
add a conuter middle top of the screen increase the count when picked coin
User prompt
Sorunun temel nedeni, coin nesnesinin update fonksiyonunda coin’e referans verirken dış değişkene bağımlı olmanız. Bu durum, özellikle arka arkaya birden fazla coin spawn edildiğinde, update fonksiyonunun doğru coin üzerinde çalışmamasına sebep oluyor. Her coin için kendi update fonksiyonunda kendi bağlamını kullanmak (this) sorunu çözecektir. Aşağıdaki gibi güncellenmiş coin spawn kodunu deneyebilirsiniz: js Kopyala Düzenle // Weapon-enemy çarpışması sırasında coin oluşturma if (child instanceof Weapon && child.intersects(enemies[j])) { var coin = LK.getAsset('coin', { anchorX: 0.5, anchorY: 0.5 }); coin.x = enemies[j].x; coin.y = enemies[j].y; // Sabit velocity değeri (örneğin 5) coin.velocity = 5; coin.update = function () { // Her coin kendi bağlamındaki 'this' ile güncellenecek this.x -= this.velocity; // Sola hareket ettir if (this.x < -100) { this.destroy(); coins.splice(coins.indexOf(this), 1); } }; game.addChild(coin); coins.push(coin); // Enemy ve weapon'ı yok et enemies[j].destroy(); child.destroy(); enemies.splice(j, 1); break; } Bu şekilde, her coin kendi update fonksiyonunda kendi 'this' bağlamını kullanır; böylece iki enemy arka arkaya öldürüldüğünde her coin bağımsız olarak sola doğru hareket eder.
/**** * Classes ****/ // Define a class for enemies var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.update = function () { self.x -= self.speed; if (self.x < -50) { self.destroy(); } }; }); // Define a class for flying enemies var FlyinEnemy = Container.expand(function () { var self = Container.call(this); var flyinEnemyGraphics = self.attachAsset('flyin_enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.update = function () { self.x -= self.speed; if (self.x < -50) { self.destroy(); } }; }); // Define a class for the player character var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.jumpHeight = 40; self.isJumping = false; self.velocityY = 0; self.update = function () { if (self.isJumping) { self.y += self.velocityY; self.velocityY += 0.7; // Gravity etkisi if (self.y >= 2732 / 2) { self.y = 2732 / 2; // Zemin seviyesi self.isJumping = false; self.velocityY = 0; } } }; self.jump = function () { if (!self.isJumping) { self.isJumping = true; self.velocityY = -self.jumpHeight; } }; }); // ScrollingBackground sınıfı: orijinal ve mirrored arka planı içerir var ScrollingBackground = Container.expand(function () { var self = Container.call(this); // Orijinal arka plan (saga bakan) self.bg1 = LK.getAsset('background', { anchorX: 0, anchorY: 0 }); self.bg1.x = 0; self.bg1.y = 0; self.addChild(self.bg1); // Mirrored arka plan (flipX ile ters çevrilmiş, sola bakan) self.bg2 = LK.getAsset('background', { anchorX: 1, anchorY: 0 }); // scaleX'i -1 yaparak yatayda ters çeviriyoruz self.bg2.scaleX = -1; // bg1'in sağ kenarının hemen yanında yerleştiriyoruz self.bg2.x = self.bg1.width; self.bg2.y = 0; self.addChild(self.bg2); // Arka plan kayma hızı self.speed = 2; self.update = function () { // Her iki arka planı sola doğru kaydır self.bg1.x -= self.speed; self.bg2.x -= self.speed; // bg1 ekran dışına çıktıysa (tamamen sol tarafta kalırsa) if (self.bg1.x + self.bg1.width <= 0) { // bg1'in sağ tarafını, bg2'nin hemen sağına konumlandır self.bg1.x = self.bg2.x + self.bg2.width; } // bg2 için de aynı işlemi yap if (self.bg2.x + self.bg2.width <= 0) { self.bg2.x = self.bg1.x + self.bg1.width; } }; }); // Define a class for the weapon var Weapon = Container.expand(function () { var self = Container.call(this); var weaponGraphics = self.attachAsset('weapon', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 40; self.update = function () { // Weapon'ın yönünü kullanarak hedefe doğru hareket ettir self.x += self.directionX * self.speed; self.y += self.directionY * self.speed; // Weapon'ı yönüne göre döndür weaponGraphics.rotation += 0.3; // Hedefe yaklaştıysa yok et if (Math.abs(game.down.x - self.x) < self.speed && Math.abs(game.down.y - self.y) < self.speed) { self.destroy(); } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB // Gökyüzü mavisi arka plan }); /**** * Game Code ****/ // Global coin counter değişkeni var coinCount = 0; // Global coin dizisi var coins = []; // Initialize enemies & background var scrollingBackground = new ScrollingBackground(); game.addChild(scrollingBackground); // Initialize player var player = game.addChild(new Player()); player.x = 2048 / 2 - 200; // Oyuncuyu daha sola yerleştir player.y = 2732 / 2; // Initialize enemy dizisi var enemies = []; var enemySpawnInterval = 50; // Reduced interval for more frequent enemy spawning var enemySpawnCounter = 0; // Score için Text2 nesnesi var scoreText = new Text2('0', { size: 100, fill: 0xFFFFFF }); LK.gui.top.addChild(scoreText); scoreText.x = 2048 / 2; scoreText.y = 0; // Ekranın üst orta kısmına coin counter ekleyelim var coinCounter = new Text2('0', { size: 100, fill: 0xFFFFFF }); LK.gui.top.addChild(coinCounter); coinCounter.x = 2048 / 2 - coinCounter.width / 2; // Ortalamak için coinCounter.y = 20; // Üst kısımda konumlandırın game.update = function () { // Arka planı güncelle scrollingBackground.update(); // Oyuncuyu güncelle player.update(); // Düşmanları spawnla ve güncelle enemySpawnCounter++; if (enemySpawnCounter >= enemySpawnInterval) { // Check if any existing enemy is too close to the spawn point var canSpawn = true; for (var i = 0; i < enemies.length; i++) { if (enemies[i].x > 1800) { // Adjust the value as needed canSpawn = false; break; } } if (canSpawn) { var enemy = new Enemy(); enemy.x = 2048; enemy.y = 2732 / 2; enemies.push(enemy); game.addChild(enemy); } enemySpawnCounter = 0; // Reduce the interval for more frequent spawning enemySpawnInterval = Math.floor(Math.random() * 100) + 30; } // Flyin enemy spawn fonksiyonu function spawnFlyinEnemy() { // 1-2 saniye (1000-2000ms) arasında rastgele gecikme hesapla var delay = Math.random() * 1000 + 1000; LK.setTimeout(function () { var flyinEnemy = new FlyinEnemy(); // Ekranın en sağında spawn: x = 2048 flyinEnemy.x = 2048; // Normal enemy spawn noktasından 200 piksel yukarıda: y = (2732/2) - 200 flyinEnemy.y = 2732 / 2 - 200 - 200; game.addChild(flyinEnemy); // Bir sonraki flyin enemy spawn için fonksiyonu tekrar çağır spawnFlyinEnemy(); }, delay); } // Oyun başlatıldığında flyin enemy spawn işlemini başlat spawnFlyinEnemy(); for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); if (player.intersects(enemies[j])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } else if (player.x > enemies[j].x && !enemies[j].passed) { enemies[j].passed = true; LK.setScore(LK.getScore() + 1); scoreText.setText(LK.getScore()); } // Check for collision between weapon and enemy for (var k = game.children.length - 1; k >= 0; k--) { var child = game.children[k]; if (child instanceof Weapon && child.intersects(enemies[j])) { // Spawn a coin at the enemy's position before destroying var coin = LK.getAsset('coin', { anchorX: 0.5, anchorY: 0.5 }); coin.x = enemies[j].x; coin.y = enemies[j].y; // Sabit velocity değeri belirleyelim (örneğin 5) coin.velocity = 5; coin.update = function () { this.x -= this.velocity; // Sola hareket ettir if (this.x < -100) { this.destroy(); coins.splice(coins.indexOf(this), 1); } }; game.addChild(coin); coins.push(coin); // Enemy ve weapon'ı yok et enemies[j].destroy(); child.destroy(); enemies.splice(j, 1); break; } } } // Coin'lerin güncellenmesi ve oyuncu ile çarpışma kontrolü for (var m = coins.length - 1; m >= 0; m--) { var coin = coins[m]; coin.update(); if (player.intersects(coin)) { coinCount++; // Coin alındığında counter'ı artır coinCounter.setText(coinCount.toString()); coin.destroy(); coins.splice(m, 1); } } }; // Handle player jump ve weapon fırlatma game.down = function (x, y, obj) { if (player.isJumping) { if (!game.lastWeaponTime || Date.now() - game.lastWeaponTime > 400) { var weapon = new Weapon(); weapon.x = player.x; weapon.y = player.y; // Hedef koordinatlarını hesapla var dx = x - weapon.x; var dy = y - weapon.y; var distance = Math.sqrt(dx * dx + dy * dy); weapon.directionX = dx / distance; weapon.directionY = dy / distance; game.addChild(weapon); LK.setTimeout(function () { weapon.destroy(); }, 9000); game.lastWeaponTime = Date.now(); } } player.jump(); };
===================================================================
--- original.js
+++ change.js
@@ -197,9 +197,9 @@
var flyinEnemy = new FlyinEnemy();
// Ekranın en sağında spawn: x = 2048
flyinEnemy.x = 2048;
// Normal enemy spawn noktasından 200 piksel yukarıda: y = (2732/2) - 200
- flyinEnemy.y = 2732 / 2 - 200;
+ flyinEnemy.y = 2732 / 2 - 200 - 200;
game.addChild(flyinEnemy);
// Bir sonraki flyin enemy spawn için fonksiyonu tekrar çağır
spawnFlyinEnemy();
}, delay);
Single 2D Mario Character. In-Game asset. 2d. Blank background.
2D Single Monster. In-Game asset. 2d. Blank background. High contrast. No shadows.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
marionun ingiliz boru anahtarı aleti. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
red heart mario. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
completely black simple counter without sharp edges
sea and sky,pixel,realistic but detailles benzer renkler mavi ve mavi Single Game Texture. In-Game asset. 2d. Blank background. low contrast. No shadows