やりたいこと
Spriteの動く方向を毎回ランダムに変えたい。
SKActionだけで完結したい。
やり方
以下のようにSKAction.customAction()を使ったらうまくいった。
繰り返しはrepeatForeverを使いたかったけど、まだよくわからんのでdurationで。
let spriteNode = SKSpriteNode(imageNamed: "イメージ名")
let furafura = SKAction.customAction(withDuration: 10.0) { (node, elapsedTime) in
let x = CGFloat(arc4random_uniform(50)) - 25
let y = CGFloat(arc4random_uniform(50)) - 25
print("x \(x), y \(y)")
node.run(SKAction.moveBy(x: x, y: y, duration: 1.0))
}
spriteNode.run(furafura)
うまくいかなかったやり方
SKAction.repeatForever()と組み合わせ、SKAction.run{}を使ってクロージャの中に同様のコードを書いたら、最初に通った時に発生した乱数の値で固定されてしまい、一方向にしか動かなかった。
そもそもrepeatForever()の書くところが難しく、変な書き方するとXcodeおよびiPhone実機でアプリが終了できなくなり、iPhoneがブラックアウト、強制再起動を余儀なくされたりとおっかないことになった。なんじゃこりゃ。
詳しくはこちら。
0 件のコメント:
コメントを投稿