【发布时间】:2016-01-13 04:04:53
【问题描述】:
到目前为止,在我的代码中,有一个碰撞检测方法可以检测某个精灵是否撞到了障碍物,还有一个我已经实现的动作序列。在动作序列中,我希望有一个等待期,在此期间动作停止,直到一定数量的精灵落地(屏障)。到目前为止,我已经得到了旋转和立方体下降以及主要立方体精灵,但我试图解决的问题是让立方体停止旋转,直到所有立方体都撞到障碍物。基本上停止一个动作,直到一定数量的射弹物体与某物发生碰撞,然后继续该动作。此外,立方体的生成也是动作序列的一部分,因此请了解如何在我的代码中不造成混乱。
请参考以下代码。
class GameScene:SKScene {
var wait:NSTimeInterval = 0
var blocks = 0
var cube = SKSpriteNode(imageNamed: "cube")
func didBeginContact(contact: SKPhysicsContact) {
var firstBody = SKPhysicsBody()
var secondBody = SKPhysicsBody()
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask {
firstBody = contact.bodyA
secondBody = contact.bodyB
} else{
firstBody = contact.bodyB
secondBody = contact.bodyA
}
if firstBody.categoryBitMask == barrierCategory && secondBody.categoryBitMask == objectCategory {
secondBody.node?.removeFromParent()
counterTest++
print("hello")
}
if (firstBody.categoryBitMask == blockCategory && secondBody.categoryBitMask == barrierCategory) {
blocks++
}
}
override func didMoveToView(view: SKView) {
NSLog("Start") //Using NSLog just to print the current time
NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(interval!), target: self, selector: Selector("spawnBlocks"), userInfo: nil, repeats: false)
cube.runAction(recursive())
}
}
func recursive(){
let recursive = SKAction.sequence([
//SHOULD SPAWN ABOUT 10 BLOCKS
SKAction.spawnBlocks,
//WAIT UNTIL THE COLLISION HAS DETECTED 10 BLOCKS HIT THE BARRIER
SKAction.waitForDuration(waitTime),
//CONTINUE THE ROTATION OF THE CUBE SPRITE
SKAction.rotate,
SKAction.runBlock({[unowned self] in NSLog("Block executed"); self.recursive()})
])
runAction(recursive, withKey: "aKey")
}
}
【问题讨论】:
标签: sprite-kit swift2