前提・実現したいこと
switch文のcase2だけをタップした時に取り出したいのですが
うまく取り出す方法がわかりません。
アドバイスいただけると助かります。
発生している問題
取り出し方がわからない。
該当のソースコード
import SpriteKit class GameScene: SKScene, SKPhysicsContactDelegate { var sprite = SKShapeNode() var i = 0 override func didMove(to view: SKView) { } func 四角形(){ for i in 1...4 { let sprite = SKShapeNode(rectOf: CGSize(width: 50, height: 50)) switch i { case 1: sprite.name = "green" sprite.fillColor = .green sprite.position = CGPoint(x: size.width*0.2, y: size.height*0.5) case 2: sprite.name = "blue" sprite.fillColor = .blue sprite.position = CGPoint(x: size.width*0.4, y: size.height*0.5) case 3: sprite.name = "yellow" sprite.fillColor = .yellow sprite.position = CGPoint(x: size.width*0.6, y: size.height*0.5) case 4: sprite.name = "red" sprite.fillColor = .red sprite.position = CGPoint(x: size.width*0.8, y: size.height*0.5) default: return } addChild(sprite) self.sprite = sprite self.i = i } } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { //グリーン・ブルー・イエロー・レッド すべてが追加される。 // 四角形() //switch文から「case2 ブルー」だけを追加したい。 } }
試したこと
let Node = childNode(withName: "blue")
などで指定して追加などできないか試しましたが期待した動作になりませんでした。
「case2だけを取り出す」の意味がよく分からないのですが、四角形() を呼ぶと四角形が4つ作られてしまうけど、そのうち一つだけを作りたいってことでしょうか? また、オブジェクトを作ることと、すでに存在するオブジェクトにアクセスすることの区別がついてないような気もしますね…。
回答ありがとうございます。
>四角形() を呼ぶと四角形が4つ作られてしまうけど、そのうち一つだけを作りたいってことでしょうか?
その通りです。
let sprite = SKShapeNode(rectOf: CGSize(width: 50, height: 50))
sprite.fillColor = .blue
sprite.position = CGPoint(x: size.width*0.4, y: size.height*0.5)
addChild(sprite)
を
override func didMove(to view: SKView) {
}
内に記載するだけで事足りることなのですが100個のspriteを作りほぼおなじ記載の行が増えてしまう為
冗長にならない記載としたいのですができない状況です。
>オブジェクトを作ることと、すでに存在するオブジェクトにアクセスすることの区別がついてない
この部分が理解できていないと思います。
私のfunc 〜の記載の場所ではまだspriteは存在していないのではないか?
と思っているのですが考えが間違っているのでしょうか?
回答2件
あなたの回答
tips
プレビュー