【发布时间】:2014-10-26 02:06:07
【问题描述】:
我试图让我的两个精灵节点从屏幕顶部下降到屏幕底部,回到它们的起始位置然后再次下降,但是在它们达到大约 3/4 的那一刻在屏幕下方的过程中,它们会稍微“传送”到屏幕上方,然后从那里继续下落,然后再“传送”回来一点,最终它们按预期从屏幕底部掉落。这是我所拥有的:
override func didMoveToView(view: SKView) {
bounds = UIScreen.mainScreen().bounds
height = bounds.size.height
initFruit()
fallTimer = NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: "fall_timer", userInfo: nil, repeats: true)
}
func initFruit(){
fruit1 = SKSpriteNode(imageNamed: "Fruit_Apple")
fruit2 = SKSpriteNode(imageNamed: "Fruit_Banana")
fruit1.xScale = 2.5
fruit1.yScale = 2.5
fruit2.xScale = 2.5
fruit2.yScale = 2.5
//position fruit off the top of the screen, at separate x coordinates
fruit1.position = CGPoint(x: (size.width / 3), y: height + fruit1.frame.height)
fruit2.position = CGPoint(x: (size.width / 3) * 2, y: height + fruit1.frame.height)
addChild(fruit1)
addChild(fruit2)
}
func fall_timer() {
var fallDuration: NSTimeInterval
var moveActionDown: SKAction
//If fruit are at the bottom, move them back up to the top
if fruit1.position.y == -100 {
fruit1.position.y = CGFloat(height + fruit1.frame.height)
fruit2.position.y = CGFloat(height + fruit1.frame.height)
}
if fruit3.position.y == -100 {
fruit3.position.y = CGFloat(height + fruit1.frame.height)
fruit4.position.y = CGFloat(height + fruit1.frame.height)
}
//Check if fruit are at top, ready to fall again
if fruit1.position.y == height + fruit1.frame.height {
fallDuration = NSTimeInterval(arc4random_uniform(6) + 2)
moveActionDown = SKAction.moveToY(-100.0, duration: fallDuration)
fruit1.runAction(moveActionDown)
}
if fruit2.position.y == height + fruit1.frame.height {
fallDuration = NSTimeInterval(arc4random_uniform(6) + 2)
moveActionDown = SKAction.moveToY(-100.0, duration: fallDuration)
fruit2.runAction(moveActionDown)
}
}
我一辈子都想不通为什么会发生这种情况。它只在第一个秋天发生。第一次落下后,果实完美落下并如预期般回到顶部。
【问题讨论】:
标签: swift sprite-kit skaction