嗨我有一个行动序列,永远运行,在侧面滚动游戏中生成障碍。但不是从我的纹理生成随机图片和高度,它保持它第一次运行SKActions时产生的相同的那些...SKAction不按预期工作
有人可以解决这个问题吗?我尽量不使用
NSTimer.scheduledTimerWithTimeInterval(4, target: self, selector: Selector("setUpMountains"), userInfo: nil, repeats: true)
,因为它降低我的FPS出于某种原因
func setUpMountains() {
let gapHeight = user.size.height * 3
var movementAmount = arc4random() % UInt32(self.frame.size.height/3.0)
var randomNumber = arc4random() % 3
if randomNumber == 0 {
mountainTexture = SKTexture(imageNamed:"RedMountain.png")
} else if randomNumber == 1 {
mountainTexture = SKTexture(imageNamed:"OrangeMountain.png")
} else {
mountainTexture = SKTexture(imageNamed:"BeigeMountain.png")
}
var randomMountain = SKSpriteNode(texture: mountainTexture)
randomMountain.position = CGPointMake(CGRectGetMidX(self.frame) + self.frame.width, CGRectGetMidY(self.frame) - gapHeight - CGFloat(movementAmount))
randomMountain.zPosition = 8
randomMountain.physicsBody = SKPhysicsBody(texture: mountainTexture, size: mountainTexture.size())
randomMountain.physicsBody?.dynamic = false
// randomMountain.physicsBody?.categoryBitMask = objectCategory
movingObjects.addChild(randomMountain)
//spawning mountains
var distanceToMove = self.frame.size.width + mountainTexture.size().width
var moveMountain = SKAction.moveByX(-distanceToMove, y: 0, duration: NSTimeInterval (distanceToMove * 0.01))
var replaceMountain = SKAction.moveByX(distanceToMove, y: 0, duration: 0)
//var removeMountain = SKAction.removeFromParent()
var moveAndRemoveMountain = SKAction.repeatActionForever(SKAction.sequence([moveMountain, replaceMountain]))
randomMountain.runAction(moveAndRemoveMountain)
}
你为什么要使用一个NSTimer?它不适合sprite套件。改用waitForDuration来使用SKAction? – rakeshbs 2015-02-11 01:43:14
,你能解释一下你在代码中试图做什么吗? – rakeshbs 2015-02-11 01:45:16
嗨@rakeshbs我想每x秒调用一次这个函数来产生新的随机大小障碍物。如果我使用repeatActionForever,那么它将只使用第一次生成的相同randomMountain,而不是重新生成新的。你能告诉我如何.waitForDuration会改变? – 2015-02-11 02:13:29