Hızla çarpışmalar gerçekleştiriyorum. Bu hatayı düzeltmek için etraftaki bir kod satırını değiştirebilirim, ancak bunu yaptığımda daha fazla hata oluşur.Swift Xcode'taki çarpışmaların ayarlanması
let collisionHitBox = CGRect(x: 201, y: 139, width: 398, height: 212)
barCollisions.physicsBody? = SKPhysicsBody(edgeLoopFromRect: collisionHitBox)
let ballCategory: UInt32 = 0x1 << 0
let barCategory: UInt32 = 0x1 << 1
ball.physicsBody?.categoryBitMask = ballCategory
ball.physicsBody?.usesPreciseCollisionDetection = true
ball.physicsBody?.collisionBitMask = ballCategory | barCategory
ball.physicsBody?.contactTestBitMask = ballCategory | barCategory
barCollisions.physicsBody?.categoryBitMask = barCategory
barCollisions.physicsBody?.usesPreciseCollisionDetection = true
func didBeginContact(contact: SKPhysicsContact) {
let firstNode = contact.bodyA.node as! SKSpriteNode
// This is where I get an error saying "Initialization of immutable value was never used, consider replacing it for removing it"
let secondNode = contact.bodyB.node as! SKSpriteNode
if (contact.bodyA.categoryBitMask == ballCategory) && (contact.bodyB.categoryBitMask == barCategory)
{
let contactPoint = contact.contactPoint
let contact_y = contactPoint.y
let target_y = secondNode.position.y
let margin = secondNode.frame.size.height/2 - 25
if (contact_y > (target_y - margin)) && contact_y < (target_y + margin) {
print("GameOver")
}
}
kaldırmak böylece, bunu kullanarak olmadığını söylüyor. Düzeltdikten sonra, bize yeni hatasını bildirin. Beyan edilmeyen ballCategory ve barCategory ile ilgili bir hata olacağını tahmin edeceğim. Ama her neyse xcode size anlamlı bir mesaj vermelidir;) Temel hata ayıklama gibi görünüyor, bu mesajın diğerlerine yararlı olabileceğinden emin değilsiniz ... – Heyfara
(contact.bodyB.categoryBitMask == barCategory) 'i (contact.bodyB. categoryBitMask == barCollisions), özgün hata kaybolur ama yerine bir hata alıyorum: "SKNode! değeri argüman türüne UInt32 dönüştüremiyorum" – Seed12