私は繰り返し生成されたSKSpriteNodeを持っています。私は乱数ジェネレータを作成し、その戻り値を別のスプライトイメージに関連付けることを試みました。ただし、動作しません。数値はランダムに生成されますが、 "2"が返されてもSKSpriteNodeは "Fire Barrel 1"として描画されます。SKSpriteNodeは乱数配列では機能しません
class GameScene: SKScene {
var firstObstacle = SKSpriteNode()
var player = SKSpriteNode()
var randomValue = Int()
override func didMove(to view: SKView) {
createPlayer()
let delay = SKAction.wait(forDuration: 3)
let repeatingAction = SKAction.run(repeatingSequence)
let sequence = SKAction.sequence([ delay, repeatingAction ])
run(SKAction.repeatForever(sequence))
}
func randomSelector() {
let array = [0, 1, 2, 3]
let randomValue = Int(arc4random_uniform(UInt32(array.count)))
print(array[randomValue])
}
func createPlayer() {
player = SKSpriteNode(imageNamed: "Player")
player.setScale(0.4)
player.position = CGPoint(x: -player.size.width, y: 0)
player.zPosition = 1
addChild(player)
}
func createObstacle() {
if randomValue == 2 {
firstObstacle = SKSpriteNode(imageNamed: "Fire Barrel 2")
}
else {
firstObstacle = SKSpriteNode(imageNamed: "Fire Barrel 1")
}
firstObstacle.position = CGPoint(x: self.frame.width/2, y: -self.frame.height/2 + firstObstacle.size.height/2)
firstObstacle.zPosition = 1
addChild(firstObstacle)
}
func repeatingSequence() {
randomSelector()
createObstacle()
let moveObstacle = SKAction.moveBy(x: -self.frame.width - firstObstacle.size.width, y: 0, duration: 5)
firstObstacle.run(moveObstacle)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
}
override func update(_ currentTime: TimeInterval) {
}
}
は、これをありがとう働く非常に明確な指示と説明、非常に感謝します。 –