【发布时间】:2014-09-27 08:28:30
【问题描述】:
我想从屏幕上移除所有对象。目前我使用带有“障碍”的接触检测。
我初始化屏幕周围的障碍,当 SpriteNode 与其中一个接触时,它将从场景中移除。但是这种方法效果不佳,会使我的游戏崩溃。
你知道是否有一种简单的方法可以将所有对象移出屏幕吗?
这是我的带有障碍的代码:
// declarations
var barrierLeft:SKSpriteNode = SKSpriteNode()
var barrierRight:SKSpriteNode = SKSpriteNode()
var barrierTop:SKSpriteNode = SKSpriteNode()
// In didMoveToView method
barrierLeft.size = CGSizeMake(1, self.frame.height*2)
barrierLeft.physicsBody = SKPhysicsBody (rectangleOfSize: barrierLeft.size)
barrierRight.position = CGPointMake(0, 0)
barrierLeft.physicsBody?.dynamic = false
barrierLeft.physicsBody?.categoryBitMask = barrierCategory
barrierLeft.physicsBody?.contactTestBitMask = flechetteCategory
addChild(barrierLeft)
barrierRight.size = CGSizeMake(1, self.frame.height*2)
barrierRight.physicsBody = SKPhysicsBody (rectangleOfSize: barrierLeft.size)
barrierRight.position = CGPointMake(self.size.width+10, 0)
barrierRight.physicsBody?.dynamic = false
barrierRight.physicsBody?.categoryBitMask = barrierCategory
barrierRight.physicsBody?.contactTestBitMask = flechetteCategory
addChild(barrierRight)
//
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 & flechetteCategory) != 0 && (secondBody.categoryBitMask & barrierCategory) != 0)
{
flecheDidCollideWithbarrier(firstBody.node as SKSpriteNode, barrier: secondBody.node as SKSpriteNode)
}
//
func flecheDidCollideWithbarrier (fleche: SKSpriteNode, barrier: SKSpriteNode)
{
println("barrière")
counterGainTime = 0
fleche.removeFromParent()
}
感谢您的帮助!
【问题讨论】:
标签: ios iphone swift sprite-kit