2016-03-30 18 views
0

İlk Swift uygulamasını Sprite Kit'i kullanarak yapmaya çalışıyorum. Uygulama, ekran boyunca rastgele hareket etmesi gereken en fazla 5 nesne oluşturmalıdır. Hız artar ve boyutu her 5 saniyede bir azalır. Sahne doğru şekilde kurulur, nesneler görünür ve hareket eder ancak bir süre sonra CPU kullanımı% 100 olur, FPS 0'a düşer ve uygulama kapanır. Bazen birkaç saniye çalışmaya devam eder, bazen olmaz. Nedeni nedir?Sprite Kit uygulaması,

Sadece Xcode'ta noob var - Simülasyon sırasında şu anda hangi kod bloğunun çalıştığını bulmak mümkün mü?

Güncelleştirme işlevi. didMoveToView ve touchesBegan bölümlerini dahil etmedim, çünkü bu problemi etkilemiyorlar.

override func update(currentTime: CFTimeInterval) { 
    if (currentTime-oldTime)>1 { 
     if arrayofAims.isEmpty==false { 
      for currentAim in arrayofAims { 
       repeat {xvelocity=(Int(arc4random())%3 - 1) * aimSpeedX} while xvelocity == 0 
       repeat {yvelocity=(Int(arc4random())%3 - 1) * aimSpeedX} while yvelocity == 0 
       currentAim.physicsBody?.applyForce(CGVectorMake (CGFloat(xvelocity), CGFloat(yvelocity))) 
       } 
      } 
     oldTime=currentTime 
     timecount+=1 
    } 
    if timecount>5 { 
     if aimSpeedX < 5000 { 
      aimSpeedX+=200 
     } 
     if aimSizeRatioX > 0.3 { 
      aimSizeRatioX -= 0.05 
      aimSizeRatioY -= 0.05 
     } 
     timecount=0 
     if arrayofAims.count<6 { arrayofAims.append(createAnAim()) 
      currentAim=arrayofAims[arrayofAims.count-1] 
      addChild(currentAim) 
     } 
    } 
} 
+0

Welcome etkileşim yok! Lütfen [ask] bölümünü okuyun. BTW, henüz kimse cevap vermedi, bu yüzden kime teşekkür ediyorsun? –

+0

Çoğu ilkel hata ayıklama yöntemi olarak, sorunu yalıtmak için kod bölümlerini kaldırmaya çalışın. Yani 'addChild (currentAim)' satırını kaldırarak başlayın ve sorunun devam edip etmediğini görmek için bekleyin. Güncelleme yönteminin sorumlu olduğundan emin misiniz? Çizim sayısı ('skView.showsDrawsCount') ve düğüm sayısı (' skView.showsNodesCount') göstermek için hata ayıklama etiketlerini etkinleştirin. Uygulama takıldığında ne numaraları görüyorsunuz? – Whirlwind

+0

Ya da yaşadığınız soruyu çoğaltabilecek (veya bir github repo'yu bile yükleyebilecek) asgari bir örnekle sorunuzu güncelleyin. – Whirlwind

cevap

-1

Bazı Sprite Seti çarpışma modeli hatası ile olabilir mi? Bir ben

aim.physicsBody?.collisionBitMask = boundCategory 

ile değiştirdiğini ve donma kayboldu

aim.physicsBody = SKPhysicsBody(texture: aim.texture!, size: aim.size) 
aim.physicsBody?.categoryBitMask = aimCategory 
aim.physicsBody?.collisionBitMask = aimCategory | boundCategory 

vardı ama nesneler [böylece] Her başkalarıyla

+0

Bu aimCategory veya boundCategory ne olduğunu açıklamak çünkü iyi bir cevap değil etkileşim ve yok Sprite Kiti ile bir hata olduğunu düşünmek için hiçbir zaman iyi bir fikir değildir, her zaman hata size ait olduğunu düşününceye kadar API – Knight0fDragon

+0

@ Knight0fDragon hata olduğunu kanıtlamak kadar ama API ile bazı sorun olduğunu varsayalım çünkü nesneler çarpışmalarında rastgele bir zamanda ortaya çıktı ve çarpışma kontrolü kaldırıldığında ortadan kayboldu. Kategori bildirimi hedef kategorisine izin verilmişti: UInt32 = 0x1 << 0 let boundCategory: UInt32 = 0x1 << 1 – DimitryTheBlack

+0

@DimitryTheBlack Repo'yu, sorunu yeniden oluşturabilecek minimal bir örnekle yüklerseniz, daha fazlasını anlatabiliriz. Bunun SpriteKit ile ilgili bir hata olduğundan şüpheliyim ve kodunuzda bir şeylerin yanlış olduğunu söyleyebilirim (ama asla bilmeyecek). – Whirlwind

İlgili konular