私はこのエラーに遭遇したときに、迅速に衝突を設定する過程にあります。私はそのエラーを修正するためにコード行を変更することができますが、それを行うと、より多くのエラーが発生します。Swift Xcodeでの衝突の設定
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")
}
}
を削除することができますので、私はこのメッセージがより明確にすることができないと思う、ちょうどあなたがfirstNodeを設定することを言っているが、あなたはそれを使用していません。修正したら、新しいエラーを教えてください。私は、宣言されていないballCategoryとbarCategoryのエラーを推測します。しかし、とにかくxcodeは意味のあるメッセージを与えるはずです;)基本的なデバッグのようですが、この投稿が他の人に役立つかどうかわかりません... – Heyfara
(contact.bodyB.categoryBitMask == barCategory)を(contact.bodyB。 categoryBitMask == barCollisions)、元のエラーは消えますが、代わりに「値SKNodeを引数タイプUInt32に変換できません」 – Seed12