0
コンタクトボディ(SKPhysicsBody)にノードが接続され、SKSpriteNodeとの接触が検出されたときに呼び出されます。場合によっては、ノードを接点本体に接続できないためにエラーが発生することがあるので、そのタイプのエラーを回避するノードがあるかどうかをテストします。しかし、警告はそれが偽に戻ってくることはないと私に伝えます。私はそれをテストして以来、このようなエラーはもうありませんでしたが、それがうまくいくかどうか、あるいはそれがまだ起こるかどうかはわかりません。あなたは何か考えていますか?ノードがphysicsBody swiftにアタッチされているかどうかのテスト
//The actual code
func didBegin(_ contact: SKPhysicsContact) {
if (contact.bodyA.categoryBitMask == enemyCategory) && (contact.bodyB.categoryBitMask == shootCategory){ //test if it is the contact with I want to catch
let shootNode = contact.bodyB.node, shootNode != nil { // I test if there's a node attached to the enemyShootNode but it's supposed never to return false
let enemyNode = contact.bodyA.node, enemyNode != nil { // I test if there's a node attached to the shootNode but it's supposed never to return false
let enemySKNode = enemyNode as? SKSpriteNode
let shootSKNode = shootNode as? SKSpriteNode
// code
}
}
}
}
// The code with error
func didBegin(_ contact: SKPhysicsContact) {
if (contact.bodyA.categoryBitMask == enemyCategory) && (contact.bodyB.categoryBitMask == shootCategory){
let shootNode = contact.bodyB.node!
let enemyNode = contact.bodyA.node! // The error occurs here : "fatal error: unexpectedly found nil while unwrapping an Optional value"
let enemySKNode = enemyNode as? SKSpriteNode
let shootSKNode = shootNode as? SKSpriteNode
}
}
私はSOに、より良い検索し、学ぶために時間を割いてお勧めします他の窮地を抱えていた、あなたはそのように多くを学ぶでしょう。 https://stackoverflow.com/questions/36655903/unexpectedly-found-nil-skspritenode、https://stackoverflow.com/questions/31057866/when-projectile-hits-two-monsters-the-didbegincontact-method-crashes- i-know-w、https://stackoverflow.com/questions/30030784/hit-fatal-error-unexpectedly-found-nil-while-unwrapping-an-optional-value-lldb、https://stackoverflow.com/質問/ 34188183/why-my-node-calls-didbegin連絡方法 - その場にいないとき – Knight0fDragon
[ノードが連絡したときにエラーを受け取る](https://stackoverflow.com/questions)の可能な複製/ 44895717 /受信中ノード間連絡時エラー) – Knight0fDragon
この質問にも解決策を読むことをお勧めします。通常、これはオプションの '?'変数に 'nil'の値を代入することと関係しています。あなたの変数をチェックしたり、コードにブレークポイントを追加して' nil'値がどこから来るかを調べます。 https://stackoverflow.com/questions/32170456/what-does-fatal-error-unexpectedly-found-nil-while-unwrapping-an-optional-valu?rq=1 – KSigWyatt