基本的なSwift 3とSpriteKitを実践するためのテストシーンを作成しました。より複雑な目標に移る前に、基本を理解して学びたいと思っています。SKLabelNodeが移動します。しかし、アクションは繰り返されません。
ここでは、作成されたSKLabelNodeがあり、次に左に移動します。私はアクションを繰り返すためのシーケンスを作成しましたが、動作しません。それがどこで失敗するのか理解してもらえますか? NodeCountはノードが1つしかないことに注意します。
import SpriteKit
import GameplayKit
class GameScene: SKScene {
var testShape = SKLabelNode()
override func didMove(to view: SKView) {
func createShape() {
testShape = SKLabelNode(text: "TEST")
testShape.position = CGPoint(x: 0.5, y: 0.5)
testShape.zPosition = 1
addChild(testShape)
}
let moveTestShape = SKAction.moveBy(x: -500, y: 0, duration: 5)
func repeater() {
createShape()
testShape.run(moveTestShape)
}
let delay = SKAction.wait(forDuration: 2)
let repeatingAction = SKAction(repeater())
let sequence = SKAction.sequence([ delay, repeatingAction ])
run(SKAction.repeatForever(sequence))
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
}
override func update(_ currentTime: TimeInterval) {
}
}
に役立ちますか? 'let repetAction = SKAction(repeater())'とにかく、関数が内部関数であるため、 'SKAction.run(repeater)'を使いたいと思うでしょう。 – Knight0fDragon