に新しいiPhoneを実行すると、これは「didBeginContact」方式でのコードの場合:迅速なエラーシミュレータ
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask
{
if contact.bodyA.node!.name == "0" && contact.bodyB.node!.name == "1000003"{
contact.bodyB.node!.removeFromParent()
}
if contact.bodyA.node!.name == "0" && contact.bodyB.node!.name == "1000004"{
contact.bodyB.node!.removeFromParent()
}
}
else
{
if contact.bodyB.node!.name == "0" && contact.bodyA.node!.name == "1000003"{
contact.bodyA.node!.removeFromParent()
}
if contact.bodyB.node!.name == "0" && contact.bodyA.node!.name == "1000004"{
contact.bodyA.node!.removeFromParent()
}
}
それは「iPhone 4S」と「iPhone 5」のシミュレーションで動作し、上位バージョンで失敗このエラーメッセージで:
0123:が、これは、それが赤いマークラインである「致命的なエラーが (lldb)任意の値をアンラップしながら、予想外にゼロを見つけました」
知っていい: 名「1000004」を持つオブジェクトは、私が「GameScene」クラスで作成しSKSpriteNodeです:このオブジェクトのlet TestPixel = SKSpriteNode(imageNamed: "6")
プロパティは、「touchesBegan」方法です。
TestPixel.name = "1000004"
TestPixel.anchorPoint = CGPointMake(0.5, 0.5)
TestPixel.userInteractionEnabled = false
TestPixel.zPosition = 1000003
TestPixel.size = CGSizeMake(1, 1)
TestPixel.position = CGPointMake(positionInScene.x, positionInScene.y)
TestPixel.physicsBody = SKPhysicsBody(texture: SKTexture(imageNamed: "6"), size: TestPixel.size)
TestPixel.physicsBody?.categoryBitMask = ClickOnCategory
TestPixel.physicsBody?.contactTestBitMask = BuildingsCategory
TestPixel.physicsBody?.affectedByGravity = false
TestPixel.physicsBody?.dynamic = true
TestPixel.physicsBody?.collisionBitMask = 0
addChild(TestPixel)
エラーこのSpriteNode(名称:「1000004」)は場合に発生する:私は「didMoveToView」方法で作成した別のSpriteNodeを打つ、ここでのコードは次のとおりです。
func addBG(){
let background = SKSpriteNode(imageNamed: "0")
background.name = "0"
background.anchorPoint = CGPointMake(0.5, 0.5)
background.zPosition = 1
background.position = CGPointMake(CGRectGetMinX(self.frame)+self.frame.width/4,CGRectGetMaxY(self.frame)-self.frame.height/4)
background.physicsBody = SKPhysicsBody(texture: SKTexture(imageNamed: "0"), size: background.size)
background.physicsBody?.categoryBitMask = BuildingsCategory
background.physicsBody?.affectedByGravity = false
background.physicsBody?.dynamic = true
background.physicsBody?.collisionBitMask = 0
self.addChild(background)
}
addBG()
ここ はそのためのコードです
と "didMoveToView" もある中:
:physicsWorld.contactDelegate = self
categoryBitMask "GameScene" クラスは、次のように設定されている中3210
class GameScene: SKScene, SKPhysicsContactDelegate{
let BuildingsCategory : UInt32 = 0x1 << 1
let ClickOnCategory : UInt32 = 0x1 << 2
私はそれが「iPhone 4S」& &「iPhone 5」とシミュレータで動作言ったように、[OK]そうではなく、より高いバージョンでは...任意のアイデアなぜですか? おかげ
ありがとうございました!うん、 "else if" ..それも心に浮かんだけど、なぜ私はそれを試していないのか分からない。あなたのやり方を試し、didBeginContactメソッドのノードを削除しないでください。私はまだiPhoneのバージョンが低ければ問題なく動作するのだろうかと疑問に思っています。 – frankibanki
コリジョンボディのオーダーは厳しくないので、下のバージョンでは、 – Knight0fDragon