Я пытаюсь включить анимацию из 5 кадров в мою существующую функцию появления для spritenode. В настоящее время ворон перемещается по экрану справа налево, я хотел бы оживить его, но независимо от того, что я пытаюсь, я продолжаю генерировать ошибки Thread 1.Анимация изображения с помощью функции spawn
Прокомментировав некоторые фрагменты кода, я могу либо анимировать птицу в статическом положении на экране, либо переместить птицу справа налево, но не анимировать (комментировать outple func).
Я знаю, что приведенный ниже код не будет работать в текущей форме, но это все, с чем я работаю, надеюсь, кто-то может мне помочь.
Ниже весь мой код, я пытаюсь слот вместе ...
Спасибо,
//did move to view
var crowTexture1 = SKTexture(imageNamed: "crow1")
crowTexture1.filteringMode = SKTextureFilteringMode.Nearest
var crowTexture2 = SKTexture(imageNamed: "crow2")
crowTexture2.filteringMode = SKTextureFilteringMode.Nearest
var crowTexture3 = SKTexture(imageNamed: "crow3")
crowTexture3.filteringMode = SKTextureFilteringMode.Nearest
var crowTexture4 = SKTexture(imageNamed: "crow4")
crowTexture4.filteringMode = SKTextureFilteringMode.Nearest
var crowTexture5 = SKTexture(imageNamed: "crow5")
crowTexture5.filteringMode = SKTextureFilteringMode.Nearest
var animFly = SKAction.animateWithTextures([crowTexture1, crowTexture2, crowTexture3, crowTexture4, crowTexture5], timePerFrame: 0.1)
var fly = SKAction.repeatActionForever(animFly)
var distanceToMoveBird = CGFloat(self.frame.size.width + 2 * crowTexture1.size().width);
var moveBirds = SKAction.moveByX(-distanceToMoveBird, y:0, duration:NSTimeInterval(0.0040 * distanceToMoveBird));
var removeBirds = SKAction.removeFromParent();
moveAndRemoveBirds = SKAction.sequence([moveBirds, removeBirds,]);
var spawnBirds = SKAction.runBlock({() in self.spawnBird()})
var delayBirds = SKAction.waitForDuration(NSTimeInterval(4.0))
var spawnThenDelayBirds = SKAction.sequence([spawnBirds, delayBirds])
var spawnThenDelayForeverBirds = SKAction.repeatActionForever(spawnThenDelayBirds)
self.runAction(spawnThenDelayForeverBirds)
//spawning function
func spawnBird() {
var bird = SKSpriteNode()
bird.position = CGPointMake(self.frame.size.width + crowTexture1.size().width * 2, 0);
var height = UInt32(self.frame.size.height/1)
var height_max = UInt32(500)
var height_min = UInt32(500) //300
var y = arc4random_uniform(height_max - height_min + 1) + height_min;
var bird1 = SKSpriteNode(texture: crowTexture1)
bird1.position = CGPointMake(0.0, CGFloat(y))
bird1.physicsBody = SKPhysicsBody(rectangleOfSize: bird1.size)
bird1.physicsBody?.dynamic = false
bird1.physicsBody?.categoryBitMask = crowCategory
bird1.physicsBody?.collisionBitMask = catCategory | scoreCategory
bird1.physicsBody?.contactTestBitMask = 0
bird.addChild(bird1)
bird.runAction(moveAndRemoveBirds)
birds.addChild(bird)
}
спасибо за ваш комментарий, я играл с вашим кодом, и мне нравится концепция, я не могу интегрировать его с моим кодом, где одна птица входит на экран справа налево в определенных пределах высоты , Птица должна пересечь весь экран, поскольку это триггер, увеличивающий счет, как только птица попадает в контакт в левой части экрана ... Если вы или кто-либо еще узнаете, как достичь этого, это то, что я и я был бы очень благодарен. –