私はdownvotesで十字架にされる前に私はこれについての研究をしたと私はまだこのエラーを取得している理由を理解できないと言うことができます。オプションのアンラップSKPhysicsエラー
私は、プレイヤーが防御しようとしているコアを持っています。流星の流星を守るために、そこから小さなレーザーを撃つことができます。まあ、私はすべての設定と作業(ほとんどの時間とにかく)が、一度とレーザーが流星に当たると、衝突の処理機能は、ショットノードと流星ノードを削除しようとする間、それはこのエラーをスロー:
fatal error: unexpectedly found nil while unwrapping an Optional value
私はこれに多くの掘り下げを行いましたが、わかりません。ここで
は私のdidBeginです:func didBegin(_ contact: SKPhysicsContact) {
if (contact.bodyA.node?.name == "shot") { // shot A
collisionBetween(first: (contact.bodyA.node)!, second: (contact.bodyB.node)!)
} else if (contact.bodyB.node?.name == "shot") { // shot B
collisionBetween(first: (contact.bodyB.node)!, second: (contact.bodyA.node)!)
}
if (contact.bodyA.node?.name == "core") { // core A
collisionBetween(first: (contact.bodyA.node)!, second: (contact.bodyB.node)!)
} else if (contact.bodyB.node?.name == "core") { // core B
collisionBetween(first: (contact.bodyB.node)!, second: (contact.bodyB.node)!)
}
}
、ここで私のcollisionBetween機能です:
func collisionBetween(first: SKNode, second: SKNode) {
if first.name == "shot" && second.name == "sMeteor" {
first.removeFromParent() // these two only throw the error
second.removeFromParent() // every once and a while
} else if first.name == "sMeteor" && second.name == "shot" {
first.removeFromParent() // these two throw the error also
second.removeFromParent() // but only on occasion
} else if first.name == "mMeteor" && second.name == "shot" {
second.removeFromParent()
} else if first.name == "shot" && second.name == "mMeteor" {
first.removeFromParent()
}
if first.name == "core" && second.name == "sMeteor" {
second.removeFromParent() //always throws the error
} else if first.name == "sMeteor" && second.name == "core" {
first.removeFromParent() //always throws the error
}
}
私は今、しばらくの間、このエラーを把握しようとしてきた、と私は持っているような気がオプションの基本的な理解。これらのエラーは、親からノードを削除しようとするとスローされます。self
この問題を解決するためにさまざまなアプローチを試しましたが、私の人生にとってはそれを理解できません。どんな助けもありがとう!
私はそれほど疑わしい!これをデバッグしようとするとdidBeginへの複数の呼び出しが発生しましたが、解決方法はわかりませんでした。どうもありがとう、私はあなたがリンクした答えを確かにチェックします。また、私のcollisionBetween関数をクリーンアップしてくれてありがとう、それはむしろ混乱していました。本当にありがとう! –