downvotes로 십자가에 못 박히기 전에 나는 이것에 대한 연구를했으며 아직이 오류가 왜 발생하는지 이해할 수 없다고 말합니다.선택적 unwrapping 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 함수를 청소 해 주셔서 감사합니다. 다소 혼란스럽고 메서드가 무리를 없애줍니다. 정말 고마워! –