x方向に複数のノードを生成し、それをy方向に単位として生成しようとしています。私はx方向にノードを生成しました。私は、x方向に移動するノードを含む親ノードを作成し、y内の親ノードを移動しようとしました。 AppDelegateで「Thread 1:Signal SIGABRT」を取得し続けます。これは正しいアプローチですか?ここでスレッド1:シグナルSIGABRTスプライトキット
は、私がこれまで持っているものだ:ロングコード用
func addCloud() {
var i = arc4random_uniform(2)
// RandomCloud
Cloud = SKSpriteNode(imageNamed: "Cloud\(i)")
// Position
Cloud.size = CGSize(width: self.size.width/3.5, height: self.size.height/12)
Cloud.position = CGPointMake(self.frame.size.width*0.1 , self.frame.size.height*0.65)
var radius = CGFloat(Cloud.size.width/2)
Cloud.physicsBody = SKPhysicsBody(circleOfRadius: radius)
Cloud.physicsBody?.categoryBitMask = PhysicsCategory.Cloud
Cloud.physicsBody?.collisionBitMask = PhysicsCategory.character
Cloud.physicsBody?.contactTestBitMask = PhysicsCategory.character
Cloud.physicsBody?.dynamic = false
Cloud.physicsBody?.affectedByGravity = false
Cloud.zPosition = 4
allCloud.addChild(Cloud)
Cloud.runAction(move) }
func add1(){
var i = arc4random_uniform(2)
Cloud1 = SKSpriteNode(imageNamed: "Cloud\(i)")
Cloud1.position = CGPointMake(self.frame.size.width*0.5 , self.frame.size.height*0.65)
Cloud1.size = CGSize(width: self.size.width/3.5, height: self.size.height/12)
Cloud1.zPosition = 4
var radius = CGFloat(Cloud1.size.width/2)
Cloud1.physicsBody = SKPhysicsBody(circleOfRadius: radius)
Cloud1.physicsBody?.categoryBitMask = PhysicsCategory.Cloud
Cloud1.physicsBody?.collisionBitMask = PhysicsCategory.character
Cloud1.physicsBody?.contactTestBitMask = PhysicsCategory.character
Cloud1.physicsBody?.dynamic = false
Cloud1.physicsBody?.affectedByGravity = false
allCloud.addChild(Cloud1)
Cloud1.runAction(move1)}
func add2(){
var i = arc4random_uniform(2)
Cloud2 = SKSpriteNode(imageNamed: "Cloud\(i)")
Cloud2.position = CGPointMake(self.frame.size.width*0.9 , self.frame.size.height*0.65)
Cloud2.size = CGSize(width: self.size.width/3.5, height: self.size.height/12)
Cloud2.zPosition = 4
var radius = CGFloat(Cloud2.size.width/2)
Cloud2.physicsBody = SKPhysicsBody(circleOfRadius: radius)
Cloud2.physicsBody?.categoryBitMask = PhysicsCategory.Cloud
Cloud2.physicsBody?.collisionBitMask = PhysicsCategory.character
Cloud2.physicsBody?.contactTestBitMask = PhysicsCategory.character
Cloud2.physicsBody?.dynamic = false
Cloud2.physicsBody?.affectedByGravity = false
allCloud.addChild(Cloud2)
Cloud2.runAction(move2)
}
func add3() {
var i = arc4random_uniform(2)
Cloud3 = SKSpriteNode(imageNamed: "Cloud\(i)")
Cloud3.position = CGPointMake(self.frame.size.width + Cloud3.size.width/2 , self.frame.size.height*0.65)
Cloud3.size = CGSize(width: self.size.width/3.5, height: self.size.height/12)
Cloud3.zPosition = 4
var radius = CGFloat(Cloud3.size.width/2)
Cloud3.physicsBody = SKPhysicsBody(circleOfRadius: radius)
Cloud3.physicsBody?.categoryBitMask = PhysicsCategory.Cloud
Cloud3.physicsBody?.collisionBitMask = PhysicsCategory.character
Cloud3.physicsBody?.contactTestBitMask = PhysicsCategory.character
Cloud3.physicsBody?.dynamic = false
Cloud3.physicsBody?.affectedByGravity = false
allCloud.addChild(Cloud3)
Cloud3.runAction(move3)
}
func add4() {
var i = arc4random_uniform(2)
Cloud4 = SKSpriteNode(imageNamed: "Cloud\(i)")
Cloud4.position = CGPointMake(self.frame.size.width + Cloud4.size.width/2 , self.frame.size.height*0.65)
Cloud4.size = CGSize(width: self.size.width/3.5, height: self.size.height/12)
Cloud4.zPosition = 4
var radius = CGFloat(Cloud4.size.width/2)
Cloud4.physicsBody = SKPhysicsBody(circleOfRadius: radius)
Cloud4.physicsBody?.categoryBitMask = PhysicsCategory.Cloud
Cloud4.physicsBody?.collisionBitMask = PhysicsCategory.character
Cloud4.physicsBody?.contactTestBitMask = PhysicsCategory.character
Cloud4.physicsBody?.dynamic = false
Cloud4.physicsBody?.affectedByGravity = false
allCloud.addChild(Cloud4)
Cloud4.runAction(move4)
}
func add5() {
var i = arc4random_uniform(2)
Cloud5 = SKSpriteNode(imageNamed: "Cloud\(i)")
Cloud5.position = CGPointMake(self.frame.size.width + Cloud5.size.width/2 , self.frame.size.height*0.65)
Cloud5.size = CGSize(width: self.size.width/3.5, height: self.size.height/12)
Cloud5.zPosition = 4
var radius = CGFloat(Cloud5.size.width/2)
Cloud5.physicsBody = SKPhysicsBody(circleOfRadius: radius)
Cloud5.physicsBody?.categoryBitMask = PhysicsCategory.Cloud
Cloud5.physicsBody?.collisionBitMask = PhysicsCategory.character
Cloud5.physicsBody?.contactTestBitMask = PhysicsCategory.character
Cloud5.physicsBody?.dynamic = false
Cloud5.physicsBody?.affectedByGravity = false
allCloud.addChild(Cloud5)
Cloud5.runAction(move5)
}
func add6() {
var i = arc4random_uniform(2)
Cloud6 = SKSpriteNode(imageNamed: "Cloud\(i)")
Cloud6.position = CGPointMake(self.frame.size.width + Cloud6.size.width/2 , self.frame.size.height*0.65)
Cloud6.size = CGSize(width: self.size.width/3.5, height: self.size.height/12)
Cloud6.zPosition = 4
var radius = CGFloat(Cloud6.size.width/2)
Cloud6.physicsBody = SKPhysicsBody(circleOfRadius: radius)
Cloud6.physicsBody?.categoryBitMask = PhysicsCategory.Cloud
Cloud6.physicsBody?.collisionBitMask = PhysicsCategory.character
Cloud6.physicsBody?.contactTestBitMask = PhysicsCategory.character
Cloud6.physicsBody?.dynamic = false
Cloud6.physicsBody?.affectedByGravity = false
Cloud6.runAction(move6)
allCloud.addChild(Cloud6)
}
func addall(){
self.addChild(allCloud)
allCloud.runAction(move7)
}
func spawnCloudX() {
var remove = SKAction.runBlock({self.allCloud.removeFromParent()})
var distance = CGFloat(self.frame.size.width + Cloud.size.width/2)
var distance1 = CGFloat(self.frame.size.width + Cloud1.size.width/2)
var distance2 = CGFloat(self.frame.size.width + Cloud2.size.width/2)
var distance3 = CGFloat(self.frame.size.width + Cloud3.size.width/2)
var distance4 = CGFloat(self.frame.size.width + Cloud4.size.width/2)
var distance5 = CGFloat(self.frame.size.width + Cloud5.size.width/2)
var distance6 = CGFloat(self.frame.size.width + Cloud6.size.width/2)
var add:SKAction = SKAction.runBlock({
() in
self.addCloud()})
var add1:SKAction = SKAction.runBlock({
() in
self.add1()})
var add2:SKAction = SKAction.runBlock({
() in
self.add2()})
var add3:SKAction = SKAction.runBlock({
() in
self.add3()})
var add4:SKAction = SKAction.runBlock({
() in
self.add4()})
var add5:SKAction = SKAction.runBlock({
() in
self.add5()})
var add6:SKAction = SKAction.runBlock({
() in
self.add6})
var removea = SKAction.removeFromParent()
var movex = SKAction.moveToX(-distance, duration: 5)
var movex1 = SKAction.moveToX(-distance1, duration: 6.5)
var movex2 = SKAction.moveToX(-distance2, duration: 8)
var movex3 = SKAction.moveToX(-distance3, duration: 10)
var movex4 = SKAction.moveToX(-distance4, duration: 10)
var movex5 = SKAction.moveToX(-distance5, duration: 10)
var movex6 = SKAction.moveToX(-distance6, duration: 10)
var delay = SKAction.waitForDuration(2)
var spawn = SKAction.sequence([add3,delay,add4,delay,add5,delay,add6])
self.runAction(add)
self.runAction(add1)
self.runAction(add2)
var spawnforever = SKAction.repeatActionForever(spawn)
self.runAction(spawnforever)
move = SKAction.sequence([movex,removea])
move1 = SKAction.sequence([movex1,removea])
move2 = SKAction.sequence([movex2,removea])
move3 = SKAction.sequence([movex3,removea])
move4 = SKAction.sequence([movex4,removea])
move5 = SKAction.sequence([movex5,removea])
move6 = SKAction.sequence([movex6,removea])
var distance7 = CGFloat(self.frame.size.height + allCloud.size.height/2)
var movey7 = SKAction.moveToY(distance7, duration: 5)
var addall: SKAction = SKAction.runBlock({
() in
self.addall() })
var delayY = SKAction.waitForDuration(1)
var spawnY = SKAction.sequence([addall,delayY])
var spawnYforever = SKAction.repeatAction(spawnY, count: 2)
move7 = SKAction.sequence([movey7,removea])
self.runAction(spawnYforever)
}
は申し訳ありません。 ありがとう、
私はあなたのコードを1時間見てきましたが、これが何であるかはまだ分かりません。あなたのコードフォームを200行以上70行に掃除しましたが、余りにも多くの冗長性が残っています。あなたが画面上で何をしたいかをプレーンな英語で説明してください。 –
ご迷惑をおかけして申し訳ありません。私の目標は、x軸方向に一定の割合で移動する別々のノードを作成することです。その後、y軸のノードを一定の割合で移動させます。したがってx軸とy軸を別々に産み出します。私は雲が左に動いて上がっているように見たいと思う。私はこれが理にかなってほしい。ありがとう。 – Yraw
このコードは、あなたが達成しようとしているもののために信じられないほど複雑なものですが、それは大きな過度のものです。 –